形式化验证和测试是互补的活动,是质量保证过程的一部分。理想情况下,产品相关的质量保证任务将分为如下形式化验证和测试:
●需求规格、设计规格和代码等逻辑正确的属性应该做形式上的验证。
●适当的集成软件、固件和硬件应该被测试。
●控制器的可靠操作应由内置的测试设备进行测试,测试设备负责监控操作和执行符合指定行为的动态检查。
●不能从其他参考规格推导出的需求规格的完整属性,应该通过形式验证和仿真验证相结合,即在符号规格级别上的测试。
对于嵌入式实时系统,当在执行关键安全或使命安全控制任务时,需要高度的自动化。否则将不可能达到必要的测试覆盖程度,也不可能在接受的时间/成本利润内,对新产品执行回归测试。因此,测试必须基于可以由计算机自动解释的形式规格。为了证实测试过程是值得信赖的,必须揭示产品对于行为规格的偏差,测试必须与形式验证有关。因此,自动化测试和形式的方法有密切的关系。
RT-Tester是一个通用测试系统,集自动化半实物测试、不同类型的硬件接口实例化、操作系统的软件集成测试为一体,由一系列组件构成,支持C、C++、Java、C#多种语言,用于单元测试、集成测试、配置项测试、软硬件集成测试、系统测试等各个测试阶段。在测试过程中自动生成测试用例、执行测试和实时测试评估。
RT-Tester能够在模型上自动生成测试用例、测试数据和测试过程,兼容多种格式的规范(UML2.0、Domain-Specific语言、CSP等)。产生并维护一个关于需求、测试用例、测试过程及测试结果的追踪矩阵。
RT-Tester有自己的运行时环境,基于Windows或Linux操作系统底层的轻型进程机制,管理LWP上可配置的用户线程,上下文切换的费用不高。在Linux多核和多CPU平台中,借助Hard Real-Time Linux kernel patch,增强RT-Tester的能力。可以为RT-Tester的LWPs预留指定数量的CPU,这使得调度精度大约为几微秒,在剩余的核或CPU中,其他程序可以正常执行,不会影响实时运行时系统。
RT-Tester带有一个工具认证资格套件,适合所有的软件关键水平。适应于DO178B/C、CENELEC 50128和ISO 26262标准,RT-Tester已成功地用于测试最高安全级别的系统。
RT-Tester工具组件包括:
●RTT-CORE(测试过程开发、执行和记录)
用于单元测试、软件集成测试和硬件集成测试的实时测试系统,为所有测试级别提供同一种测试语言。对事件、采样端口和队列端口进行抽象,具有在主机或目标机上的可执行性。
●RTT-MBT(基于模型的测试生成器和仿真器)
产生模型上的测试(MBT),在UML/SysML模型上自动生成测试用例、测试数据和测试过程。维护需求、测试用例、测试过程及测试结果的追踪矩阵。
●覆盖所有测试级别
单元测试、软件集成测试和软硬件集成测试以及系统测试可以用同一个工具进行。
●用于单元和软硬件集成测试的强大的桩生成器
被测件在测试中调用的子函数或方法可以被一个具有相同标识的测试系统桩模块自动代替。利用桩,自动记录调用参数,用户可以模拟被测的子组件的不同行为(比如,健壮性测试中所需的正常范围返回值或错误行为)。
●支持基于模型的测试
RT-Tester可以集成多种格式的规范(UML2.0、Domain-Specific语言、CSP等),为基于模型的测试提供全面的支持。可以向Verified公司咨询当前支持的规范格式和工具,以及RT-Tester基于模型测试的完整功能列表。
●接口抽象机制
对于软件、软硬件和系统集成测试,RT-Tester提供通道(消息传递抽象)和向量(分布式共享变量抽象)的机制,抽象被测系统的接口访问(比如,操作系统的通信调用或硬件接口的驱动调用)。
●支持复杂分布式仿真的高性能多线程机制
RT-Tester配有它自己的运行时环境,基于Windows或Linux操作系统底层的轻型进程机制(LWP,light-weight process),RT-Tester管理LWP上可配置的用户线程,同时上下文切换的费用不高(在典型的现代Linux PC机系统中,小于6微秒)。
●强实时能力
在Linux多核和/或多CPU平台中,借助Hard Real-Time Linux kernel patch,增强RT-Tester的能力。可以为RT-Tester的LWPs预留指定数量的CPU,这使得调度精度大约为几微秒,在剩余的核或CPU中,其他程序(比如,软实时可视化、测试程序的编写)可以正常执行,不会影响强实时运行时系统。
●强实时PC群的分布式测试和仿真
对于硬件/软件和系统集成测试,测试生成器、校验器("测试预言")和模拟器不仅仅分布在多个CPU和内核中,还分布在PC群平台中,通过高速链路如Infiniband或千兆以太网进行通信。将高通量接口分布在多个PC节点的被测系统中,降低了每个单一节点的接口总线负载。
●易操作
除了命令行,RT-Tester在Windows和Linux系统上具有Eclipse图形用户界面。
●协作性
适合单用户项目及分布式测试团队。
●可扩展
几个可用的工具链扩展:
■测试管理系统(RTT-TMS)组织共享多用户的测试硬件和测试用例/需求状态报告。
■基于模型的测试(RTT-MBT)支持由测试模型生成可配置的测试用例。
■集成测试中支持多个硬件接口的集群通信支持。
■目标测试技术支持远程过程调用,支持对运行在目标硬件上的SUT的板上观察。
●资格审定
RT-Tester带有一个RTCA-DO178B工具认证资格套件,适合所有的软件关键水平。
●工具目前支持的平台
■Linux:SuSE,openSUSE,CentOS/RHEL,Ubuntu
■Solaris:SunOS5.10(32bit)
■Windows: Windows XP SP3,Windows 7,Windows 8/8.1。
RTT-MBT
●定义测试模型
从描述被测系统行为的UML/SysML模型开始,RTT-MBT推导系统的期望行为以及系统对测试输入的响应。这些测试模型能在不同的UML/SysML工具中指定,以XMI格式导出到RTT-MBT中。
●测试用例和测试数据自动生成
根据被测系统的关键级别,RTT-MBT提供多种测试用例策略。对于已经标识出来的测试用例,测试数据也是自动生成的。测试数据包含输入和相关的时间信息,发送给被测系统,把被测系统驱动到这个测试用例能被检查的状态。检查的动作也是由自动产生的测试预言完成的,测试预言验证被观测系统的行为是否和预期行为一致。预期行为是从最初的测试模型推导出来的。
●测试过程自动生成
个体的测试用例生成后,需要用它们实现测试目标。RTT-MBT自动产生测试过程,把多个用例合并到一个过程中。测试工程师选择使用哪些测试用例,以此主导测试过程的生成,RTT-MBT负责跟踪必须被激励和观测的输入和输出,覆盖选定的测试用例。
RTT-MBT自动产生的测试过程能够立即运行在被测系统上。在测试执行期间被测系统的输入得到激励,驱动内部状态以满足测试用例的先决条件(pre-condition)。自动验证被测系统的输出是否和测试模型产生的期望行为一致。
系统自带的回放功能采用RT-Tester测试过程自动生成的测试日志,运行测试环境提供的输入和被测系统相对于测试模型的输出。它标识出一个给定的测试追踪所覆盖和测试的所有用例,验证测试过程的结果,保证RT-Tester自动生成的测试过程真正地匹配了被测系统建模的行为。
●集成的需求追踪
测试模型不仅要指定期望的系统行为,而且要说明系统需求如何被模型的特定部分所满足。RTT-MBT支持在测试模型的状态和转换上面直接添加需求说明。如果特定的状态或转换不能直接表述需求,RTT-MBT也允许使用状态、转换或内部状态变量的更加复杂的表达式。
这样的信息一旦内嵌到测试模型,RTT-MBT就能利用它产生专门用于覆盖需求而设计的测试用例。RT-Tester中集成的需求追踪功能用于详细地追踪哪个需求在哪个测试过程得到测试,以及需求的整体测试水平如何。每个需求可以分解为多个测试用例,如果所有用例都已成功测试,那么可以认为需求也得到了成功的测试。
●支持的测试策略
基本控制状态覆盖、状态转换覆盖、分级转换覆盖、MC/DC覆盖、基本控制状态成对覆盖、等价类测试策略。
●集成性
可以从Enterprise Architect、SCADE和PTC Integrity Modeler(原名为Artisan Studio)导入测试模型。
●易操作
RTT-MBT与RT-Tester测试系统的图形用户界面无缝集成,可用于Windows和Linux系统。