CN102402484A - 一种嵌入式软件的可靠性增长测试自动试验装置及其方法 - Google Patents
一种嵌入式软件的可靠性增长测试自动试验装置及其方法 Download PDFInfo
- Publication number
- CN102402484A CN102402484A CN2011104487003A CN201110448700A CN102402484A CN 102402484 A CN102402484 A CN 102402484A CN 2011104487003 A CN2011104487003 A CN 2011104487003A CN 201110448700 A CN201110448700 A CN 201110448700A CN 102402484 A CN102402484 A CN 102402484A
- Authority
- CN
- China
- Prior art keywords
- test
- software
- defective
- embedded
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种嵌入式软件的可靠性增长测试自动试验装置及其方法,该装置的自动测试平台和嵌入式试验软件之间通过RS422串口线和交叉网线相连,自动测试平台下发缺陷配置文件、转化和解析测试用例、收集测试输出和运行信息,嵌入式试验软件实现缺陷的注入和软件运行过程中的信息采集。该方法利用缺陷配置文件进行缺陷注入,通过自动测试平台转化和解析测试用例,得到测试输入激励和测试辅助信息,控制嵌入式试验软件运行,并收集测试输出和测试运行信息,在发现缺陷时自动排除,实现可靠性增长测试过程。本发明实现了对嵌入式软件的可靠性增长测试的自动实验,极大地减少了测试时间和测试人员精力,使研究所需的试验数据收集变得容易很多。
Description
技术领域
本发明应用于嵌入式软件的可靠性测试领域,具体是一种嵌入式软件的可靠性增长测试自动试验装置及其方法。
背景技术
随着嵌入式***在民用、工业及国防领域的广泛应用,嵌入式软件发挥的作用越来越大。由于嵌入式软件失效会导致***失效、经济损失甚至重大事故,引起了人们广泛的关注,因此提高嵌入式软件可靠性具有极其重大的意义。
软件可靠性测试,特别是嵌入式软件的可靠性测试是一个极为耗时耗力的测试过程。只有在测试样本(测试数据)非常丰富的情况下,随机抽样产生的测试数据才能更为准确的体现出软件的使用分布,但是测试数据的增加势必带来测试成本和耗时的增大,从而使研究所需的数据收集变得非常困难。这也是现有的软件可靠性研究往往只是数学推导,而不能广做试验的原因之一。以软件可靠性指标MTBF为10000小时的软件为例,其测试时长通常可能大于10000小时,导致可靠性测试实施起来成本很大。
软件测试自动化一直以来是测试领域的发展方向,目前市场上也有一些产品对测试自动化提供了支持,但总体来说,软件测试自动化仍停留在应用部分工具的层次上,在理论方面缺乏完整的测试自动化理论支持。比如用于专项用途的测试工具:白盒测试工具、黑盒测试工具、专用代码测试工具等,还有一些功能、性能测试用途工具。
软件可靠性增长测试是软件***测试阶段中的主要任务,它能使软件的可靠性得到明显提高。这种测试是为了满足软件的可靠性指标,进一步发现程序中的缺陷而执行程序的过程,是一种软件测试-修改-测试的动态测试方法,是一个闭环过程。不同于一般的软件测试,在数据收集方面,它除了测试输出结果还需要收集失效时间等数据,然后通过所收集的失效数据进行可靠性分析,从而使软件满足可靠性要求。显然现有的一些软件测试自动化工具并不能满足这些要求,对于软件的可靠性研究非常不利。
就目前而言,并没有针对嵌入式软件可靠性增长测试的自动试验装置或试验方法,能够自动执行大量的测试用例并收集相关测试信息以供分析。不但无法以高效率自动执行软件可靠性测试从而节省测试时间和测试精力,还无法获得大量的试验数据用于软件可靠性研究。
发明内容
本发明针对由于软件可靠性增长测试极为耗时耗力,目前缺少对嵌入式软件的可靠性增长测试进行自动实验的技术,以获得用于研究的试验数据非常困难,提出了一种嵌入式软件的可靠性增长测试自动试验装置及其方法。
本发明提出的一种嵌入式软件的可靠性增长测试自动试验装置,包括运行在宿主机上的自动测试平台和运行在目标机上的嵌入式试验软件,宿主机和目标机之间通过RS422串口线和交叉网线两条线路相连。
自动测试平台包括:缺陷配置模块、测试脚本转化模块、测试脚本解析模块、测试数据发送与采集模块、测试结果比较模块和测试数据处理模块。缺陷配置模块将用户配置的缺陷配置文件,在测试开始前,发送给嵌入式试验软件,缺陷配置文件中记载有需要给嵌入式试验软件注入的缺陷的类型和数量。测试脚本转化模块将由测试数据生成工具得到的测试用例转化为自动测试平台能识别的测试脚本。测试脚本解析模块识别并解析由测试脚本转化模块转化得到的测试脚本,得到测试输入激励信息和测试辅助信息。测试数据发送与采集模块输出测试输入激励信息和测试辅助信息给嵌入式试验软件,并采集嵌入式试验软件的测试输出信息和测试运行信息。测试结果比较模块根据测试输出信息和预期输出结果是否一致,或软件植入缺陷的路径是否被触发,判断嵌入式试验软件是否出现了问题,若输出信息和预期输出结果不一致,或者植入缺陷的路径被触发,则嵌入式试验软件发生失效。测试数据处理模块将采集的测试输入激励信息和测试输出信息测试信息生成测试结果文件,将测试辅助信息以及测试运行信息生成测试路径文件,将各测试用例的开始时间、执行时间和对应的测试结果生成日志文件。
嵌入式试验软件包括:功能软件模块、缺陷注入模块、数据采集模块和测试辅助模块。功能软件模块用于实现被测嵌入式试验软件的具体各项功能,根据测试输入激励信息运行被测软件,得到测试输出信息。缺陷注入模块为植入被测嵌入式软件中的各缺陷设置了逻辑控制开关,根据缺陷配置文件打开或关闭对应缺陷的逻辑控制开关,在被测嵌入式软件中植入或关闭对应的缺陷。数据采集模块用于在功能软件模块运行时采集测试运行信息,包括路径覆盖、分支覆盖和缺陷覆盖信息。测试辅助模块用于在测试过程中与自动测试平台通讯,从自动测试平台获取缺陷配置文件、测试输入激励信息和测试辅助信息,将收集的测试运行信息以及测试输出信息反馈给自动测试平台。
所述的测试输入激励信息和测试输出信息通过RS422串口线进行传输,所述的缺陷配置文件、测试辅助信息和测试运行信息通过交叉网线进行传输。
本发明提出的一种嵌入式软件的可靠性增长测试自动试验方法,包括如下步骤:
步骤1:自动测试平台中的缺陷配置模块将缺陷配置文件下发给嵌入式试验软件,所述的缺陷配置文件由实验人员配置,记载有需要向嵌入式试验软件注入的缺陷的类型和数量。
步骤2:嵌入式试验软件通过测试辅助模块获取缺陷配置文件,缺陷注入模块根据缺陷配置文件,打开或关闭对应缺陷的逻辑控制开关,将嵌入式试验软件切换为一个注入缺陷的软件。具体缺陷注入模块通过修改表示缺陷的逻辑控制开关的变量来控制缺陷是否植入,所述变量的值为1或0,1表示打开缺陷,0表示关闭缺陷。
步骤3:自动测试平台加载测试数据集,并加载一个测试用例;所述的测试数据集为使用测试数据生成工具得到的测试用例的集合。
步骤4:自动测试平台的测试脚本转化模块将加载的测试用例,转化为自动测试平台能识别的测试脚本形式。
步骤5:自动测试平台的测试脚本解析模块逐行解析转化后的测试脚本,得到的测试输入激励信息和测试辅助信息,然后建立RS422串口线的串口通讯和交叉网线的网络通讯。
步骤6:自动测试平台的测试数据发送与采集模块通过RS422串口线发送测试输入激励信息给嵌入式试验软件,通过交互网线发送测试辅助信息给嵌入式试验软件。
步骤7:嵌入式试验软件通过功能软件模块执行接收到的测试输入激励信息,功能软件模块输出测试输出信息,测试辅助模块通过RS422串口线将测试输出信息返回给自动测试平台,在功能软件模块执行过程中,嵌入式试验软件的数据采集模块采集包括路径覆盖、分支覆盖和缺陷覆盖的测试执行信息,测试辅助模块通过交叉网线将测试执行信息传送给自动测试平台。
步骤8:自动测试平台的测试结果比较模块判断收到的测试输出信息是否与对应的预期输出结果一致,或者软件植入缺陷的路径是否被触发,若测试输出信息和预期的输出结果不一致或者植入缺陷的路径被触发,则嵌入式试验软件出现失效,发现了缺陷,执行步骤9,否则,嵌入式试验软件测试通过,执行步骤10。
步骤9:记录失效信息,并排除该缺陷,具体是下发新的缺陷配置文件给嵌入式试验软件,在新的缺陷配置文件中,将所发现的缺陷的逻辑控制开关的变量设置为0,嵌入式试验软件根据新的缺陷配置文件,关闭相应的缺陷的逻辑控制开关,然后重新加载当前引起失效的测试用例,转步骤4执行。
步骤10:将测试用例执行的测试结果文件和执行路径文件保存起来。
步骤11,判断测试数据集中的测试用例是否执行完毕,若没有,则加载下一个测试用例,然后转步骤4执行,若执行完毕,则生成本次测试的日志文件,然后结束本次测试。
本发明与现有技术相比,具有以下明显的优势和有益效果:
利用本发明的测试装置以及方法进行测试时,测试人员只需要根据相应的测试需求生成测试数据,同时确定缺陷注入的类型和个数生成缺陷配置文件。然后再通过测试平台下发缺陷配置文件,加载测试数据集,即可自动批量执行,实现嵌入式软件可靠性增长测试自动试验,极大地减少了测试时间和测试人员精力,从而提高了测试效率。并且除了自动批量执行测试用例外,还可在测试过程中收集相关数据,自动生成相关文件以供后续分析,为嵌入式软件可靠性相关研究提供验证支持和数据支持。
附图说明
图1是本发明自动试验装置的整体架构图;
图2是本发明自动试验方法的整体流程图;
图3是本发明的日志文件的一个实例图;
图4是本发明方法测试结果文件的一个实例图;
图5是本发明方法的测试路径文件的一个实例图;
图6是本发明方法实例的运行界面示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步的详细和深入描述。
本发明的嵌入式软件的可靠性增长测试自动试验装置及其方法,建立在对被测软件进行缺陷注入的思想上,基本思路是对应的测试平台通过解析测式脚本,将其中的输入激励分离出来得到相关信号,通过硬件接口与被测软件交互,同时收集被测软件反馈的测试相关信息,然后根据预先设定的条件进行判断,如发现缺陷则予以自动排除,实现可靠性增长测试过程。基于宿主机开发典型的嵌入式软件作为被测软件,该软件具有较为通用的硬件接口,完整的功能和文档,并且便于一些试验数据的采集和自动设置,运行于目标机上;而对应的指的测试平台则运行于宿主机上,能根据被测软件的要求组织被测软件的输入和反馈单元,驱动被测软件运行,同时接收和处理被测软件的反馈和输出结果,从而形成对被测的嵌入式软件的自动、实时、闭环测试。
如图1所示,本发明的嵌入式软件可靠性增长测试自动试验装置的整体架构包括布置在宿主机上的自动测试平台1和布置在目标机上的嵌入式试验软件2。嵌入式试验软件2运行于目标机上,在该软件中已经注入了一些缺陷。嵌入式试验软件2能够对自动测试平台1传送来的激励信息进行处理并返回相关结果信息和失效信息。
具体嵌入式试验模块2中包括:
功能软件模块21,实现了被测嵌入式软件的具体各项功能,即使脱离自动测试平台1,功能软件模块21仍是一个完整的软件,也能够处理相应的命令数据。功能软件模块21运行自动测试平台1发送来的测试输入激励信息,输出测试输出信息给测试辅助模块24。
缺陷注入模块22,用于完成在被测嵌入式软件中植入缺陷的功能,可实现被测嵌入式软件的程序在正确与缺陷注入之间的切换。缺陷注入模块22为植入被测嵌入式软件中的各缺陷设置了逻辑控制开关,通过更改逻辑控制开关的变量的值控制逻辑控制开关的打开与否,进而打开或者关闭对应的缺陷。此外,它在已经注入缺陷的路径中植入触发器,以记录测试中缺陷是否被触发。当测试辅助模块24收到自动测试平台发送过来的缺陷配置文件时,缺陷注入模块22根据缺陷配置文件中记载的缺陷类型和数量,控制功能软件模块21中已注入的缺陷的逻辑控制开关打开或关闭,将缺陷配置文件中所记载的缺陷类型对应的逻辑控制开关的变量修改为1,1表示打开缺陷,若关闭某个缺陷,将该缺陷的逻辑控制开关变量修改为0即可。
数据采集模块23用于在功能软件模块21运行时采集软件运行的情况,得到包括路径覆盖、分支覆盖、缺陷覆盖等信息的测试运行信息,以辅助后期的数据分析。
测试辅助模块24用于测试过程中与自动测试平台1通讯,如获取缺陷配置文件和测试输入激励信息数据,将测试输出信息和收集的软件的测试运行信息,包括路径覆盖信息、分支覆盖信息和缺陷覆盖信息等,通过串口和网络通信反馈给自动测试平台1。
自动测试平台1运行于宿主机上,将用户提供的测试用例数据进行脚本转化、解析并执行,还有进行缺陷配置、记录失效信息以及分析测试结果等,主要包括下面五个模块:
缺陷配置模块11通过交互网线下发缺陷配置文件给嵌入式试验软件2,以控制嵌入式试验软件2需注入缺陷的类型和数量,所述的缺陷配置文件由用户根据测试需要编写,其中包含需要注入的缺陷类型和数量。
测试脚本转化模块12,将由测试数据生成工具得到的测试用例转化为自动测试平台1能够识别的测试脚本。
测试脚本解析模块13,负责自动识别并解析由测试脚本转化模块12转化得到的测试脚本,得到测试输入激励信息和测试辅助信息。
测试数据发送与采集模块14,将测试输入激励信息通过RS422串口线发送给嵌入式试验软件2并采集嵌入式试验软件2反馈的测试输出信息,将测试辅助信息通过交叉网线发送给嵌入式试验软件2,并接收嵌入式试验软件2发送来的测试运行信息。
测试结果比较模块15,读取测试数据发送与采集模块14采集的嵌入式试验软件2的测试输出信息,根据测试输出信息和输入信息的预期输出结果是否一致,或软件植入缺陷的路径是否被触发,判断嵌入式试验软件2是否出现了问题,若测试输出信息和预期的输出结果不一致或者植入缺陷的路径被触发,则嵌入式试验软件2出现失效。测试数据处理模块16负责收集测试信息,并按照事先约定好的文件格式写入对应的文件,生成测试结果文件、测试路径文件和日志文件。
宿主机和目标机之间是通过RS422串口线和交叉网线两条线路相连。其中,RS422串口线负责传送嵌入式试验软件2所需的测试输入激励信息以及接收嵌入式试验软件2反馈的测试输出信息;交叉网线负责传送和接收测试相关信息,包括缺陷配置文件、测试辅助信息和测试运行信息。测试辅助信息是测试为了将输入输出对应上,包括用例号,某一个测试用例对应的激励号,以及需要重启时的重启标志。测试运行信息包括用例号、输入激励号、测试路径、缺陷号和缺陷路径。测试输出信息是嵌入式试验软件2根据测试输入激励信息运行测试用例得到的输出结果。测试输入激励信息是指测试用例中控制嵌入式试验软件2功能执行的信息,是一串十六进制的数,比如21174840,其中包含的信息有源、目的、控制字、传递信息4个方面。两条链路互不影响,却又相辅相成,按照约定的通信协议来执行测试,从而实现测试过程的实时通讯。
可靠性增长测试过程是发现缺陷并排除缺陷的过程,关于这点本发明所述方法具体实现如下:分析嵌入式试验软件2的功能特性,总结不同类型的可能存在的缺陷;然后在嵌入式试验软件2中设有逻辑控制开关,实现正确程序和注入缺陷路径的切换,并在已经注入缺陷的路径中植入触发器,以记录测试中缺陷是否被触发;另外,所需注入缺陷的类型和数量则由自动测试平台1控制,它可将缺陷配置文件下发给嵌入式试验软件2,以实现逻辑控制开关的开、关(即缺陷注入与否);因测试过程中嵌入式试验软件2可采集注入缺陷的程序路径是否走到、缺陷是否触发等信息并传送给自动测试平台1,自动测试平台1可据此下发新的缺陷配置文件来关上所发现缺陷的逻辑控制开关,即排除所发现缺陷。
实施所述自动试验方法前,应进行如下部署:利用可靠性测试数据生成工具生成测试数据;根据嵌入式试验软件2的特性,确定可靠性增长测试终止条件;确定所需配置缺陷的类型和个数,生成缺陷配置文件;
实施自动试验方法时,实验人员只需下发已生成的缺陷配置文件,加载已生成的测试数据,如图2所示,基于上述的自动实验装置,本发明的可靠性增长测试自动试验方法具体步骤如下:
步骤1,自动测试平台1中的缺陷配置模块11将缺陷配置文件下发给嵌入式试验软件2。所述的缺陷配置文件由实验人员配置,其中包含有需要向嵌入式试验软件2注入的缺陷的类型和数量。
步骤2,嵌入式试验软件2通过测试辅助模块24获取缺陷配置文件,缺陷注入模块22根据缺陷配置文件修改所需注入的缺陷的逻辑控制开关的变量的值,打开或关闭对应缺陷的逻辑控制开关,将嵌入式试验软件2切换为一个注入缺陷的软件。
步骤3,自动测试平台1加载测试数据集,并加载一个测试用例。所述的测试数据集为使用测试数据生成工具得到的测试用例的集合。
步骤4,自动测试平台1的测试脚本转化模块12将加载的测试用例,转化为自动测试平台1可识别的测试脚本形式。将测试用例转化为自动测试平台1可识别的测试脚本,具体是指遍历该测试用例文件,提取所需要的信息,然后按照约定号的格式生成TXT文件,所生成的TXT文件能够被自动测试平台1识别。
步骤5,自动测试平台1的测试脚本解析模块13逐行解析转化后的测试脚本,得到测试输入激励信息和测试辅助信息。本步骤中还将完成硬件接口通讯,即建立RS422串口线的串口通讯和交叉网线的网络通讯。
步骤6,自动测试平台1的测试数据发送与采集模块14通过RS422串口线发送测试输入激励信息给嵌入式试验软件2,通过交互网线发送测试辅助信息给嵌入式试验软件2。
步骤7,嵌入式试验软件2通过功能软件模块21处理接收到的测试输入激励信息,将处理后得到的测试输出信息由测试辅助模块24通过RS422串口线返回给自动测试平台1,同时嵌入式试验软件2的数据采集模块23采集软件运行的相关信息,包括路径覆盖、分支覆盖和缺陷覆盖等信息,由测试辅助模块24通过交叉网线传送给自动测试平台1。
步骤8,自动测试平台1的测试结果比较模块15判断采集的嵌入式试验软件2的测试输出信息,是否与对应的测试输入激励信息的预期输出结果一致,或者软件植入缺陷的路径是否被触发,若测试输出信息和预期的输出结果不一致或者植入缺陷的路径被触发,则嵌入式试验软件2出现失效,发现了缺陷,执行步骤9,否则,嵌入式试验软件2测试通过,执行步骤10。
步骤9,如果发现缺陷则记录失效信息,并排除该缺陷,具体是下发新的缺陷配置文件给嵌入式试验软件2,在新的缺陷配置文件中将所发现的缺陷的逻辑控制开关的变量设置为0,嵌入式试验软件2根据新的缺陷配置文件关闭相应的缺陷的逻辑控制开关,然后重新加载当前引起失效的测试用例,转步骤4执行。
步骤10,如果没有发现缺陷,则将测试用例执行的测试结果文件和执行路径文件保存起来。
步骤11,判断测试数据集中的测试用例是否执行完毕,若没有,则加载下一个测试用例,然后转步骤4执行,若执行完毕,则生成本次测试的日志文件,然后结束本次测试。
最后自动测试平台1通过测试数据处理模块16处理测试数据,生成三种文件:日志文件、测试结果文件和测试路径文件。
如图3所示为生成的日志文件,日志文件中记录有各测试用例的开始时间和执行时间以及测试结果,测试结果是指是否测试通过。
如图4所示为测试结果文件,每个测试用例有一个测试结果文件,测试结果文件中记录有该测试用例的用例号、开始时间、结束时间、发送的控制字、预期的状态字和实际收到的状态字等。
如图5所示为测试路径文件,每个测试用例有一个测试路径文件,该测试路径文件中记录有测试用例各控制字执行的路径,包括测试用例的用例号、控制字号、***的桩数和路径编号。
关于测试过程中发现的缺陷号及其所在的用例号,总用例数,总测试时间等失效数据,用户均可从上述这些文件当中获得。日志文件记录的是一次测试的相关信息,这些信息需实时显示在用户操作界面上,便于用户观察。当然,如有需要用户可查阅对应的日志文件。测试结果文件和执行路径文件是一个文件对应一个测试用例,测试结果文件记录的是通过RS422串口线传输的测试输入激励信息和嵌入式试验软件2的测试输出信息,执行路径文件记录的是通过交互网线传输的测试辅助信息和测试运行信息。这两类文件能够帮助用户分析被测嵌入式软件的失效原因、测试用例的路径覆盖情况以及缺陷信息。
下面列举实例来说明本发明自动试验装置及其方法的可行性和有效性。进行测试前,利用可靠性测试数据生成工具TCS软件生成测试数据,初步生成1000个测试用例,分为10组,每组100个测试用例;根据被测嵌入式试验软件2的特性,将两次失效之间所用的测试用例数量达到150个定为可靠性增长测试终止条件;确定配置缺陷的数目和类型:一般缺陷20个,严重缺陷5个。在被测嵌入式试验软件2中注入两种级别的软件缺陷:严重缺陷:妨碍主要功能实现和性能达标;一般缺陷:妨碍次要功能实现。搭建完试验环境后,试验人员只需下发缺陷配置文件及加载测试数据,根据终止条件终止可靠性增长测试。测试过程图见图6。
由TCS工具生成的测试用例为xml文件,数据格式如下,它不能被自动测试平台1识别,需要进行转化:
-<分支约束条件=″无″>
<变量>控制字开头.源=0010</变量>
<变量>控制字开头.目的=0001</变量>
<变量>控制字开头.控制字格式=00010111</变量>
</分支>
TCS生成的测试数据是XML文件格式,并且一个输入激励信息分开为多个数据信息了,由二进制表示,由上面示例可以看到。针对该示例,转化得到的测试脚本的文件名为用例号,形式为.txt文件,由上述测试用例转化得到的测试脚本如下:
1 21174840 12174841 0
2 2114A000 1214A001 0
3 21151000 12151001|14151001 0
//飞机降落过程
具体转化过程是:遍历.xml文件,提取需要的信息,再按照自动测试平台1所需的格式生成.txt文件。.txt文件就是TXT文件。所述的需要的信息是指测试输入激励信息,在本示例中需要的信息就是TCS生成的XML文件中二进制表示的数据,所要生成的.txt文件是将XML文件中二进制表示的数据组合并转换为十二进制的形式,每8位是一个测试输入激励信息。所述生成的.txt文件具有一个约定好的格式:第一列为测试输入激励序号,第二列为测试输入激励信息,第三列为预期输出,第四列为重启标志。
第一列表示用例中的输入激励序号,第二列为由测试平台发送给试验软件的测试输入激励(十六进制),第三列为需要时添加上的由嵌入式试验软件2反馈的预期输出信息(十六进制),最后一列为重启标志,“1”表示要重启试验软件。
为了实现信息同步,自动测试平台1通过网络向嵌入式试验软件2发送测试辅助信息后,同时自动测试平台1由RS422串口向嵌入式试验软件2发送测试输入激励信息。测试辅助信息用一特定结构体表示,该特定结构体包括以下信息:用例号,输入激励号,重启标志。另外,自动测试平台1也接受来自嵌入式试验软件2的反馈测试运行信息和输出信息。所述的测试运行信息采用另一个特定结构体表示,所包含信息为:用例号,输入激励号,测试路径,缺陷号和缺陷路径。
例如从图6中可以看到,第37个用例发现了32号缺陷,接下来自动排除了这个缺陷并重新执行第37个用例,顺利通过。其他的也类似这种情况。
下表为最终测试结果:
表1测试数据
缺陷号 | 用例号 | 失效间隔时间 |
23 | 001 | 25s |
26 | 001 | 32s |
32 | 037 | 1049s |
... | ... | ... |
41 | 161 | 1676s |
48 | 298 | 3663s |
如表1所示,跑完500个测试用例后,发现了19个缺陷。其中第298个用例是最后一个发现缺陷的,所以按照所定的可靠性增长测试终止条件,第447个用例跑完可靠性增长测试试验停止。
通过已有的可靠性评估工具SRET软件,在分析所收集到的失效数据后,选取了GO模型对被测软件的可靠性水平进行估计。结果如下:MTBF为4854.37s。由此可见,本发明的嵌入式软件可靠性增长测试自动试验装置及其方法实现的失效数据的收集以及缺陷注入与管理技术是可行的,所得到的实验数据真实有效,能为课题研究提供数据支持。
实践证明,采用本发明的嵌入式软件可靠性自动测试装置及其方法,只要测试人员熟悉试验平台操作流程,无需进一步的专业知识便可进行可靠性测试。而且该自动测试装置及方法可自动执行大量的测试用例,不但大大地提高了测试效率,也节省了测试时间和人员精力,也使研究所需的试验数据收集变得容易很多。本发明装置及其方法不仅可应用于可靠性增长测试试验研究中,还能用于可靠性验证测试试验以及一些可靠性加速测试试验等其他可靠性相关研究,为它们提供验证支持和试验数据支持。
Claims (5)
1.一种嵌入式软件的可靠性增长测试自动试验装置,包括运行在宿主机上的自动测试平台(1)和运行在目标机上的嵌入式试验软件(2),其特征在于,宿主机和目标机之间通过RS422串口线和交叉网线两条线路相连;
所述的自动测试平台(1)包括:缺陷配置模块(11)、测试脚本转化模块(12)、测试脚本解析模块(13)、测试数据发送与采集模块(14)、测试结果比较模块(15)和测试数据处理模块(16);缺陷配置模块(11)将用户配置的缺陷配置文件,在测试开始前,发送给嵌入式试验软件(2),缺陷配置文件中记载有需要给嵌入式试验软件(2)注入的缺陷的类型和数量;测试脚本转化模块(12)将由测试数据生成工具得到的测试用例转化为自动测试平台(1)能识别的测试脚本;测试脚本解析模块(13)识别并解析由测试脚本转化模块(12)转化得到的测试脚本,得到测试输入激励信息和测试辅助信息;测试数据发送与采集模块(14)输出测试输入激励信息和测试辅助信息给嵌入式试验软件(2),并采集嵌入式试验软件(2)的测试输出信息和测试运行信息;测试结果比较模块(15)根据测试输出信息和预期输出结果是否一致,或软件植入缺陷的路径是否被触发,判断嵌入式试验软件(2)是否出现了问题,若输出信息和预期输出结果不一致,或者植入缺陷的路径被触发,则嵌入式试验软件(2)发生失效;测试数据处理模块(16)将采集的测试输入激励信息和测试输出信息测试信息生成测试结果文件,将测试辅助信息以及测试运行信息生成测试路径文件,将各测试用例的开始时间、执行时间和对应的测试结果生成日志文件;
所述的嵌入式试验软件(2)包括:功能软件模块(21)、缺陷注入模块(22)、数据采集模块(23)和测试辅助模块(24);功能软件模块(21)用于实现被测嵌入式试验软件(2)的具体各项功能,根据测试输入激励信息运行被测软件,得到测试输出信息;缺陷注入模块(22)为植入被测嵌入式软件中的各缺陷设置了逻辑控制开关,根据缺陷配置文件打开或关闭对应缺陷的逻辑控制开关,在被测嵌入式软件中植入或关闭对应的缺陷;数据采集模块(23)用于在功能软件模块(21)运行时采集测试运行信息,包括路径覆盖、分支覆盖和缺陷覆盖信息;测试辅助模块(24)用于在测试过程中与自动测试平台(1)通讯,从自动测试平台(1)获取缺陷配置文件、测试输入激励信息和测试辅助信息,将收集的测试运行信息以及测试输出信息反馈给自动测试平台(1);
所述的测试输入激励信息和测试输出信息通过RS422串口线进行传输,所述的缺陷配置文件、测试辅助信息和测试运行信息通过交叉网线进行传输。
2.根据权利要求1所述的一种嵌入式软件的可靠性增长测试自动试验装置,其特征在于,所述的测试脚本转化模块(12)对测试数据生成工具生成的每个测试用例,遍历该测试用例文件,从中提取测试输入激励信息,然后按照约定好的格式生成TXT文件,所生成的TXT文件就是能够被自动测试平台(1)识别的测试脚本;所述的TXT文件按照约定好的格式形成,格式为:第一列为测试输入激励序号,第二列为具体测试输入激励信息,第三列为预期输出,第四列为重启标志。
3.根据权利要求1所述的一种嵌入式软件的可靠性增长测试自动试验装置,其特征在于,所述的缺陷注入模块(22)通过修改表示缺陷的逻辑控制开关的变量来控制缺陷是否植入,所述变量的值为1或0,1表示打开缺陷,0表示关闭缺陷。
4.应用权利要求1所述的可靠性增长测试自动试验装置的一种嵌入式软件的可靠性增长测试自动试验方法,其特征在于,具体包括如下步骤:
步骤1:自动测试平台(1)中的缺陷配置模块(11)将缺陷配置文件下发给嵌入式试验软件(2),所述的缺陷配置文件由实验人员配置,记载有需要向嵌入式试验软件(2)注入的缺陷的类型和数量;
步骤2:嵌入式试验软件(2)通过测试辅助模块(24)获取缺陷配置文件,缺陷注入模块(22)根据缺陷配置文件,打开或关闭对应缺陷的逻辑控制开关,将嵌入式试验软件(2)切换为一个注入缺陷的软件;具体缺陷注入模块(22)通过修改表示缺陷的逻辑控制开关的变量来控制缺陷是否植入,所述变量的值为1或0,1表示打开缺陷,0表示关闭缺陷;
步骤3:自动测试平台(1)加载测试数据集,并加载一个测试用例;所述的测试数据集为使用测试数据生成工具得到的测试用例的集合;
步骤4:自动测试平台(1)的测试脚本转化模块(12)将加载的测试用例,转化为自动测试平台(1)能识别的测试脚本形式;
步骤5:自动测试平台(1)的测试脚本解析模块(13)逐行解析转化后的测试脚本,得到的测试输入激励信息和测试辅助信息,然后建立RS422串口线的串口通讯和交叉网线的网络通讯;
步骤6:自动测试平台(1)的测试数据发送与采集模块(14)通过RS422串口线发送测试输入激励信息给嵌入式试验软件(2),通过交互网线发送测试辅助信息给嵌入式试验软件(2);
步骤7:嵌入式试验软件(2)通过功能软件模块(21)执行接收到的测试输入激励信息,功能软件模块(21)输出测试输出信息,测试辅助模块(24)通过RS422串口线将测试输出信息返回给自动测试平台(1),在功能软件模块(21)执行过程中,嵌入式试验软件(2)的数据采集模块(23)采集包括路径覆盖、分支覆盖和缺陷覆盖的测试执行信息,测试辅助模块(24)通过交叉网线将测试执行信息传送给自动测试平台(1);
步骤8:自动测试平台(1)的测试结果比较模块(15)判断收到的测试输出信息是否与对应的预期输出结果一致,或者软件植入缺陷的路径是否被触发,若测试输出信息和预期的输出结果不一致或者植入缺陷的路径被触发,则嵌入式试验软件(2)出现失效,发现了缺陷,执行步骤9,否则,嵌入式试验软件(2)测试通过,执行步骤10;
步骤9:记录失效信息,并排除该缺陷,具体是下发新的缺陷配置文件给嵌入式试验软件(2),在新的缺陷配置文件中,将所发现的缺陷的逻辑控制开关的变量设置为0,嵌入式试验软件(2)根据新的缺陷配置文件,关闭相应的缺陷的逻辑控制开关,然后重新加载当前引起失效的测试用例,转步骤4执行;
步骤10:将测试用例执行的测试结果文件和执行路径文件保存起来;
步骤11,判断测试数据集中的测试用例是否执行完毕,若没有,则加载下一个测试用例,然后转步骤4执行,若执行完毕,则生成本次测试的日志文件,然后结束本次测试。
5.根据权利要求4所述的一种嵌入式软件的可靠性增长测试自动试验方法,其特征在于,所述的步骤4具体是:自动测试平台(1)的测试脚本转化模块(12)遍历所加载的测试用例文件,从中提取测试输入激励信息,然后按照约定好的格式生成TXT文件,所生成的TXT文件就是能够被自动测试平台(1)识别的测试脚本;所述的TXT文件按照约定好的格式形成,格式为:第一列为测试输入激励序号,第二列为具体测试输入激励信息,第三列为预期输出,第四列为重启标志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110448700.3A CN102402484B (zh) | 2011-11-30 | 2011-12-28 | 一种嵌入式软件的可靠性增长测试自动试验装置及其方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110390420 | 2011-11-30 | ||
CN201110390420.1 | 2011-11-30 | ||
CN201110448700.3A CN102402484B (zh) | 2011-11-30 | 2011-12-28 | 一种嵌入式软件的可靠性增长测试自动试验装置及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402484A true CN102402484A (zh) | 2012-04-04 |
CN102402484B CN102402484B (zh) | 2014-04-02 |
Family
ID=45884708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110448700.3A Expired - Fee Related CN102402484B (zh) | 2011-11-30 | 2011-12-28 | 一种嵌入式软件的可靠性增长测试自动试验装置及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402484B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678855A (zh) * | 2012-09-26 | 2014-03-26 | 无锡南理工科技发展有限公司 | 一种基于多个指标维度复合距离的模型评价方法 |
CN105335177A (zh) * | 2014-07-23 | 2016-02-17 | 比亚迪股份有限公司 | 嵌入式***的测试方法、测试装置和测试*** |
WO2017071127A1 (zh) * | 2015-10-30 | 2017-05-04 | 同济大学 | 一种基于分支进程的模型一致性分析方法及*** |
CN107544463A (zh) * | 2017-09-08 | 2018-01-05 | 北京新能源汽车股份有限公司 | 一种车用控制器诊断功能的自动测试方法及测试装置 |
CN107977315A (zh) * | 2017-12-07 | 2018-05-01 | 中国航发控制***研究所 | 一种基于Bootloader方式的嵌入式软件目标码单元测试方法 |
CN108038052A (zh) * | 2017-11-27 | 2018-05-15 | 平安科技(深圳)有限公司 | 自动化测试管理方法、装置、终端设备及存储介质 |
CN109271306A (zh) * | 2018-09-30 | 2019-01-25 | 深圳中广核工程设计有限公司 | 基于故障注入的寿命试验方法、装置、设备及介质 |
CN109885488A (zh) * | 2019-01-30 | 2019-06-14 | 上海卫星工程研究所 | 用例表驱动的卫星轨道计算软件自动化测试方法及*** |
CN110851366A (zh) * | 2019-11-18 | 2020-02-28 | 中国银行股份有限公司 | 一种回归测试的实现方法及装置 |
CN111176998A (zh) * | 2019-12-25 | 2020-05-19 | 中国航空工业集团公司西安飞机设计研究所 | 一种液压控制软件的配置项测试方法 |
CN111367259A (zh) * | 2020-03-17 | 2020-07-03 | 四川九洲电器集团有限责任公司 | 一种低成本数字信号处理模块自动测试装置和方法 |
CN113626266A (zh) * | 2021-07-19 | 2021-11-09 | 厦门亿联网络技术股份有限公司 | 一种嵌入式串口测试方法及装置 |
CN115629996A (zh) * | 2022-12-21 | 2023-01-20 | 深圳市微克科技有限公司 | 一种嵌入式软件自动化测试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162426A (zh) * | 2007-11-15 | 2008-04-16 | 中兴通讯股份有限公司 | 基于数据驱动的测试用例设计测试方法及自动测试平台 |
CN101739334A (zh) * | 2008-11-21 | 2010-06-16 | 上海科梁信息工程有限公司 | 嵌入式软件自动化测试方法 |
-
2011
- 2011-12-28 CN CN201110448700.3A patent/CN102402484B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162426A (zh) * | 2007-11-15 | 2008-04-16 | 中兴通讯股份有限公司 | 基于数据驱动的测试用例设计测试方法及自动测试平台 |
CN101739334A (zh) * | 2008-11-21 | 2010-06-16 | 上海科梁信息工程有限公司 | 嵌入式软件自动化测试方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678855A (zh) * | 2012-09-26 | 2014-03-26 | 无锡南理工科技发展有限公司 | 一种基于多个指标维度复合距离的模型评价方法 |
CN105335177A (zh) * | 2014-07-23 | 2016-02-17 | 比亚迪股份有限公司 | 嵌入式***的测试方法、测试装置和测试*** |
WO2017071127A1 (zh) * | 2015-10-30 | 2017-05-04 | 同济大学 | 一种基于分支进程的模型一致性分析方法及*** |
CN107544463A (zh) * | 2017-09-08 | 2018-01-05 | 北京新能源汽车股份有限公司 | 一种车用控制器诊断功能的自动测试方法及测试装置 |
CN107544463B (zh) * | 2017-09-08 | 2019-12-13 | 北京新能源汽车股份有限公司 | 一种车用控制器诊断功能的自动测试方法及测试装置 |
CN108038052A (zh) * | 2017-11-27 | 2018-05-15 | 平安科技(深圳)有限公司 | 自动化测试管理方法、装置、终端设备及存储介质 |
WO2019100577A1 (zh) * | 2017-11-27 | 2019-05-31 | 平安科技(深圳)有限公司 | 自动化测试管理方法、装置、终端设备及存储介质 |
CN107977315B (zh) * | 2017-12-07 | 2021-02-09 | 中国航发控制***研究所 | 一种基于Bootloader方式的嵌入式软件目标码单元测试方法 |
CN107977315A (zh) * | 2017-12-07 | 2018-05-01 | 中国航发控制***研究所 | 一种基于Bootloader方式的嵌入式软件目标码单元测试方法 |
CN109271306A (zh) * | 2018-09-30 | 2019-01-25 | 深圳中广核工程设计有限公司 | 基于故障注入的寿命试验方法、装置、设备及介质 |
CN109885488A (zh) * | 2019-01-30 | 2019-06-14 | 上海卫星工程研究所 | 用例表驱动的卫星轨道计算软件自动化测试方法及*** |
CN109885488B (zh) * | 2019-01-30 | 2022-03-18 | 上海卫星工程研究所 | 用例表驱动的卫星轨道计算软件自动化测试方法及*** |
CN110851366A (zh) * | 2019-11-18 | 2020-02-28 | 中国银行股份有限公司 | 一种回归测试的实现方法及装置 |
CN111176998A (zh) * | 2019-12-25 | 2020-05-19 | 中国航空工业集团公司西安飞机设计研究所 | 一种液压控制软件的配置项测试方法 |
CN111176998B (zh) * | 2019-12-25 | 2023-05-23 | 中国航空工业集团公司西安飞机设计研究所 | 一种液压控制软件的配置项测试方法 |
CN111367259A (zh) * | 2020-03-17 | 2020-07-03 | 四川九洲电器集团有限责任公司 | 一种低成本数字信号处理模块自动测试装置和方法 |
CN111367259B (zh) * | 2020-03-17 | 2021-09-14 | 四川九洲电器集团有限责任公司 | 一种低成本数字信号处理模块自动测试装置和方法 |
CN113626266A (zh) * | 2021-07-19 | 2021-11-09 | 厦门亿联网络技术股份有限公司 | 一种嵌入式串口测试方法及装置 |
CN115629996A (zh) * | 2022-12-21 | 2023-01-20 | 深圳市微克科技有限公司 | 一种嵌入式软件自动化测试方法 |
CN115629996B (zh) * | 2022-12-21 | 2023-03-10 | 深圳市微克科技有限公司 | 一种嵌入式软件自动化测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102402484B (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402484B (zh) | 一种嵌入式软件的可靠性增长测试自动试验装置及其方法 | |
CN102291277B (zh) | 智能变电站间隔装置的自动测试***及方法 | |
CN107704392A (zh) | 一种测试用例的处理方法及服务器 | |
CN102014016A (zh) | 一种网络协议缺陷测试***及方法 | |
CN108052451A (zh) | 测试方法、***、测试服务器、测试终端及存储介质 | |
CN104007348B (zh) | 自动化测试***及其方法 | |
CN105095059B (zh) | 一种自动化测试的方法和装置 | |
CN106452843B (zh) | 一种在轨1553b总线网络故障监测诊断方法 | |
CN106802862A (zh) | 列车运行控制***安全关键软件自动测试平台 | |
CN106095673A (zh) | 基于web接口的自动化测试方法及*** | |
CN104065528A (zh) | 用于分析和检验多个网络设备的功能性的方法和装置 | |
CN104915262B (zh) | 一种基于excel数据结构的校验***及其方法 | |
CN106951368A (zh) | 基于uml时序图的测试用例自动生成方法 | |
CN102323499A (zh) | 一种继电保护设备实现自动化测试的方法 | |
CN109765447A (zh) | 一种智能变电站继电保护自动测试方法 | |
CN109274178B (zh) | 一种电力调度前置运行信息的自动化分析***和方法 | |
CN108767818B (zh) | 一种基于虚拟保信主站的继电保护调试***及调试方法 | |
CN105141441B (zh) | 一种ip网络图形化配置的方法 | |
CN104133771B (zh) | 一种测试方法及装置 | |
CN106682036A (zh) | 一种数据交换***及其交换方法 | |
CN100458731C (zh) | 一种采用硬件逻辑对ic设计进行验证的方法 | |
CN106201757A (zh) | 一种异常处理方法和装置 | |
CN110134795A (zh) | 生成验证问题组的方法、装置、计算机设备和存储介质 | |
CN102750301A (zh) | 针对aadl描述的综合化航电***模型的蓝图生成方法 | |
CN103530209B (zh) | 一种密码键盘自动化测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140402 Termination date: 20141228 |
|
EXPY | Termination of patent right or utility model |