作者 李明涛
现在有很多优秀的SSD自动化测试平台,比如Oakgate,DriveMaster。通过简单的配置,能够自动完成复杂的测试,这为测试工作减轻了很大的负担。但是作为一名QA工程师,每天除了跑测试,报bug,写脚本,写报告之外,每次都要通过串口,手动升级FW到我们的SSD里,操作起来非常复杂,尤其是在firmware出现问题,需要重新断电,上电,手动敲很多命令让SSD恢复到初始状态,然后才能重新测试。一方面操作起来复杂繁琐,另一方面难以实现大规模自动化测试。
现介绍一种简便的测试框架,能够实现只须一步操作,就能让出现Assert/Panic的SSD恢复到初始状态,进而进行正常的测试工作,也让大规模测试简便易行。先看硬件结构图,非常简单,最少只需要两台PC,一个IPRelay,一个串口线和办公网络。推荐使用一个控制机,八台测试机。
IP Relay的输出端口连接到主板的两个powerpin脚上
一个控制机,负责控制测试机上下电和download firmware,保存串口log。另外一个测试机负责执行测试。
这个平台的前提条件可以是一切正常工作,也可以是待测SSD firmware已经crush,需要重新通过串口更新firmware。
具体的测试流程,或者需要开发的脚本执行流程
-
在控制机运行程序,通过参数输入待升级的bin文件路径,测试机IP地址,IPrelay的IP地址和端口,
-
控制机运行程序通过串口检测SSD能够正常进行通讯
-
控制机通过socket通讯控制IPrelay, 给测试机断电
-
程序检测到SSD已经断电,串口端没有响应
-
控制机通过socket通讯控制IPrelay, 给测试机上电
-
程序检测到SSD已经上电,串口端能够正常通讯
-
通过串口xmodem协议更新firmware
-
通过串口输入一些配置命令,让SSD恢复初始状态
-
控制机通过socket通讯控制IPrelay, 给测试机断电
-
程序检测到SSD已经断电,串口端没有响应
-
控制机通过socket通讯控制IPrelay, 给测试机上电
-
程序检测到SSD已经上电,串口端能够正常通讯
-
通过串口检测firmware版本是否已经更新成功
-
程序通过网络检测到测试机OS已经正常识别到待测SSD设备
其中3-6,9-12目的只是给测试机做上下电。
上面所说的测试机程序,可以用python语言,在miniterm这个开源工具的基础之上开发。另外最好能够实时保存log以便后续调试。添加参数,使之也可作为普通的串口工具使用。
多串口卡推荐使用MOX CP-168EL-A,官方介绍http://www.moxa.com.cn/product/CP-168EL-A.htm
IPrelay推荐使用ETH008,官方介绍http://www.robot-electronics.co.uk/products/relay-modules/ethernet-relay/eth008-8-x-16a-ethernet-relay.html,再配外接电源
另外IPrelay也可以用USBrelay替代,不过要额外开发控制软件。
不过这个简易的平台有一些限制,比如说它每台测试主机只能测试一片SSD,SSD断电重启后必须能够通过串口更新firmware。
想象一个场景,firmware已经crush,你需要重新测试新的firmware,你只需要在命令行里执行一步命令,或者双击你填好参数的脚本,一两分钟后你就可以做你的测试了。希望这个测试结构能够为QA小伙伴们减轻负担,从手动点鼠标更新firmware的无聊工作中解放出来,把工作重心放在找bug上。