一种智能卡的测试方法和装置的制造方法
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种智能卡的测试方法和装置。
【背景技术】
[0002]金融IC卡已成为金融支付领域的重要发展趋势。金融IC卡安全性高、信息存储容量大,并且相比较磁条卡,在防范银行卡交易欺诈风险和提升金融支付工具附加功能等方面有得天独厚的优势,因此越来越得到银行的青睐。
[0003]金融IC卡在正式商用前,必须对卡片操作系统进行严格的内部测试,测试内容主要包括未知指令安全性检测、特定算法正确性检测、文件系统访问权限控制检测、指令一致性检测、个人化后文件操作及访问控制检测、多应用安全性检测、卡片寿命检测等,而这些检测需要通过读卡器对卡片发送数以百万计的APDU指令实现,通过人工逐个发送显然是不现实的,因此,需要一套具有高度智能化的检测工具实现对以上测试点的检测。
[0004]现已有的测试工具只针对单一规范,通用性不足。一般根据ISO 7816-4规范和特定智能卡操作系统设计测试用例,不涉及各行业规范,例如对金融、社保卡测试不够全面。
【发明内容】
[0005]本发明提供一种智能卡的测试方法和装置,要解决的技术问题是如何提高测试的通用性。
[0006]为解决上述技术问题,本发明提供了如下技术方案:
[0007]—种智能卡的测试方法,包括:
[0008]输出预先存储的指令信息,其中所述指令信息为用于测试智能卡的指令信息;
[0009]接收外部利用所述测试指令信息编辑得到的测试代码;
[0010]利用所述测试代码对所述智能卡进行测试。
[0011]其中,所述利用所述测试代码对所述智能卡进行测试,包括:
[0012]当同时对至少两个智能卡发送测试代码时,向所述至少两个智能卡中的第一智能卡发送测试代码时,其中所述测试代码包括第一智能卡的标识信息;
[0013]以及,接收所述第一智能卡反馈的测试结果,其中所述测试结果包括所述第一智能卡的标识信息。
[0014]其中,在接收所述第一智能卡反馈的测试结果之后,还包括:
[0015]根据所述第一智能卡的反馈结果,获取所述至少两个智能卡中的第二智能卡的测试指令;
[0016]向所述至少两个智能卡中的第二智能卡发送测试代码时,其中所述测试代码包括第二智能卡的标识信息;
[0017]以及,接收所述第二智能卡反馈的测试结果,其中所述测试结果包括所述第二智能卡的标识信息。
[0018]其中,在利用所述测试代码对所述智能卡进行测试之前,还包括:
[0019]读取智能卡连接的读卡器的接口的类型信息;
[0020]根据读卡器的类型,确定所述测试代码的发送策略;
[0021 ] 根据所述发送策略,通过所述读卡器发送所述测试代码。
[0022]—种智能卡的测试装置,包括:
[0023]输出模块,用于输出预先存储的指令信息,其中所述指令信息为用于测试智能卡的指令信息;
[0024]接收模块,用于接收外部利用所述测试指令信息编辑得到的测试代码;
[0025]测试模块,用于利用所述测试代码对所述智能卡进行测试。
[0026]其中,所述测试模块包括:
[0027]第一发送单元,用于当同时对至少两个智能卡发送测试代码时,向所述至少两个智能卡中的第一智能卡发送测试代码时,其中所述测试代码包括第一智能卡的标识信息;
[0028]第一接收单元,用于接收所述第一智能卡反馈的测试结果,其中所述测试结果包括所述第一智能卡的标识信息。
[0029]其中,所述测试模块还包括:
[0030]获取单元,用于在接收所述第一智能卡反馈的测试结果之后,根据所述第一智能卡的反馈结果,获取所述至少两个智能卡中的第二智能卡的测试指令;
[0031]第二发送单元,用于向所述至少两个智能卡中的第二智能卡发送测试代码时,其中所述测试代码包括第二智能卡的标识信息;
[0032]第二接收单元,用于接收所述第二智能卡反馈的测试结果,其中所述测试结果包括所述第二智能卡的标识信息。
[0033]其中,所述装置还包括:
[0034]读取模块,用于在利用所述测试代码对所述智能卡进行测试之前,读取智能卡连接的读卡器的接口的类型信息;
[0035]确定模块,用于根据读卡器的类型,确定所述测试代码的发送策略;
[0036]其中,所述测试模块根据所述发送策略,通过所述读卡器发送所述测试代码。
[0037]本发明提供的实施例,通过输出预先存储的指令信息,允许用户使用脚本语言所支持的内部指令组合新的外部指令,使能够根据不同的应用场景或者行业规范,设计不同的测试脚本对智能卡操作系统进行测试,解决了以前测试工具只支持单一规范和通用性不足的缺陷。
【附图说明】
[0038]图1为本发明提供的智能卡的测试方法实施例的流程图;
[0039]图2为本发明提供的智能卡的测试装置实施例的结构图。
【具体实施方式】
[0040]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0041]图1为本发明提供的智能卡的测试方法实施例的流程图。图1所示方法包括:
[0042]步骤101、输出预先存储的指令信息,其中所述指令信息为用于测试智能卡的指令信息;
[0043]步骤102、接收外部利用所述测试指令信息编辑得到的测试代码;
[0044]步骤103、利用所述测试代码对所述智能卡进行测试。
[0045]本发明提供的实施例,通过输出预先存储的指令信息,允许用户使用脚本语言所支持的内部指令组合新的外部指令,使能够根据不同的应用场景或者行业规范,设计不同的测试脚本对智能卡操作系统进行测试,解决了以前测试工具只支持单一规范和通用性不足的缺陷。
[0046]下面对本发明提供的方法作进一步说明:
[0047]举例来说,现在测试工具提供以下几个函数
[0048]*ADD Pl [IN],P2 [IN],P3 [OUT],将两个 16 进制的数 Pl,P2 相加,结果放入 P3
[0049]*HT0D Pl [IN],P2 [OUT],将16进制的数Pl转换为10进制的数P2
[0050]*DT0H Pl [IN],P2 [OUT],将10进制的数Pl转换为16进制的数P2
[0051]如果用户需要做两个十进制数的加法,则必须先调用DTOH将10进制数转换为16进制数,然后通过ADD做加法,最后通过HTOD再将结果转换为10进制数,比较麻烦,用户可以编写一个ADDH指令放到工具/Iib目录下,然后直接调用*ADDH Pl [IN],P2 [IN],P3 [OUT]将两个10进制数相加,具体ADDH指令编写方式如下:
[0052]ADDH.ts
[0053]#define ADDH pi[in], p2[in], p3[out]
[0054]*DT0H$pl, $pl
[0055]*DT0H$p2, $p2
[0056]*ADD$pl, $p2, $p3
[0057]*HT0D$p3, $p3
[0058]完成上述文件编写后,用户就可以直接调用*ADDH Pl [IN], P2 [IN], P3 [OUT] 了,该指令就是用户通过内部指令编写的新外部指令。
[0059]在实际应用中,可以更新本地存储的指令信息,方便用户开发新的测试代码。
[0060]随着技术的发展,目前需要多卡同时操作的应用场景,因此允许测试工具同时对多张卡片发送指令,且能相互共享卡片返回数据。
[0061]其中,所述利用所述测试代码对所述智能卡进行测试,包括:
[0062]当同时对至少两个智能卡发送测试代码时,向所述至少两个智能卡中的第一智能卡发送测试代码时,其中所述测试代码包括第一智能卡的标识信息;
[0063]以及,接收所述第一智能卡反馈的测试结果,其中所述测试结果包括所述第一智能卡的标识信息。
[0064]进一步的,在接收所述第一智能卡反馈的测试结果之后,还包括:
[0065]根据所述第一智能卡的反馈结果,获取所述至少两个智能卡中的第二智能卡的测试指令;
[0066]向所述至少两个智能卡中的第二智能卡发送测试代码时,其中所述测试代码包括第二智能卡的标识信息;
[0067]以及,接收所述第二智能卡反馈的测试结果,其中所述测试结果包括所述第二智能卡的标识信息。
[0068]发送给不同卡片数据有不同的指令,例如给卡片A发送则为*APDUA
[0069]给卡片B发送指令则为*APDUB,界面上也提供了打开读卡器A,B,C的相对应按钮。
[0070]共享卡片的返回数据的主要应用场景为多卡