实际的项目中,可以使用商业的测试工具,也可以使用开源的测试工具。如果这两种工具都满足不了测试的要求,只能自己从零开发或者在现有测试工具的基础上做二次开发。需要做二次开发的情形并不少见,比如,笔者最近亲历的某银行OTP设备项目。
先了解下OTP是什么?OTP全称叫One-timePassword,也称动态口令,是根据专门的算法每隔60秒生成的一个与时间相关的、不可预测的随机数字组合。动态口令可有效保护交易和登录的认证安全,而且无需定期更换密码。OTP设备就是用来生成动态口令的终端。
首次介入OTP设备项目是在去年的11月初。正忙于手头测试项目的我,应邀参加了部门内部组织的OTP产品会议,重点讨论硬件测试、固件测试、软件测试等问题。说是讨论,实际上是分配测试工作。项目组领导安排我开发测试工具,评估OTP固件的可靠性。工具要求实现时间比对,动态口令验证,解锁验证,时间同步验证以及循环写种子密钥和时间同步的功能。我掐着手指头算了下,一共5个,还是倍感压力。压力不仅是要做的东西多,而且事先我对这个项目毫无了解。领导有板有眼的解释着我要做的东西,我还是稀里糊涂他说的一些名词;虽然肾上腺素在不停分泌,潦草的记下了他说的要点,但是对于内部实现的细节,还是一头雾水;虽然自己开发的底子还算扎实,但是对于短时间内就要出东西的项目,心里还是没底。
会议结束后,心急火燎的我,马上和测试组其他同事讨论测试工具的问题。我首先想到了CardIDE。CardIDE是公司自主开发的一个集成开发环境,可以开发基于Delphi语言的脚本,用于金融领域KEY类产品和读卡器类产品的测试。由于分工不同,我对这个工具并不熟悉。我的疑惑是通过CardIDE能否开发出满足OTP测试要求的脚本?这个想法很快被经常使用这个工具的同事否定了,理由是Delphi语言功能比较弱,开发难度大,几乎不能实现。同事的答复像一盆冷水泼在了身上,希望瞬间变失望。其中的一位同事还安慰我说,你要是做不了,赶紧报告领导,还能挽回点局面。我一时语塞,脸上微烫,突然发现自己,怎么有些不淡定了。一句无心的话,坚定了我做出来的决心。
......
首先还是要明确目标测试工具的功能需求,包含基本功能需求和附加功能需求。基本功能需求:
·自动检测设备的插拔(现有工具已实现)
·随机产生16字节种子密钥KeyData
·获取8字节随机链路密钥EKEy
·用EKEY对根密钥MKEY做ECB模式下的3DES加密运算,运算结KeyEndataTest
·用KeyEndataTest对种子密钥KeyData做CBC模式下的3DES加密运算,运算结果KeyEndata
·用种子密钥KeyData对8字节00做ECB模式下的3DES加密运算,运算结果KeyChkval
·将序列号和KeyEndata和KeyChkval拼接后,写入到OTP设备中
·发送时间同步指令,验证OTP和本地时间是否同步
·擦除COS
·模拟OTP插拔的动作
·程序暂停执行,等待生产工具将COS自动写入
·模拟OTP插拔的动作
·返回步骤1重新执行
......
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。