具有稳定、可靠的卡内操作系统是智能卡正常工作的基础,智能卡操作系统控制外界与智能卡之间的通信,管理卡片的存储空间,并且在卡内对于各种命令进行处理,所以在COS 开发过程中有必要对COS 进行充分且全面的测试。COS 的主要特点: 它是一个专用系统; COS 一般是根据某种卡片的特点以及应用范围来设计开发的,具有高可靠性; COS 所要完成的功能需遵循相关的国际规范以及行业规范; 支持同一应用类型的COS 往往遵循同样的规范,这使得COS 的测试有一定的重用性。
以上特点决定了常规的软件测试方法不能直接用于COS 测试。
1 智能卡操作系统
1. 1 COS 组成结构
COS 的主要功能是从智能卡传出和传入数据,控制执行相关的命令,管理维护文件系统,管理与执行加密算法。其结构可划分为两个层次: 功能层和微内核层。
功能层主要实现COS 的业务逻辑,包含通信管理、安全管理、命令解释、文件管理四大模块。
1) 通信管理模块: 对输入缓冲区中收到的数据进行奇偶校验,以及对分组长度等进行正确性判断,但不对信息的内容进行判断,以ISO/ IEC 7816- 4 中有关命令结构作为判断的标准; 接收经过命令处理、文件管理处理、安全认证后的数据,并按照ISO/ IEC 7816- 4中有关命令结构要求将其打包成完整的结果报文,放入到输出缓冲区,发送结果报文。
2) 安全管理模块: 接受通信管理模块的调度,并将处理后的信息返回给通信管理模块; 对通信管理模块接收的数据进行安全验证,但不对数据内容进行验证,若安全验证失败,则直接返回验证失败。 3)命令解释模块: 接受安全管理模块的调度,并将处理后的数据信息( 与命令相对应的响应代码) 返回给安全管理模块; 需要作数据内容上的鉴别( 检查命令的各项参数是否正确) ,然后执行相应的操作,完成对卡内有关数据的操作,若对数据内容鉴别未通过,则直接返回错误码给通信管理模块。 4)文件管理模块: 接受命令管理模块的调度; 数据在卡内是以文件形式存在的,文件管理模块须提供文件的建立、修改、删除等基本操作,文件访问的安全控制等。微内核的主要功能: 为上层的功能层提供硬件支持,实现终端与卡内硬件的通信。微内核分为接口层、驱动层,接口层为功能层提供服务,将功能层的服务请求转化成对驱动层的调用,为功能层提供统一的接口。驱动层主要实现对底层硬件的各种驱动操作。
1. 2 COS 的状态转移过程
各功能模块在完成特定请求的过程中可能还需要向其他功能模块发出请求。各模块之间是调度请求和数据响应的关系,在一对关系中调度请求表现为模块的输出,数据响应表现为模块的输入,调度和响应都用事务表示,事务所代表的是一组数据,以及对数据的操作。
事务1: 智能卡收到终端的APDU 请求;
事务2: 智能卡向终端发出的APDU 响应; 事务3: 通信管理模块接收到APDU 命令,进行校验后,调用命令解释模块对APDU 指令进行处理; 事务4: 命令解释模块向通信管理模块返回处理后的数据或异常事件; 事务5: 命令解释模块在APDU 命令的处理过程中,需要访问文件而调用文件系统模块; 事务6: 文件系统模块将处理后的信息返回给命令解释模块; 事务7: 文件系统模块在对文件操作时需要进行安全控制时调用安全模块; 事务8: 安全管理模块在涉及安全性相关的文件时调用文件系统模块; 事务9: 命令解释模块向安全管理模块发出的响应事件; 事务10: 安全管理模块向命令解释模块发出的处理数据请求; 事务11: 安全管理模块向通信管理模块发出的响应事件或异常事件; 事务12: 通信管理模块为完成终端发出的APDU请求,向COS 微内核发出的调用底层硬件接口请求; 事务13: 命令解释模块为完成安全管理模块请求,向COS 微内核发出的调用底层硬件接口请求; 事务14: 文件系统模块为完成安全管理模块请求,向COS 微内核发出的调用底层硬件接口请求; 事务15: 安全管理模块为完成安全管理模块请求,向COS 微内核发出的调用底层硬件接口请求。1. 3 智能卡通信过程
智能卡与终端之间的通信是通过命令--响应对实现的。终端向卡发送命令( 以C- APDU 形式) ,卡收到命令后,由COS 对接收的命令报文进行处理,然后将处理结果打包成响应报文( 以R- APDU 形式) 返回给终端。
C- APDU 由两部分组成 : 一个必备的连续4 字节的命令头,用CLA、I NS、P1 和P2 表示,以及一个可选的长度可变的条件体。在C- APDU 中发送的数据的字节数由1 字节的L c 定义,期望卡回送的R- AP􀀁DU 数据字段的最大字节数由1 字节的L e 指定
对命令功能的测试主要是测试各命令之间的相互关系以及命令序列所完成的功能。根据ISO 7816- 4中规定的命令执行时需要满足的条件及有关命令间的相互关系,描述执行命令序列的过程,然后以非正常和正常事件作为输入来设计测试用例。
在EVDO 卡的测试过程中,利用团队自主开发的自动化测试工具,引入脚本技术,实现COS 测试的自动化,大大地提高了测试的效率。引入自动化测试技术具有如下优势:
1)使测试可以快速准确地进行,减少人为的操作失误,更多更频繁地运行测试脚本,使得脚本的执行效率高于手工测试,缩短发布产品的时间;
2)对新版本的程序运行已有的测试脚本,特别是在程序更新较频繁时,自动化测试可以在短时间内测试已有的脚本; 3)更好地利用资源,使繁琐的任务自动化可提高测试的准确性以及测试人员的积极性,从而使测试人员能有更多精力来设计更好的测试用例; 4) 自动化测试可通过重复执行相同的测试脚本来获得测试的可重复性和一致性。2. 2 防拔插和耐久性测试
防拔插测试主要检测因突然断电而使操作中断后智能卡能否自动恢复。主要涉及的是在正常环境下执行正确的命令序列,COS 写FLASH 时,突然断电,智能卡能够保证卡内的数据依然具有完整性。若命令未能成功执行,验证卡内数据与命令执行前是否完全一致,若一致则表示卡片的防插拔功能是有效的。智能卡的使用寿命是有限的,对智能卡的插拔次数决定了智能卡的物理寿命,一般来说,约在1 万次左右; 而数据存储器的擦写次数决定了集成电路芯片的寿命,各厂家生产的芯片其指标是不同的。故而必须对智能卡实施耐久性测试,检验存储器的擦写次数是否会因为日常使用而超出芯片存储器擦写的最大值。对文件的操作是使用智能卡时主要涉及的内容,因而需要模拟日常使用智能卡的行为,对所有文件的访问频率进行统计,找出具有相对较高访问频率的那些文件,在个人化过程中分散存储这些文件,避免某一块存储区域擦写过度,均衡整个存储器的擦写。
3 结束语
根据COS 的特点给出了COS 的测试方案,对于每个测试项给出了其测试的方法和技术。在测试中,结合对测试结果的分析,进一步补充测试用例。在EVDO 卡的开发中按照文中的测试方案进行了测试,经反复测试,开发的EVDO 卡通过了第3 方测试,该卡正应用于生产。