智能卡的测试方法

文档序号:7629737阅读:289来源:国知局
专利名称:智能卡的测试方法
技术领域
本发明涉及一种数据处理方法,尤其涉及一种智能卡的测试方法。
背景技术
随着计算机技术的发展,软件的应用越来越广泛,大到金融业、工商业,小到家用电器、手机SIM卡,软件的影响无处不在。软件的功能也日益增加,造成软件的复杂度越来越高,由软件故障引发的故障也越来越多。美国空军统计F/A-18飞控系统在20,000小时的实验中,软件故障为309次,硬件故障为271次,因此可见对于软件的测试已成为一项非常重要的工作。
现有的软件功能测试方法很多是通过捕获回放机制生成脚本并执行测试。捕获的对象通常是GUI用户界面上的元素。换言之就是测试人员手工操作被测软件,完成一定的应用流程,测试工具记录这一过程,生成测试脚本,可以自动回放脚本并检查操作完成的情况。测试人员也可以编辑修改脚本来开发新的测试用例。代表性的测试工具如InterActive公司的WinRunner,以及IBM Rational的Robot。
具体到智能卡行业,当厂商生产出用户所需的智能卡后需要对智能卡进行测试,以保证智能卡能够满足用户的需求。目前的测试模式通常是测试人员根据测试需求编写测试脚本,对智能卡进行测试,但由于测试的覆盖度不够或测试人员与开发人员的习惯不同,测试通过的智能卡仍有可能在最终用户的使用现场出现问题,这无疑给厂商和用户都造成损失。特别是智能卡升级换代的时候,由于缺少有效的回归测试方法,上述问题时有发生。

发明内容
针对上述现有技术中的问题和不足,本发明的目的是提出一种智能卡的测试方法,能够提高测试的覆盖度,避免产品由于测试不足而产生故障。
为了解决上述问题,本发明提出一种智能卡的测试方法,包括(1)生成测试卡;(2)使用已有的智能卡与终端设备进行通信时,获得发送给智能卡的指令和智能卡的返回数据;(3)根据所述步骤(2)得到的指令和返回数据,生成测试例,所述测试例包括测试时发送到测试卡的输入以及测试卡的预期输出;(4)将所述输入发送到测试卡,并监测测试卡的返回数据,如果所述测试卡的返回数据与所述的预期输出相同,则测试成功,如果不相同则测试失败。
作为优选,为了扩大测试范围以确保测试的可靠性,所述测试例为多个输入及输入对应的预期输出组成的序列。
作为优选,所述步骤(1)具体为根据用户所需的智能卡的文件结构、数据结构和相关密钥,建立卡片结构,生成智能卡。
作为优选,所述步骤(2)具体为使用已有的智能卡与终端设备进行通讯,并监测智能卡与终端设备之间通信的数据流,并将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据,这样可以使测试更符合用户的使用习惯,使测试的可靠性更强。
作为优选,所述步骤(2)具体为使用已有的智能卡与终端设备进行通讯,并监测智能卡的I/O端口获得智能卡与终端设备之间通信的数据流,并将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。由于智能卡的I/O端口数据流必须符合ISO7816规范,因此能够将数据还原为发送到智能卡的指令和智能卡返回的数据。
作为优选,步骤(2)具体为使用已有的智能卡与终端设备进行通讯,并监测智能卡的I/O端口,进行周期采样获得智能卡与终端设备之间通信的数据流,并将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。
作为优选,当步骤(2)中所述的指令是需要另一步骤的输出进行计算才能获得时,所述步骤(3)中所述的输入包含一变量,该变量代替需要对另一步骤的输出计算后获得的数据;步骤(3)中所述的预期输出用一个变量代替。
作为优选,代替预期输出的变量根据测试过程中前一条指令的执行结果确定的输入变量的值确定预期输出。
作为优选,当步骤(2)中所述的指令与其前后的指令都没有关联时,步骤(3)中所述的输入为步骤(2)中所述的指令;步骤(3)中所述的预期输出为步骤(2)中所述的返回数据。
本发明提出的智能卡的测试方法,使测试更符合最终用户的使用习惯,同时能够快速生成大量测试用例,并依据测试例序列对测试卡进行测试,避免由于测试覆盖度不够而造成测试通过的升级产品在用户使用中出现问题。


图1是智能卡I/O端口传输的数据帧的格式;图2是本发明提出的智能卡的测试方法优选实施例流程图。
具体实施例方式
下面结合附图对本发明作进一步的详细描述。
本发明优选实施例流程如图所示,包括以下步骤(1)生成测试卡;(2)使用已有的智能卡与终端设备进行通信时,获得发送给智能卡的指令和智能卡的返回数据;(3)根据所述步骤(2)得到的指令和返回数据,生成测试例,所述测试例包括测试时发送到测试卡的输入以及测试卡的预期输出;(4)将所述输入发送到测试卡,并监测测试卡的返回数据,如果所述测试卡的返回数据与所述的预期输出相同,则测试成功,如果不相同则测试失败。
作为优选,所述的步骤(3)中的实施例为多个输入及输入对应的预期输出组成的序列,这样能够保证测试的覆盖范围更广,避免经过测试的卡在用户的实际使用中出现故障。
作为优选,所述步骤(1)具体为根据用户所需的智能卡的文件结构、数据结构和相关密钥,建立卡片结构,生成智能卡,这样生成的智能卡结构更符合用户的需求,生成测试卡的方式有很多种,在此不一一说明。
作为优选,所述步骤(2)具体为使用已有的智能卡与终端设备通信(例如可以到用户的使用现场),并监测智能卡与终端设备之间通信的数据流,将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回码或返回值。
作为优选,所述步骤(2)中可以通过监测智能卡的I/O端口,并进行周期采样,以获得智能卡与终端设备之间通信的数据流,并将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。智能卡对每条输入的指令都应有返回码,有些还具有返回值。接触式智能卡通常有VCC、GND、CLK、I/O、RST等触点,数据通过I/O(输入/输出端口)在终端和智能卡之间以异步半双工方式进行双向传送,I/O管脚的数据传输符合ISO7816规范的要求,因此可以对I/O管脚进行信号采集,并将信号还原,就可以得到指令和相应数据,包括从设备发送到卡片的指令、数据以及卡片的应答。按照ISO7816规范,终端向智能卡提供一个用作数据交换的时序控制时钟信号,数据在I/O上传输的字符帧的格式如图1所示,是由一个字符由10个连续位组成,其中包括·1个低电平状态的起始位;·组成数据字节的8个数据位;·一个奇偶校验位。
在I/O上使用的位持续时间被定义为一个基本时间单元,称为etu。起始位由接收端通过对I/O周期采样测得,采样时间应小于0.2etu。校验位的用途一个字符中的逻辑‘1’位的数目必须是偶数,8个数据位和奇偶校验位自身均作为校验计算位,但起始位不作校验计算。校验不通过,则该数据帧是错误数据,直接丢弃此数据。
作为优选,所述步骤(2)中可以监测智能卡I/O端口的数据流,通过周期采样获得智能卡与终端设备之间通信的数据流,将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。
通过上述方法获得的发送到智能卡的指令和智能卡的返回数据,是用户在实际使用中的指令和返回数据,将指令和返回数据作为测试例对测试卡进行测试,相比较现有技术中完全有测试人员编写测试脚本对测试卡进行的方式,可以确保测试过程更加接近用户的使用习惯,测试的可靠性更强。在此需要说明,除监测智能卡I/O端口外,获得智能卡与终端设备间数据流的方法有很多种,在此不一一说明。
其中,发送到智能卡的指令两类,一类是指令与其前后的指令都没有关联,另一类指令需要把上一条指令的返回值或部分返回值加以计算,把计算结果作为这次指令要发送的数据或部分数据。
对于第一类指令可以直接作为测试用例中的输入,返回码、返回值作为期望输出。因此,步骤(3)中所述的输入为步骤(2)中所述的指令;步骤(3)中所述的期望输出为步骤(2)中所述的返回数据。
对于第二类指令,转化为测试用例时输入和期望输出需要用变量代替。因此,步骤(3)中所述的输入包含一变量,所述的预期输出为一变量;只有在测试过程中才能依据前一条指令的执行结果确定变量的值,进而判断卡片返回值是否正确。
我们以外部认证为例说明第二类指令的处理过程,包括以下步骤(A)设备发送取随机数指令到卡片,取得8字节随机数rnd1;(B)设备用相应的密钥对rnd1进行des加密运算,产生鉴别数据d1;(C)设备向卡片发出外部认证命令,送d1到卡内;(D)卡片收到d1后,用卡内相应密钥对d1进行des解密运算,产生8字节鉴别数据d2。卡片比较rnd1和d2,若一致则表示认证通过,否则认证失败。其中,设备发送取随机数指令0084000008卡片返回值de3b0cf15367c503卡片返回码9000进行加密运算后,设备发送外部认证指令00820000080f7d7fe835e6370c卡片返回值无卡片返回码9000转化为测试用例的过程为将0084000008作为期望输入;de3b0cf15367c503是随机数,不能用作期望输出,用变量rnd1代替;9000表示取随机数执行成功,作为期望输出;00820000080f7d7fe835e6370c中的0f7d7fe835e6370c是对rnd1进行des加密计算的结果,用变量d1代替,把0082000008+d1作为期望输入;9000表示外部认证执行成功,作为期望输出。
以上对本发明的具体实施方式
进行了详细的解说。对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
权利要求
1.一种智能卡的测试方法,其特征在于,所述方法包括以下步骤(1)生成测试卡;(2)使用已有的智能卡与终端设备进行通信,获得发送给智能卡的指令和智能卡的返回数据;(3)根据所述步骤(2)得到的指令和返回数据,生成测试例,所述测试例包括测试时发送到测试卡的输入以及测试卡的预期输出;(4)将所述输入发送到测试卡,并监测测试卡的返回数据,如果所述测试卡的返回数据与所述的预期输出相同,则测试成功,如果不相同则测试失败。
2.根据权利要求1所述的智能卡的测试方法,所述测试例为多个输入及输入对应的预期输出组成的序列。
3.根据权利要求1或2所述的智能卡的测试方法,其特征在于,所述步骤(1)具体为根据用户所需的智能卡的文件结构、数据结构和相关密钥,建立卡片结构,生成智能卡。
4.根据权利要求1或2所述的智能卡的测试方法,其特征在于,所述步骤(2)具体为使用已有的智能卡与终端设备进行通讯,并监测智能卡与终端设备之间通信的数据流,并将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。
5.根据权利要求1或2所述的智能卡的测试方法,其特征在于,所述步骤(2)具体为使用已有的智能卡与终端设备进行通讯,并监测智能卡的I/O端口获得智能卡与终端设备之间通信的数据流,并将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。
6.根据权利要求1或2所述的,智能卡的测试方法,其特征在于,所述步骤(2)具体为使用已有的智能卡与终端设备进行通讯,并监测智能卡的I/O端口,进行周期采样获得智能卡与终端设备之间通信的数据流,将数据流中的数据信号还原为发送到智能卡的指令和智能卡的返回数据。
7.根据权利要求1或2所述的智能卡的测试方法,其特征在于,当步骤(2)中所述的指令与其前后的指令都没有关联时,步骤(3)中所述的输入为步骤(2)中所述的指令;步骤(3)中所述的期望输出为步骤(2)中所述的返回数据。
8.根据权利要求1或2所述的智能卡的测试方法,其特征在于,当步骤(2)中所述的指令是需要另一步骤的输出进行计算才能获得时,所述步骤(3)中所述的输入包含一变量,该变量代替需要对另一步骤的输出计算后获得的数据;步骤(3)中所述的预期输出用一个变量代替。
9.根据权利要求8所述的智能卡的测试方法,其特征在于,所述代替预期输出的变量根据测试过程中前一条指令的执行结果确定的输入变量的值确定预期输出。
全文摘要
本发明公开了一种智能卡的测试方法,针对现有智能卡测试方法中会出现产品由于测试不足而产生故障提出一种方法,包括(1)生成测试卡;(2)使用已有的智能卡与终端设备进行通信,获得发送给智能卡的指令和智能卡的返回数据;;(3)根据所述步骤(2)得到的指令和返回数据,生成测试例;(4)将所述输入发送到测试卡,并监测测试卡的返回数据,如果所述测试卡的返回数据与所述的预期输出相同,则测试成功,如果不相同则测试失败。本发明提出的智能卡的测试方法,使测试更符合最终用户的使用习惯,同时能够避免由于测试覆盖度不够而造成测试通过的升级产品在用户使用中出现问题。
文档编号H04B17/00GK1791258SQ200510135180
公开日2006年6月21日 申请日期2005年12月29日 优先权日2005年12月29日
发明者景涛 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1