ETest系统对自动化的支持
ETest主要功能包括了测试环境的可视化描述、协议数据的描述和自动解析、测试监控界面的设计和自动运行、测试脚本的开发与运行、测试数据的实时查看与分析、测试数据的记录与事后分析、第三方测试工具的集成等。作为一款自动化测试工具产品,ETest能够帮助测试人员高效、快速地实施嵌入式软件的自动化测试,降低嵌入式软件测试环境的构建难度,提高嵌入式软件测试的质量,缩短嵌入式产品的开发周期。ETest对自动化测试的支持主要体现在以下七个方面:
一、测试交联环境描述和自动解析
ETest提供了对测试环境的描述和配置的方式,用户通过简单的配置就可以完成测试交联环境的描述;测试平台在此基础上,自动解析所配置的测试环境,实现脚本的执行。
测试交联环境的描述方法为:创建测试方案,打开"仿真模型"。仿真模型是描述待测系统同它外围的其他系统之间交联关系的图形。仿真模型将待测系统和外围系统的概念抽象出来。如果待测系统由多个设备或部件组成,只考虑外围接口,而不考虑内部的连接关系。仿真模型如图6-7所示。
图6-7 ETest仿真模型
图中中间的节点代表"待测系统",其它节点代表"外围系统"。外围系统引出的线段代表"通道",即接口形式。线段上的连线代表"协议",即通道上的数据的通信格式。协议的描述实现了应用层数据打包/解包的自动化。
用户创建"仿真模型"的时候,首先从左侧的"仿真"工具栏选择"外围系统"结点,用拖拽的方式添加到拓扑图上;然后选择"通道",用拖拽的方式添加到外围系统上。通道的类型可以在工具栏中看到,包括RS-232、RS-422、RS485、TCP客户端、TCP服务器、UDP客户端、UDP服务器、模数转换、数模转换、数字输入、数字输出、SPI、I2C、CAN、1553B、ARINC429、频率输入、频率输出、计数通道、FLexRay这些通道类型;对于其它类型的通道,可以根据用户的需要进行扩展。
用户创建完仿真模型后,ETest进行自动解析,建立模型数据;测试运行时,软件自动创建"仿真模型服务器",为测试脚本的运行提供环境数据支持。
二、协议数据自动化编/解码
针对应用层接口数据,ETest提供了一种描述语言,叫做数据协议描述语言(DPD),描述数据打包方式,并且根据该描述可以将二进制数据转换为应用层数据,从而方便测试人员在测试脚本中调用使用。
DPD语言的描述方式为:协议包含协议头、协议尾和各个字段的定义。每个字段的定义用Segment关键字打头,后面有字段名称、字段类型、属性值等信息。如图6-8描述了一个协议的例子。
图6-8 ETest数据协议描述
DPD可以描述各种复杂情况的协议,包括非整字节的协议字段、协议格式同某个字段的数值相关的情况。DPD语言还可以描述校验字段,用户只需指定校验算法,平台进行收/发的时候,自动计算生成或检查校验字段的值,免去了用户自己编程生成校验的工作。
数据协议编写完成后,用户可以使用"编译"功能检查语法。语法正确无误后,在脚本运行环境会生成协议对象。用户在编写脚本的时候,就可以使用协议对象进行数据的读/写。每个字段的值可以作为对象的属性值进行存/取。测试人员只需使用数据,而不用关心数据的编码格式。
ETest的测试脚本集成了一系列同测试相关的功能;针对各个通道,提供了脚本对接口数据进行读取/接收的接口;并且用户不需要在编写脚本的时候关心数据发送的具体格式,只需要关心数据的值即可。通过这种方式,ETest实现了对应用层测试数据编/解码的自动化操作,简化了接口数据的处理操作,提高了工作效率,节省了测试的时间和人力成本。
三、测试过程的自动可视化监控
测试监控是用户自定义的监控面板,在测试执行过程中可以实时监视、控制测试数据。测试监控面板由用户用拖拽的方式简单搭建完成; 也可以作为测试过程的操作面板;监控面板具有丰富的数据表现形式,包括枚举、仪表盘、曲线图、数字表等控件,可以直观展现测试数据;也可以输入数据、点击按钮等,对数据进行控制;还可以设置报警条件,在满足报警条件的时候,给出醒目的报警提示。测试监控运行的例子如图6-9所示。
图6-9 自动可视化监控
ETest实现了自动化的可视化监控。除了在测试执行过程中实时监视/控制测试数据外,ETest的监控还具有以下几个特点:
1)支持13种输出控件和6种输入控件。
2)支持协议数据和监控控件数据的双向同步,并支持转换公式和条件判断。
3)曲线图控件支持双数据源,以方便用户观察两个不同协议变量的变化关系。
4)支持测试过程中临时指令的控制操作。
四、测试驱动自动化
测试数据驱动的自动化可以产生不同的数据输入来作为测试数据,确保被测软件的各种输入情况都能考虑到,保证了测试的覆盖率。ETest可以做到把数据从脚本中分离出来,从外部存储单元里读入数据,使得测试的脚本逻辑变得简单,从而实现了测试数据驱动的自动化。
ETest的测试用例编写包含了"测试过程"、"前置条件"、"后置条件"、"测试数据"几个部分。"测试过程"部分是用例执行的实现部分,使用脚本编写完成;"测试数据"部分是数据管理部分,使用表格化的形式,方便进行数据的添加、删除,包括输入数据和预期输出数据两个部分。测试数据如图6-10所示。
图6-10 ETest测试数据
除此之外,测试人员可以使用脚本从其他数据源(文本文件、数据库等)中获取测试数据,实现数据和脚本的分离,以支持测试驱动自动化。
五、测试数据的自动化生成
在测试过程中,离不开测试数据。有的测试用例需要使用大量的不同的测试数据。如果测试数据的生成完全依赖手工完成,工作量将十分巨大且繁杂。测试数据的自动生成将大大改进这一问题。
ETest在测试数据生成方面,利用组合原理和组合优化算法,自动进行组合测试数据生成。如图6-11所示。
图6-11 ETest组合测试
测试数据生成的过程描述如图6-12所示。
图6-12 ETest测试数据生成过程
测试数据的组合方式有全组合、两两组合等。还可以采用随机数作为某个输入数据的取值,生成大量的测试用例,进行随机测试。
六、测试脚本框架的自动化生成
测试脚本框架与自动化测试工具和测试脚本无关,而与待测对象和其外部对象的交互方式或者接口间的逻辑关系有关。如某个端口进行操作前,需要将另一个端口的状态进行恢复,使待测件进入某种状态,否则测试用例无法正确执行;测试执行过程中,测试脚本按照某种固定格式或方式发送测试数据到待测系统,然后按照某固定方式获取测试结果数据(固定时间间隔、固定端口、固定格式),将测试数据同预期输出数值进行比较;测试执行完毕后,需要将某个端口的状态进行恢复,消除测试执行过程造成的影响。整个执行过程如图6-13描述。
图6-13 ETest脚本框架执行过程
ETest能够针对测试运行的模式,自动化生成测试脚本框架。脚本框架包含测试脚本的四个关键元素:"测试过程"、"前置条件"、"后置条件"、"测试数据"。测试人员使用脚本框架设计测试用例脚本,能够使脚本描述更加规范,逻辑更加清晰,可以防止一些常见的错误,使得测试设计思路更加清晰。测试数据分开管理,更加方便。
七、测试结果报告的自动化
测试完成后,测试人员需要提供一份详细的测试报告。测试报告需要将测试过程和结果形成文档;需要包含已经执行或未执行的测试用例,使用的测试数据,得出的测试结果等信息。测试结果报告的信息是在测试执行的过程中形成的,自动化测试平台能够按照指定格式收集、汇总这些信息,以清晰的形式呈现出来,为测试人员带来很大的方便。
ETest测试脚本提供了判定测试结果的断言机制。使用断言机制判定的测试结果会在测试结果报告中显示出来。
ETest平台的测试报告如图6-14所示。
图6-14 ETest测试报告
测试结果报告中包含了测试项目描述、测试结果、测试数据这几个章节,其中测试项目描述章节包含了测试项目概述、测试环境描述、测试资源列表、测试脚本设计这几个部分;测试结果章节包含了测试用例执行情况及其结果。
ETest软件还支持用户自定义的报告格式,方便用户使用自定义的报告模板生成测试报告。