来源:中国一卡通网 作者:王景存 ,苏 鹏 发布时间:2010-05-20 14:34:34 字体:[大 中 小]
摘 要:传统的智能卡测试平台需要人工干预,严重影响测试效率,因此难以满足智能卡行业的测试需求。针对这个问题,在此提出一种新的解决方案。该方案以PC/SC为编程接口,实现了测试平台与智能卡的通信,利用扩展的TCL解释器定义了一种新的测试语言ATP,它包含TCL内置命令和应用程序的相关命令。测试人员可以利用ATP语言编写测试用例,在此平台上完成对智能卡的自动化测试。该方案已经得到实际验证。
2.2 通信软件程序
通信软件程序遵循PC/SC规范 。PC/SC规范是由PC/SC工作组提出的。PC/SC工作组是一个主要由智能卡厂商和计算机厂商组成的委员会,主要成员有微软、苹果、雅斯拓、金普斯、英飞凌、菲利普等。PC/SC规范是一个基于Windows平台的标准用户接口(API)。它独立于硬件设备,使得应用程序的开发人员不必考虑由于硬件改变而引起的应用程序变更,从而降低了软件开发成本。
PC/SC规范包含大量Scard为前缀的API,可以在winscard.h中找到其原型。应用程序需要包含win—scard.1ib,所有函数的正常返回值都是SCARD—S—SUCCESS,在这些函数中常用的只有几个。与智能卡的访问流程如下:
(1)初始化函数中调用SCardEstablishContext,建立资源管理器的上下文,获得设备的连接句柄,若返回SCARD— S— SUCCESS,则调用成功;调用ScardLis—tReaders获得系统中安装的读卡器列表,调用成功则获取联机的读卡器名字。
(2)在响应函数中调用ScardConnect与卡片建立连接,此时能与卡片通信。
(3)与卡片连接后通过调用SCardTransmit来发送命令,得到由卡片返回的数据。
(4)卡片处于连接状态时,可以调用SCardRecon—nect函数使卡片复位。
(5)完成了与卡片的命令发收后,调用SCardDis—connect函数断开与智能卡的连接。
项目已经实现以上功能的编程接口,而且利用类的方法进行了封装。
3 测试平台的使用
3.1 测试流程
脚本的制定还是使用人工方式,测试人员通过测试平台完成测试。自动化测试不需要人工干预,缩短了测试时间。因而测试过程采用人工测试和自动化测试相结合的方法进行。
用户可以编写测试脚本,快速发送测试命令和收集测试数据,可以单次执行或者循环执行,当满足终止条件时,脚本执行结束,生成测试报告。图5为测试流程图。
3.2 功能测试
测试平台能够以APDU为基本单元完成针对智能卡的功能测试,下面分别对其进行介绍。
3.2.1 测试基本单元
测试平台与智能卡通信的基本单元是APDUL9 。应用层以APDU为单位进行有序的数据交换,应用层交换的每一步都以命令应答对组成。APDU 的命令应答对由以下部分组成:
命令APDU 包含一个必备的四字节头(CLA,INS,P1,P2)和可选的命令体(Lc,Data,Le)。命令头为命令的编码,Lc为体内数据(data)长度,Data为发送的数据,Le为应答APDU数据字段的最大字节数。应答APDU 由可选长度体和两字节状态字SW1一SW2组成。其中,体内的字节数由命令APDU 的Le指出。Data为卡片接受命令APDU 后返回的数据。尾部状态字指出卡的处理状态。其中,61xx和9000为正常处理,6lxx的含义SW2指出仍然有效的应答字节数,9000代表正常处理。
3.2.2 单元测试
同样,智能卡内部程序也是以APDU为单位实现的,因此单元测试的对象就是APDU。发送一个APDU给智能卡,通过智能卡内部程序执行完后返回状态字,判断执行结果的正确与否。命令之间存在着相互依赖关系,因此命令之间通常要相互配合才能完成测试任务。
3.2.3 集成测试
集成测试主要是通过命令之问有序地执行完成智能卡的功能测试,根据不同的测试需要可以对测试脚本进行分类,例如FLASH 的读/写,加密模块的测试等。按照需要整理好相应的测试脚本后就可以在测试平台上运行,通过脚本与智能卡程序的互测,达到测试目的。测试平台支持自动化测试,所以可以在测试平台上不间断地执行测试脚本,测试人员不需要实时跟踪,只需要关心最后的测试结果,通过测试结果可以发现问题,解决问题。
4 结 语
该系统已经通过测试,并且得到初步验证。由于针对智能卡的测试项很多,通常需要多种测试工具的软件和硬件设备交互使用,测试人员要熟悉各种软件工具,相应地降低了工作效率。如果能将各种工具软件集成在一起,形成一个多功能的测试平台,支持多种通信接口的读卡器,支持多种脚本格式,那么这将是下一步的工作重点。
推荐文章
论坛热帖