CN105718326A - 嵌入式系统的可恢复性测试方法 - Google Patents
嵌入式系统的可恢复性测试方法 Download PDFInfo
- Publication number
- CN105718326A CN105718326A CN201610054582.0A CN201610054582A CN105718326A CN 105718326 A CN105718326 A CN 105718326A CN 201610054582 A CN201610054582 A CN 201610054582A CN 105718326 A CN105718326 A CN 105718326A
- Authority
- CN
- China
- Prior art keywords
- embedded system
- timer
- restorability
- testing
- test
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0736—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种嵌入式系统的可恢复性测试方法,包括步骤:步骤一,嵌入式系统运行后,启动嵌入式系统的看门狗定时器,向嵌入式系统的当前运行任务随机注入一个测试文件;步骤二,嵌入式系统运行测试文件;以及步骤三,判断嵌入式系统运行测试文件后是否引起嵌入式系统的复位,若引起系统复位,则表示当前测试点出错时是可恢复的,否则表示当前测试点存在不可恢复的错误。本发明的嵌入式系统的可恢复性测试方法能够在嵌入式系统正常运行时对其出错恢复机制进行测试,提高了测试的有效性。
Description
技术领域
本发明涉及软件测试领域,尤其是一种嵌入式系统的可恢复性测试方法。
背景技术
嵌入式系统是指用于执行独立功能的专用计算机系统,它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统必须根据应用需求对软件、硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。嵌入式软件是为嵌入式系统服务的,因此要求嵌入式软件要与外部硬件和设备紧密联系。
随着嵌入式计算机技术的迅猛发展,嵌入式系统在各个行业中得到了越来越广泛的应用,目前已经广泛应用于国防、航空航天、医疗等重要行业中,确保它的稳定可靠是极为重要的任务。嵌入式系统的最大特点是以控制为主,软硬结合、功能性操作、以及模块相互间调用较多,外部工作环境复杂容易受到干扰或干扰别的设备,且执行错误的后果不仅仅是数据错误而是有可能导致不可恢复的灾难。随着当前应用系统规模的增大和复杂度的增加,嵌入式系统的可恢复性测试的成本也直线上升,同时也突出了当前所用测试工具和测试方法的局限性。
现有的对嵌入式系统的可恢复性进行测试的方法主要是以人工测试为主,一般是将嵌入式系统置于极端条件下或是模拟的极端条件下,通过人为的各种强制性手段让嵌入式系统的软件或硬件产生故障,然后检测嵌入式系统是否能够得到正确的恢复。由于人工测试需要耗费大量的人力物力,并且测试案例无法覆盖系统中的所有函数,测试有效性低,测试成本高。尤其是无法覆盖嵌入式系统在运行时的抢占性和随机性。
发明内容
本发明的目的在于提供一种嵌入式系统的可恢复性测试方法,该方法能够在嵌入式系统正常运行时对其出错恢复机制进行测试,提高了测试的有效性。
一种嵌入式系统的可恢复性测试方法,包括步骤:
步骤一,嵌入式系统运行后,启动嵌入式系统的看门狗定时器,向嵌入式系统的当前运行任务随机注入一个测试文件;
步骤二,嵌入式系统运行测试文件;以及
步骤三,判断嵌入式系统运行测试文件后是否引起嵌入式系统的复位,若引起系统复位,则表示当前测试点出错时是可恢复的,否则表示当前测试点存在不可恢复的错误。
进一步地,步骤一具体包括以下步骤:
步骤a,在嵌入式系统运行后,启动第一定时器;以及
步骤b,第一定时器时间计时完毕后,执行第一定时器的中断服务程序;中断服务程序获取嵌入式系统的当前运行任务的地址;
步骤c,退出第一定时器之前,修改第一定时器的中断返回地址,触发嵌入式系统执行测试文件。
进一步地,第一定时器的定时时间在预设的时间范围内随机设定。
进一步地,第一定时器时间计时完毕后,嵌入式系统启动第二定时器;其中第二定时器的定时时间大于看门狗定时器的定时时间。
进一步地,步骤三包括:若在第二定时器计时完毕前,看门狗定时器引起嵌入式系统复位,则测试通过,停止第二定时器的计时;若在第二定时器计时完毕时,看门狗定时器仍然没有引起嵌入式系统复位,则测试失败,执行第二定时器的中断服务程序。
进一步地,步骤三之后还包括步骤:使嵌入式系统恢复执行当前运行任务。
进一步地,第二定时器的定时时间为看门狗定时器的定时时间的2倍。
进一步地,嵌入式系统与一计算机相连接;嵌入式系统向计算机输出系统当前运行的状态信息,计算机通过分析状态信息,判断嵌入式系统的可恢复性。
进一步地,状态信息至少包括嵌入式系统的当前运行任务的相关信息、执行的测试文件信息和测试结果。
进一步地,测试文件为一段无限循环测试代码。
本发明的嵌入式系统的可恢复性测试方法具备以下有益效果:
(1)本发明通过向嵌入式系统注入测试文件的方式,随机触发嵌入式系统的失效条件,对嵌入式系统的出错恢复机制进行测试,从而对嵌入式系统的可恢复性进行测试,提高了测试的有效性;
(2)本发明的嵌入式系统的可恢复性测试方法是在嵌入式系统的运行过程中执行的测试,该测试方法能够覆盖嵌入式系统的抢占性和随机性,因此,能够有效地测试嵌入式系统在实际运行情况下的可恢复性,提高了测试的全面性;
(3)本发明通过随机注入一段错误代码的方式触发嵌入式系统的失效条件,可以实现对嵌入式系统的可恢复性的自动化测试,提高了测试效率。
具体实施方式
下面将结合具体实施例对本发明嵌入式系统的可恢复性测试方法作进一步详细描述。
嵌入式系统通过包括一个或多个MCU(MicrocontrollerUnit,微处理器)或SoC(SystemonChip,片上系统),在MCU或SoC的内部通常设置有硬件的看门狗定时器(WatchdogTimer)。实际上,看门狗定时器是一个硬件计数器,一般给看门狗定时器设置一个定时时间,嵌入式系统开始运行后看门狗定时器开始计时。如果嵌入式系统运行正常,则经过预定时间(该预定时间小于看门狗定时器的定时时间)后嵌入式系统发出指令让看门狗定时器复位,看门狗定时器重新开始计时。如果看门狗定时器定时时间结束则会认为嵌入式系统没有正常工作,看门狗定时器产生一个硬件复位信号或中断信号,强制整个嵌入式系统进行复位。嵌入式系统的基本运行单元称为任务(task),在有些操作系统中称为进程或线程等,在本文统称为任务。看门狗定时器通常会监控嵌入式系统的所有任务是否正常运行,当一个任务出错时,例如任务进入了一个错误的无限循环状态等,看门狗定时器会产生一个硬件复位信息复位MCU或SoC,从而对整个嵌入式系统进行复位。
本发明的嵌入式系统的可恢复性测试方法包括步骤:
步骤S1,在嵌入式系统运行后,启动嵌入式系统的看门狗定时器。
步骤S2,启动第一定时器。其中,第一定时器的定时时间在预设时间范围内随机设定,从而保证了本测试覆盖嵌入式系统的抢占性和随机性。
步骤S3,第一定时器计时完毕后,第一定时器的ISR(InterruptServiceRoutine,中断服务程序)获取嵌入式系统的当前运行任务的地址,通过UART(UniversalAsynchronousReceiver/transmitter,通用异步收发传输器)将嵌入式系统的当前状态信息输出到与嵌入式系统连接的计算机;同时,嵌入式系统启动第二定时器。其中,上述状态信息包括嵌入式系统的当前运行任务的地址。第二定时器的定时时间大于看门狗定时器的定时时间。优选地,第二定时器的定时时间为看门狗定时器的定时时间的2倍。
步骤S4,在退出第一定时器的ISR之前,修改第一定时器的ISR的中断返回地址,使第一定时器的ISR的中断返回地址指向一测试文件,从而触发嵌入式系统执行测试文件。其中,测试文件为一段错误代码,例如一段无限循环代码,可导致嵌入式系统运行出错。
步骤S5,在第二定时器的定时时间范围内,通过判断嵌入式系统运行测试文件后是否引起嵌入式系统的复位判断嵌入式系统是否通过测试。具体地,若在第二定时器计时完毕前,看门狗定时器引起嵌入式系统复位,则表示测试通过,当前测试点出错时是可恢复的,同时停止第二定时器的计时,执行看门狗定时器的ISR,继续执行步骤S6;若在第二定时器计时完毕后,看门狗定时器仍然没有引起嵌入式复位,则表示测试失败,当前测试点存在不可恢复的错误,执行第二定时器的ISR,继续执行步骤S6。
步骤S6,嵌入式系统通过UART向计算机输出系统当前运行的状态信息。其中状态信息至少包括嵌入式系统的当前运行任务的相关信息、执行的测试文件信息、当前测试的代码地址、测试的函数信息以及测试结果等。测试的函数信息包括通过测试的函数数量、总函数数量、测试通过次数、总测试次数等。
步骤S7,使嵌入式系统恢复当前运行任务的运行。具体地,若在步骤5中看门狗定时器引起嵌入式系统复位,则修改看门狗定时器的中断返回地址,使嵌入式系统恢复当前运行任务的执行;若在步骤5中看门狗定时器没有引起嵌入式系统复位,则执行第二定时器的ISR,修改第二定时器的中断返回地址,使嵌入式系统恢复当前运行任务的执行。
步骤S8,重复步骤S1至S7,直到设定的测试时间结束测试。
步骤S9,计算机通过分析状态信息和测试数据来度量该嵌入式系统的可恢复性。嵌入式系统的软件编译链接后通常会生成一个内存分配描述文件,包含了每个函数的起始地址和占用空间等内容,因此可以通过此文件生成一个函数列表,列出所有的函数名和起始地址、结束地址。通过获取嵌入式系统的当前代码地址,可以查找到对应的函数。因此,可以通过分析测试过程中的测试通过率来判断嵌入式系统的可恢复性,通过分析函数覆盖率和代码行覆盖率来判断测试的有效性。
测试通过率的计算方法为:Y=S/K,其中Y表示通过率,N表示测试通过的次数,K表示总的测试次数,0<Y≦1。Y的值越大,表示测试通过率越高。测试通过率越高表示嵌入式系统的可恢复性越高。
函数覆盖率的计算方法为:X=N/T,其中X表示覆盖率,N表示进行测试的函数数量,T为嵌入式系统的总函数数量,0<X≦1。X的值越大,表示测试覆盖率越高。测试覆盖率越高,表示本发明的测试方法越有效。根据每一次测试的代码地址查找对应的函数,即可获得进行测试的函数数量(去掉重复测试的函数数量)。
代码行覆盖率(汇编指令级)Z=M/P,其中Z表示代码行覆盖率,M表示测试过的指令数量,P表示整个嵌入式系统的汇编指令总数,0<Z≦1。Z的值越大,表示代码行覆盖率越高。可通过编译产生的汇编文件统计嵌入式系统的汇编指令总数,每一次测试的代码地址对应一条汇编指令(去掉重复测试的指令数量),即可获得测试过的指令数量。
虽然对本发明的描述是结合以上具体实施例进行的,但是,熟悉本技术领域的人员能够根据上述的内容进行许多替换、修改和变化、是显而易见的。因此,所有这样的替代、改进和变化都包括在附后的权利要求的精神和范围内。
Claims (10)
1.一种嵌入式系统的可恢复性测试方法,其特征在于,包括步骤:
步骤一,嵌入式系统运行后,启动嵌入式系统的看门狗定时器,向所述嵌入式系统的当前运行任务随机注入一个测试文件;
步骤二,所述嵌入式系统运行所述测试文件;以及
步骤三,判断所述嵌入式系统运行所述测试文件后是否引起所述嵌入式系统的复位,若引起系统复位,则表示当前测试点出错时是可恢复的,否则表示当前测试点存在不可恢复的错误。
2.根据权利要求1所述的嵌入式系统的可恢复性测试方法,其特征在于,所述步骤一具体包括以下步骤:
步骤a,在所述嵌入式系统运行后,启动第一定时器;以及
步骤b,所述第一定时器时间计时完毕后,执行第一定时器的中断服务程序;所述中断服务程序获取所述嵌入式系统的当前运行任务的地址;
步骤c,退出所述第一定时器之前,修改第一定时器的中断返回地址,触发所述嵌入式系统执行所述测试文件。
3.根据权利要求2所述的嵌入式系统的可恢复性测试方法,其特征在于,所述第一定时器的定时时间在预设的时间范围内随机设定。
4.根据权利要求2所述的嵌入式系统的可恢复性测试方法,其特征在于,所述第一定时器时间计时完毕后,所述嵌入式系统启动第二定时器;其中所述第二定时器的定时时间大于所述看门狗定时器的定时时间。
5.根据权利要求4所述的嵌入式系统的可恢复性测试方法,其特征在于,所述步骤三包括:若在所述第二定时器计时完毕前,所述看门狗定时器引起所述嵌入式系统复位,则测试通过,停止第二定时器的计时,执行看门狗定时器的中断服务程序;若在所述第二定时器计时完毕时,所述看门狗定时器仍然没有引起所述嵌入式系统复位,则测试失败,执行第二定时器的中断服务程序。
6.根据权利要求1所述的嵌入式系统的可恢复性测试方法,其特征在于,所述步骤三之后还包括步骤:使所述嵌入式系统恢复执行当前运行任务。
7.根据权利要求4所述的嵌入式系统的可恢复性测试方法,其特征在于,所述第二定时器的定时时间为所述看门狗定时器的定时时间的2倍。
8.根据权利要求1所述的嵌入式系统的可恢复性测试方法,其特征在于,所述嵌入式系统与一计算机相连接;所述嵌入式系统向所述计算机输出系统当前运行的状态信息,所述计算机通过分析所述状态信息,判断所述嵌入式系统的可恢复性。
9.根据权利要求8所述的嵌入式系统的可恢复性测试方法,其特征在于,所述状态信息至少包括所述嵌入式系统的当前运行任务的相关信息、执行的测试文件信息和测试结果。
10.根据权利要求1-9所述的任一项的嵌入式系统的可恢复性测试方法,其特征在于,所述测试文件为一段无限循环测试代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610054582.0A CN105718326B (zh) | 2016-01-27 | 2016-01-27 | 嵌入式系统的可恢复性测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610054582.0A CN105718326B (zh) | 2016-01-27 | 2016-01-27 | 嵌入式系统的可恢复性测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718326A true CN105718326A (zh) | 2016-06-29 |
CN105718326B CN105718326B (zh) | 2018-12-11 |
Family
ID=56154274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610054582.0A Active CN105718326B (zh) | 2016-01-27 | 2016-01-27 | 嵌入式系统的可恢复性测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718326B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776096A (zh) * | 2016-12-27 | 2017-05-31 | 兴唐通信科技有限公司 | 一种嵌入式软件出错的可靠恢复方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1952899A (zh) * | 2006-11-22 | 2007-04-25 | 北京中星微电子有限公司 | 一种消息及时处理方法和嵌入式多任务操作系统 |
US20070168734A1 (en) * | 2005-11-17 | 2007-07-19 | Phil Vasile | Apparatus, system, and method for persistent testing with progressive environment sterilzation |
CN101221518A (zh) * | 2008-01-29 | 2008-07-16 | 福建星网锐捷网络有限公司 | 一种防止硬件看门狗的定时器溢出的方法、装置与系统 |
CN102521098A (zh) * | 2011-11-23 | 2012-06-27 | 中兴通讯股份有限公司 | Cpu死机监控的处理方法和装置 |
-
2016
- 2016-01-27 CN CN201610054582.0A patent/CN105718326B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168734A1 (en) * | 2005-11-17 | 2007-07-19 | Phil Vasile | Apparatus, system, and method for persistent testing with progressive environment sterilzation |
CN1952899A (zh) * | 2006-11-22 | 2007-04-25 | 北京中星微电子有限公司 | 一种消息及时处理方法和嵌入式多任务操作系统 |
CN101221518A (zh) * | 2008-01-29 | 2008-07-16 | 福建星网锐捷网络有限公司 | 一种防止硬件看门狗的定时器溢出的方法、装置与系统 |
CN102521098A (zh) * | 2011-11-23 | 2012-06-27 | 中兴通讯股份有限公司 | Cpu死机监控的处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
吕盛林: "基于ARM9的嵌入式监控终端设计与实现", 《中国优秀硕士论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776096A (zh) * | 2016-12-27 | 2017-05-31 | 兴唐通信科技有限公司 | 一种嵌入式软件出错的可靠恢复方法 |
CN106776096B (zh) * | 2016-12-27 | 2019-12-06 | 兴唐通信科技有限公司 | 一种嵌入式软件出错的可靠恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105718326B (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shin et al. | Is complexity really the enemy of software security? | |
Long et al. | Automatic runtime error repair and containment via recovery shepherding | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
Fabre et al. | Assessment of COTS microkernels by fault injection | |
US20070079288A1 (en) | System and method for capturing filtered execution history of executable program code | |
CN101334754A (zh) | 基于故障注入的嵌入式系统测评方法 | |
US20190251219A1 (en) | Correlating verification scenario coverage with hardware coverage events | |
EP2565790A1 (en) | Method and system for injecting simulated errors | |
US8990622B2 (en) | Post-silicon validation using a partial reference model | |
WO2012080262A1 (en) | Software error code injection | |
US10331513B2 (en) | Zero overhead code coverage analysis | |
US9411007B2 (en) | System and method for statistical post-silicon validation | |
CN105718375A (zh) | 嵌入式系统的可恢复性度量方法 | |
CN109902001B (zh) | 对未初始化变量的检测方法及终端设备 | |
CN105718326A (zh) | 嵌入式系统的可恢复性测试方法 | |
Montrucchio et al. | Software-implemented fault injection in operating system kernel mutex data structure | |
CN115756935A (zh) | 嵌入式软件系统的异常故障定位方法、装置及设备 | |
Montrucchio et al. | Fault injection in the process descriptor of a Unix-based operating system | |
Okech et al. | Inherent diversity in replicated architectures | |
Pintard et al. | Using fault injection to verify an autosar application according to the ISO 26262 | |
CN110647467B (zh) | 基于单步异常的目标码覆盖率测试方法、系统及介质 | |
Park et al. | Property-based code slicing for efficient verification of osek/vdx operating systems | |
Frtunikj et al. | Qualitative evaluation of fault hypotheses with non-intrusive fault injection | |
Zhou et al. | A workload model based approach to evaluate the robustness of real-time operating system | |
Lanzaro et al. | A preliminary fault injection framework for evaluating multicore systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |