嵌入式做白盒测试,如果是平台级的软件还是有必要的,但是如果是产品级的测试,基本上投入太大,得不偿失。
我是这么看待自动化测试工具的,输入、输出、预期结果。简单而言,自动化测试就是自动输入数据,然后记录输出数据,与预期结果进行比较,得到测试结果。
不管针对什么产品,在构建自动化测试工具时,都可以使用这个流程。
对嵌入式产品而言,难点在于,输入输出数据的载体该如何选择?
以手机测试为例子,大家可以想到的是,利用GSM标准或扩展AT命令进行输入/输出/比较。这种方案使用AT命令作为数据载体,但是需要软件支持,比较麻烦。
手机的功能测试,基本上是使用键盘输入,屏幕输出。能不能在这上面想想办法?
使用键盘作为输入载体,使用屏幕作为输出载体,构建一个自动化测试工具,可行否?
制作一个键盘模拟板,与测试手机的连接接口与实际键盘与手机的接口一致,同时将键盘模拟板接入PC,使用PC控制键盘按键命令作为输入数据。
将屏幕与手机的连接取下,制作一个连接线装置,使用同样的接口连接手机与PC,这样原来在手机屏幕上显示的内容可以在PC上显示(当然,需要开发驱动)。
测试时使用PC控制键盘输入数据,记录屏幕输出数据,在完成第1次正确操作后,将屏幕输出数据置为预期结果,后续的回归测试不是都可以使用PC自动完成(当然,在需求发生变化造成界面重新设计后需要重新录制脚本)?
这种方案的好处是脱离了对软件的要求,即使软件平台发生变化,依然可复用。
同样的,其他的嵌入式软件测试,也可以使用相同的思路。GPS可以使用触摸屏作为输入数据载体,同样使用屏幕作为输出数据载体。MP3可以使用按键作为输入数据载体,屏幕与音频接口可作为输出数据载体。
开发难度与复用率?
测试团队可以编写一个工具框架,项目组的硬件成员可开发相关硬件,手机上的键盘与屏幕都设计出来了,转到PC上应该不难吧?软件成员既然在手机上定义了驱动,在PC上写个驱动不难吧?只要输入输出数据的载体不发生变化(出于采购以及成本的考虑,我想没什么公司会天天变吧),这些驱动可以一直沿用。可复用性还是可以接受的。
大家的意见呢?