CN110688313A - 一种VxWorks操作***下软件测试的故障注入方法 - Google Patents
一种VxWorks操作***下软件测试的故障注入方法 Download PDFInfo
- Publication number
- CN110688313A CN110688313A CN201910915607.5A CN201910915607A CN110688313A CN 110688313 A CN110688313 A CN 110688313A CN 201910915607 A CN201910915607 A CN 201910915607A CN 110688313 A CN110688313 A CN 110688313A
- Authority
- CN
- China
- Prior art keywords
- software
- fault
- test
- target system
- tool
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明涉及一种VxWorks操作***下软件测试的故障注入方法,涉及嵌入式软件测试和VxWorks操作***技术领域。本发明通过在软件源代码中增加测试代码的方式,能够实现在特定的位置和特定的时刻对软件源代码中的全局变量、局部变量、寄存器、堆栈以及软件接口等的故障注入和测试,提高软件的测试覆盖率和可靠性。该方法不需要修改原有的软件源代码,也不需要额外的监控器设备,只是在软件运行时,根据故障注入的时间和位置增加部分测试软件源代码,通过增加的这部分代码,可以实现软件运行过程中动态地改变代码中关键的全局变量、局部变量、寄存器、硬件地址和软件接口等信息内容,完成软件故障注入测试。
Description
技术领域
本发明涉及嵌入式软件测试和VxWorks操作***技术领域,具体涉及一种VxWorks操作***下软件测试的故障注入方法。
背景技术
将故障注入技术作为软件测试技术,一般来讲是制定特定的故障模型,采用人为的、有意识的方式产生故障,并施加于待测***中,用来加速该***的错误和失效的产生,同时观测并反馈对所注入故障的响应信息,通过分析对***进行验证和评价的过程。基于软件的故障注入通常是根据故障模型,通过修改目标***的内存映像来模拟***硬件或软件故障的发生,按故障注入的时刻可分为运行前注入和运行时注入。
目前基于嵌入式***软件故障注入的测试方法有以下几种:
(1)直接修改源程序的静态故障注入方法。该方法直接修改被测***源代码模拟故障产生,不需要额外接口资源和监控软件,属于运行前注入故障的方式。该方法容易模拟永久故障,模拟时序相关的故障逻辑时,需要编写复杂的故障模拟代码,费时费力,且易引入新的故障,不满足灵活性和重用性要求;
(2)软件开发环境支持的故障注入方法。该方法适用于软件开发人员在编码、调试阶段通过设置断点来修改内存或寄存器内容产生所需的故障,具有简单灵活的特点。但是由于设置断点会导致测试不能连续运行,对于涉及多任务和中断处理的软件,很难测试任务之间或中断处理与主流程之间的相互影响;
(3)设计运行时的软件故障注入器,利用故障脚本描述语言、故障库和故障注入器算法获取故障现场的信息。该方法能够有效的将故障注入被测软件中,便于捕捉并重现故障信息。但是上述方法的实现比较复杂,通常需要设计主控制器、故障注入器、脚本解析器、监视器、数据采集器和数据收集器等,技术门槛较高,还需要针对不同类型的故障注入模型设计相应的故障注入器算法,灵活性较差。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:针对目前基于嵌入式***软件故障注入的测试方法中存在的不足,提出一种在VxWorks操作***下软件测试的故障注入方法,以在软件测试过程中有效获得故障现场信息。
(二)技术方案
为了解决上述技术问题,本发明提供了一种VxWorks操作***下软件测试的故障注入方法,包括以下步骤:
S1、建立软件故障测试用例库;
S2、通过telnet工具或Shell工具向目标***注入故障。
优选地,步骤S1具体为:对嵌入式软件进行功能故障树分析,通过***级和详细级失效模式及影响分析,最终从软件源代码中识别出特定关键的全局变量、局部变量、寄存器、硬件地址和软件接口这些信息;然后基于识别出的这些信息进行软件测试用例设计,形成软件故障测试用例库。
优选地,步骤S2中,在telnet工具、Shell工具或串口工具中键入一些特定的指令完成向目标***的故障注入,这些指令是根据故障测试用例而自定义的不同函数,在每个函数内完成对全局变量的赋值,用这种方法实现故障的动态注入。
优选地,步骤S2具体为:在目标***软件源代码中增加消息队列B和任务T1,该任务用于接收消息队列B中的故障测试用例,并根据每个故障测试用例的功能和性能要求,增加对应的函数,每个函数的功能是向消息队列B发送对应的故障测试用例,故障测试用例是按照约定的网络通讯协议制定的指令报文。
优选地,所述指令报文用于实现单点故障测试,或故障序列测试。
优选地,所述指令报文用于实现单点故障测试,或故障序列测试。
优选地,步骤S2具体包括:在目标***源代码初始化时,启动任务T1,在telnet工具或Shell工具或串口工具中键入一些特定的指令,每一个指令均由一个具体的函数实现,该函数完成向消息队列B发送指令报文,用于设置XXX_Debug的值为TRUE,并通知目标***给相关的全局变量赋值;目标***在任务T1中收到消息队列B中的数据后,通过解析该报文内容,将报文中涉及到的每个XXX_Debug的值设置为TRUE,并直接修改目标***软件源代码中相关全局变量的值,然后目标***按照该故障测试用例设置的故障时序或故障测试路径完成软件测试工作,执行完一条故障测试用例后,在telnet工具或Shell工具或串口工具中键入特定的函数名,该函数用于通知目标***将每个XXX_Debug的值设置为FALSE,将全局变量的值设置为初始值。
优选地,在步骤S2之后还包括步骤S3、目标***记录测试结果并进行数据分析。
优选地,步骤S3中,目标***收集故障注入后带故障运行时的***状态信息,以***日志的方式进行记录。
(三)有益效果
本发明通过在软件源代码中增加测试代码的方式,能够实现在特定的位置和特定的时刻对软件源代码中的全局变量、局部变量、寄存器、堆栈以及软件接口等的故障注入和测试,提高软件的测试覆盖率和可靠性。该方法不需要修改原有的软件源代码,也不需要额外的监控器设备,只是在软件运行时,根据故障注入的时间和位置增加部分测试软件源代码,通过增加的这部分代码,可以实现软件运行过程中动态地改变代码中关键的全局变量、局部变量、寄存器、硬件地址和软件接口等信息内容,完成软件故障注入测试。该方法实现简单,对被测试目标***软件影响较小,极大地提高了嵌入式软件的容错性、可靠性和安全性。
附图说明
图1为本发明的软件测试故障注入流程图;
图2为本发明的软件测试故障注入的原理图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
针对目前软件测试过程中难以有效获得故障现场信息的问题,本发明提出了一种VxWorks操作***下软件测试的故障注入方法。该方法首先通过对嵌入式软件建立详细级失效模式及影响分析,建立软件故障测试用例库;然后利用telnet工具或Shell工具或串口工具向目标***键入一些特定的指令,完成向目标***的动态故障注入;最后对故障运行前后的测试结果进行分析和评估,能够实现在特定的位置和特定的时刻对软件源代码中的全局变量、局部变量、寄存器、堆栈以及软件接口等的故障注入和测试。如图1、图2所示,该方法具体包括以下步骤:
S1、建立软件故障测试用例库
对嵌入式软件进行功能故障树分析,通过***级和详细级失效模式及影响分析,最终从软件源代码中识别出关键的全局变量、局部变量、寄存器、硬件地址和软件接口等信息;然后基于识别出的这些信息进行软件测试用例设计,形成软件故障测试用例库;
S2、通过telnet工具或Shell工具向目标***注入故障,本步骤中,在telnet工具、Shell工具或串口工具中键入一些特定的指令完成向目标***的故障注入,这些指令是由测试人员根据故障测试用例而自定义的不同函数,在每个函数内完成对全局变量的赋值,用这种方法实现故障的动态注入。具体包括步骤:
S21、如果软件源代码从寄存器、硬件地址或是软件接口中读取的信息保存在局部变量A中,则在软件源代码中局部变量A获得当前寄存器、硬件地址或是软件接口中的信息后增加如下代码:
if(TRUE==XXX_Debug)
A=Global_XXX;
上述Global_XXX为全局变量名称,XXX_Debug初始情况下的值为FALSE(即不改变当前获得的A的值),只有在接收到来自telnet工具、Shell工具或串口工具的指令后才将XXX_Debug的值设置为TRUE;
S22、在目标***软件源代码中增加消息队列B和任务T1,并根据每个故障测试用例的功能和性能要求,增加对应的函数,每个函数的功能是向消息队列B发送对应的故障测试用例,故障测试用例是按照约定的网络通讯协议制定的报文,该报文可以实现单点故障(仅有一个变量、寄存器或硬件地址内容异常)测试,也可以完成故障序列测试;
在目标***源代码初始化时,启动任务T1,该任务用于接收消息队列B中的故障测试用例,软件测试人员在telnet工具或Shell工具或串口工具中键入一些特定的指令,每一个指令均由一个具体的函数实现,该函数完成向消息队列B发送指令报文,用于设置XXX_Debug的值为TRUE,并通知目标***给相关的全局变量赋值;目标***软件在任务T1中收到消息队列B中的数据后,通过解析该报文内容,将报文中涉及到的每个XXX_Debug的值设置为TRUE,并直接修改目标***软件源代码中相关全局变量的值。上述操作完成后,目标***按照该故障测试用例设置的故障时序或故障测试路径完成软件测试工作。执行完一条故障测试用例后,在telnet工具或Shell工具或串口工具中键入特定的函数名,该函数用于通知目标***将每个XXX_Debug的值设置为FALSE,将全局变量的值设置为初始值;
S3、记录测试结果并进行数据分析
目标***既要记录无故障运行时的***状态信息,也要收集故障注入后带故障运行时的***状态信息,以***日志的方式进行记录,便于软件测试人员事后对数据进行分析。
在对目标***进行故障注入前,目标***本身应带有数据记录功能,在***中的关键的状态和参数发生变化时,记录相关的参数数据。在进行故障注入后,由于测试人员人为的改变了***状态(比如硬件地址中的内容、全局变量的值、软件接口数据等),目标***应记录故障注入后的***状态信息。在执行完故障注入后,对故障注入前后的记录数据进行分析和评估,用于辅助决策目标***软件是否执行正常。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种VxWorks操作***下软件测试的故障注入方法,其特征在于,包括以下步骤:
S1、建立软件故障测试用例库;
S2、通过telnet工具或Shell工具向目标***注入故障。
2.如权利要求1所述的方法,其特征在于,步骤S1具体为:对嵌入式软件进行功能故障树分析,通过***级和详细级失效模式及影响分析,最终从软件源代码中识别出特定关键的全局变量、局部变量、寄存器、硬件地址和软件接口这些信息;然后基于识别出的这些信息进行软件测试用例设计,形成软件故障测试用例库。
3.如权利要求2所述的方法,其特征在于,步骤S2中,在telnet工具、Shell工具或串口工具中键入一些特定的指令完成向目标***的故障注入,这些指令是根据故障测试用例而自定义的不同函数,在每个函数内完成对全局变量的赋值,用这种方法实现故障的动态注入。
4.如权利要求3所述的方法,其特征在于,步骤S2具体为:在目标***软件源代码中增加消息队列B和任务T1,该任务用于接收消息队列B中的故障测试用例,并根据每个故障测试用例的功能和性能要求,增加对应的函数,每个函数的功能是向消息队列B发送对应的故障测试用例,故障测试用例是按照约定的网络通讯协议制定的指令报文。
5.如权利要求4所述的方法,其特征在于,所述指令报文用于实现单点故障测试,或故障序列测试。
6.如权利要求4所述的方法,其特征在于,所述指令报文用于实现单点故障测试,或故障序列测试。
7.如权利要求4所述的方法,其特征在于,步骤S2具体包括:在目标***源代码初始化时,启动任务T1,在telnet工具或Shell工具或串口工具中键入一些特定的指令,每一个指令均由一个具体的函数实现,该函数完成向消息队列B发送指令报文,用于设置XXX_Debug的值为TRUE,并通知目标***给相关的全局变量赋值;目标***在任务T1中收到消息队列B中的数据后,通过解析该报文内容,将报文中涉及到的每个XXX_Debug的值设置为TRUE,并直接修改目标***软件源代码中相关全局变量的值,然后目标***按照该故障测试用例设置的故障时序或故障测试路径完成软件测试工作,执行完一条故障测试用例后,在telnet工具或Shell工具或串口工具中键入特定的函数名,该函数用于通知目标***将每个XXX_Debug的值设置为FALSE,将全局变量的值设置为初始值。
8.如权利要求1至7中任一项所述的方法,其特征在于,在步骤S2之后还包括步骤S3、目标***记录测试结果并进行数据分析。
9.如权利要求8所述的方法,其特征在于,步骤S3中,目标***收集故障注入后带故障运行时的***状态信息,以***日志的方式进行记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910915607.5A CN110688313B (zh) | 2019-09-26 | 2019-09-26 | 一种VxWorks操作***下软件测试的故障注入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910915607.5A CN110688313B (zh) | 2019-09-26 | 2019-09-26 | 一种VxWorks操作***下软件测试的故障注入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688313A true CN110688313A (zh) | 2020-01-14 |
CN110688313B CN110688313B (zh) | 2022-11-18 |
Family
ID=69110306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910915607.5A Active CN110688313B (zh) | 2019-09-26 | 2019-09-26 | 一种VxWorks操作***下软件测试的故障注入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688313B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111870938A (zh) * | 2020-07-09 | 2020-11-03 | 天津津航计算技术研究所 | vxworks***下基于windml的操纵杆串口驱动设计方法 |
CN113238898A (zh) * | 2021-04-30 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多任务运行状态与通信接口协同监视调试方法 |
CN112714015B (zh) * | 2020-12-23 | 2023-08-22 | 上海科梁信息科技股份有限公司 | 通信数据故障注入方法及其***、通信设备和存储介质 |
CN117435507A (zh) * | 2023-12-20 | 2024-01-23 | 天津华来科技股份有限公司 | 自适应通用退避测试方法及*** |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1725177A (zh) * | 2004-07-21 | 2006-01-25 | 中国科学院软件研究所 | 嵌入式设备集成开发***及其使用方法 |
CN101933001A (zh) * | 2008-01-31 | 2010-12-29 | 雅虎公司 | 在集群***中执行软件性能测试作业 |
CN101937232A (zh) * | 2010-09-07 | 2011-01-05 | 北京航空航天大学 | 基于多路数据总线的嵌入式实时仿真与故障模拟*** |
CN102541737A (zh) * | 2011-11-30 | 2012-07-04 | 北京航空航天大学 | 一种嵌入式软件可靠性测试缺陷注入与控制方法 |
CN104468267A (zh) * | 2014-11-24 | 2015-03-25 | 国家电网公司 | 一种配电自动化***信息安全渗透测试方法 |
CN104915293A (zh) * | 2015-06-12 | 2015-09-16 | 北京邮电大学 | 软件测试方法及*** |
CN106292336A (zh) * | 2016-10-10 | 2017-01-04 | 上海航天控制技术研究所 | 基于嵌入式VxWorks的卫星姿轨控***的故障模拟***及方法 |
CN106295809A (zh) * | 2016-07-13 | 2017-01-04 | 北京航空航天大学 | 飞机嵌入式实时诊断推理算法试验*** |
CN106502888A (zh) * | 2016-10-13 | 2017-03-15 | 杭州迪普科技股份有限公司 | 软件的测试方法和装置 |
CN109117371A (zh) * | 2018-08-08 | 2019-01-01 | 中国航空工业集团公司雷华电子技术研究所 | 一种提高周期bit验证能力的故障注入方法 |
CN109714355A (zh) * | 2019-01-08 | 2019-05-03 | 中国人民解放***箭军工程大学 | 一种用于VxWorks***的漏洞分析利用方法 |
-
2019
- 2019-09-26 CN CN201910915607.5A patent/CN110688313B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1725177A (zh) * | 2004-07-21 | 2006-01-25 | 中国科学院软件研究所 | 嵌入式设备集成开发***及其使用方法 |
CN101933001A (zh) * | 2008-01-31 | 2010-12-29 | 雅虎公司 | 在集群***中执行软件性能测试作业 |
CN101937232A (zh) * | 2010-09-07 | 2011-01-05 | 北京航空航天大学 | 基于多路数据总线的嵌入式实时仿真与故障模拟*** |
CN102541737A (zh) * | 2011-11-30 | 2012-07-04 | 北京航空航天大学 | 一种嵌入式软件可靠性测试缺陷注入与控制方法 |
CN104468267A (zh) * | 2014-11-24 | 2015-03-25 | 国家电网公司 | 一种配电自动化***信息安全渗透测试方法 |
CN104915293A (zh) * | 2015-06-12 | 2015-09-16 | 北京邮电大学 | 软件测试方法及*** |
CN106295809A (zh) * | 2016-07-13 | 2017-01-04 | 北京航空航天大学 | 飞机嵌入式实时诊断推理算法试验*** |
CN106292336A (zh) * | 2016-10-10 | 2017-01-04 | 上海航天控制技术研究所 | 基于嵌入式VxWorks的卫星姿轨控***的故障模拟***及方法 |
CN106502888A (zh) * | 2016-10-13 | 2017-03-15 | 杭州迪普科技股份有限公司 | 软件的测试方法和装置 |
CN109117371A (zh) * | 2018-08-08 | 2019-01-01 | 中国航空工业集团公司雷华电子技术研究所 | 一种提高周期bit验证能力的故障注入方法 |
CN109714355A (zh) * | 2019-01-08 | 2019-05-03 | 中国人民解放***箭军工程大学 | 一种用于VxWorks***的漏洞分析利用方法 |
Non-Patent Citations (1)
Title |
---|
朱晓燕吴际尚会波: "模型驱动的VxWorks操作***故障注入与鲁棒性测试研究", 《科研信息化技术与应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111870938A (zh) * | 2020-07-09 | 2020-11-03 | 天津津航计算技术研究所 | vxworks***下基于windml的操纵杆串口驱动设计方法 |
CN112714015B (zh) * | 2020-12-23 | 2023-08-22 | 上海科梁信息科技股份有限公司 | 通信数据故障注入方法及其***、通信设备和存储介质 |
CN113238898A (zh) * | 2021-04-30 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多任务运行状态与通信接口协同监视调试方法 |
CN113238898B (zh) * | 2021-04-30 | 2023-06-06 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多任务运行状态与通信接口协同监视调试方法 |
CN117435507A (zh) * | 2023-12-20 | 2024-01-23 | 天津华来科技股份有限公司 | 自适应通用退避测试方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110688313B (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704314B (zh) | 一种嵌入式软件测试的故障注入方法 | |
CN110688313B (zh) | 一种VxWorks操作***下软件测试的故障注入方法 | |
US7908590B1 (en) | System and method for automatically creating test cases through a remote client | |
CN110704315B (zh) | 一种嵌入式软件测试的故障注入装置 | |
CN108182359B (zh) | 一种测试可信环境下api安全性的方法、装置及存储介质 | |
CN107329889B (zh) | 一种c编译器自动化测试的方法 | |
CN104699617A (zh) | 一种游戏用自动化测试方法 | |
CN114168454B (zh) | 一种基于动态插桩-销桩技术的异步测试方法 | |
CN112765032A (zh) | 程序调试方法、装置、设备及存储介质 | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
CN114138670B (zh) | 基于接口自动化测试与功能、性能、安全测试融合的方法 | |
Barbosa et al. | Verification and validation of (real time) COTS products using fault injection techniques | |
CN110633199A (zh) | 用于支持智能合约的区块链的测试装置、方法及介质 | |
Kranzlmüller et al. | NOPE: A nondeterministic program evaluator | |
US8997048B1 (en) | Method and apparatus for profiling a virtual machine | |
CN116107794B (zh) | 一种舰船软件故障自动诊断方法、***及存储介质 | |
CN116909800A (zh) | 崩溃信息的定位方法、崩溃信息的定位装置及存储介质 | |
CN111666200A (zh) | 一种pc软件冷启动耗时的测试方法及终端 | |
CN114116522A (zh) | 一种基于swagger进行接口自动测试的方法 | |
Sharma et al. | Model-based testing: the new revolution in software testing | |
CN110795338B (zh) | 一种基于前后端交互的自动化测试方法、装置及电子设备 | |
Ambrosio et al. | A methodology for designing fault injection experiments as an addition to communication systems conformance testing | |
CN111966589A (zh) | 基于功能测试的bug处理方法、装置和设备 | |
Hwang et al. | Black-box testing tool of railwaysignalling system software with a focus on user convenience | |
Gambi et al. | Action-based test carving for android apps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |