嵌入式系统的可恢复性度量方法与流程

文档序号:15523473发布日期:2018-09-25 20:13阅读:284来源:国知局

本发明涉及软件测试领域,尤其是一种嵌入式系统的可恢复性度量方法。



背景技术:

嵌入式系统是指用于执行独立功能的专用计算机系统,它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统必须根据应用需求对软件、硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。嵌入式软件是为嵌入式系统服务的,因此要求嵌入式软件要与外部硬件和设备紧密联系。

随着嵌入式计算机技术的迅猛发展,嵌入式系统在各个行业中得到了越来越广泛的应用,目前已经广泛应用于国防、航空航天、医疗等重要行业中,确保它的稳定可靠是极为重要的任务。嵌入式系统的最大特点是以控制为主,软硬结合、功能性操作、以及模块相互间调用较多,外部工作环境复杂容易受到干扰或干扰别的设备,且执行错误的后果不仅仅是数据错误而是有可能导致不可恢复的灾难。随着当前应用系统规模的增大和复杂度的增加,嵌入式系统的可恢复性测试的成本也直线上升,同时也突出了当前所用测试工具和测试方法的局限性。

现有的对嵌入式系统的可恢复性进行测试的方法主要是以人工测试为主,一般是将嵌入式系统置于极端条件下或是模拟的极端条件下,通过人为的各种强制性手段让嵌入式系统的软件或硬件产生故障,然后检测嵌入式系统是否能够得到正确的恢复。由于人工测试需要耗费大量的人力物力,并且测试案例无法覆盖系统中的所有函数,测试有效性低,测试成本高。尤其是无法覆盖嵌入式系统在运行时的抢占性和随机性。采用人工测试的方法无法对嵌入式系统的可恢复性进行度量,也无法对测试的有效性进行度量。



技术实现要素:

本发明的目的在于提供一种嵌入式系统的可恢复性度量方法,该方法能够在嵌入式系统正常运行时对其出错恢复机制进行测试并度量其嵌入式系统的可恢复性以及测试的有效性。

一种嵌入式系统的可恢复性度量方法,包括步骤:

步骤一,嵌入式系统运行后,启动嵌入式系统的看门狗定时器,向嵌入式系统的当前运行任务注入一个测试文件;

步骤二,嵌入式系统运行测试文件;

步骤三,判断嵌入式系统运行测试文件后是否引起嵌入式系统的复位,若引起系统复位,则表示当前测试点出错时是可恢复的,否则表示当前测试点存在不可恢复的错误;以及

步骤四,通过获取嵌入式系统的当前测试的代码地址和测试结果,分析和计算测试通过率;测试通过率用于度量嵌入式系统的可恢复性。

进一步地,测试通过率的计算方法为:Y=S/K,其中Y表示通过率,S表示测试通过的次数,K表示总的测试次数。

进一步地,步骤四还包括分析和计算函数覆盖率的步骤;函数覆盖率的计算方法为:X=N/T,其中X表示覆盖率,N表示进行测试的函数数量,T为总的函数数量;其中,函数通过代码地址获取。

进一步地,步骤四还包括分析和计算代码行覆盖率的步骤;代码行覆盖率的计算方法为:Z=M/P,其中Z表示代码行覆盖率,M表示测试过的指令数量,P表示整个嵌入式系统的汇编指令总数。

进一步地,步骤一具体包括以下步骤:

步骤a,在嵌入式系统运行后,启动第一定时器;以及

步骤b,第一定时器时间计时完毕后,执行第一定时器的中断服务程序;中断服务程序获取嵌入式系统的当前运行任务的地址;

步骤c,退出第一定时器之前,修改第一定时器的中断返回地址,触发嵌入式系统执行测试文件。

进一步地,第一定时器的定时时间在预设的时间范围内随机设定。

进一步地,第一定时器时间计时完毕后,嵌入式系统启动第二定时器;其中第二定时器的定时时间大于看门狗定时器的定时时间,第二定时器的定时时间为看门狗定时器的定时时间的2倍。

进一步地,步骤三包括:若在第二定时器计时完毕前,看门狗定时器引起嵌入式系统复位,则测试通过,停止第二定时器的计时,执行看门狗定时器的中断服务程序;若在第二定时器计时完毕时,看门狗定时器仍然没有引起嵌入式系统复位,则测试失败,执行第二定时器的中断服务程序。

进一步地,步骤三之后还包括步骤:使嵌入式系统恢复执行当前运行任务。

进一步地,测试文件为一段错误代码。

本发明的嵌入式系统的可恢复性度量方法具备以下有益效果:

(1)本发明通过向嵌入式系统注入测试文件的方式,随机触发嵌入式系统的失效条件,对嵌入式系统的出错恢复机制进行测试,从而对嵌入式系统的可恢复性进行测试,提高了测试的有效性;

(2)本发明的嵌入式系统的可恢复性度量方法能够有效地计算和分析嵌入系统在运行过程中的测试结果,通过分析和计算测试通过率判断嵌入式系统的可恢复性,通过分析和计算测试的函数覆盖率和代码行覆盖率判断测试的有效性;

(3)本发明的嵌入式系统的可恢复性度量方法是在嵌入式系统的运行过程中执行的测试,该测试方法能够覆盖嵌入式系统的抢占性和随机性,因此,能够有效地测试嵌入式系统在实际运行情况下的可恢复性,提高了测试的全面性;

(4)本发明通过随机注入一段错误代码的方式触发嵌入式系统的失效条件,可以实现对嵌入式系统的可恢复性的自动化测试,提高了测试效率。

具体实施方式

下面将结合具体实施例及附图对本发明嵌入式系统的可恢复性度量方法作进一步详细描述。

嵌入式系统通过包括一个或多个MCU(Microcontroller Unit,微处理器)或SoC(System on Chip,片上系统),在MCU或SoC的内部通常设置有硬件的看门狗定时器(Watchdog Timer)。实际上,看门狗定时器是一个硬件计数器,一般给看门狗定时器设置一个定时时间,嵌入式系统开始运行后看门狗定时器开始计时。如果嵌入式系统运行正常,则经过预定时间(该预定时间小于看门狗定时器的定时时间)后嵌入式系统发出指令让看门狗定时器复位,看门狗定时器重新开始计时。如果看门狗定时器定时时间结束则会认为嵌入式系统没有正常工作,看门狗定时器产生一个硬件复位信号或中断信号,强制整个嵌入式系统进行复位。嵌入式系统的基本运行单元称为任务(task),在有些操作系统中称为进程或线程等,在本文统称为任务。看门狗定时器通常会监控嵌入式系统的所有任务是否正常运行,当一个任务出错时,例如任务进入了一个错误的无限循环状态等,看门狗定时器会产生一个硬件复位信息复位MCU或SoC,从而对整个嵌入式系统进行复位。

本发明的嵌入式系统的可恢复性度量方法包括步骤:

步骤S1,在嵌入式系统运行后,启动嵌入式系统的看门狗定时器。

步骤S2,启动第一定时器。其中,第一定时器的定时时间在预设时间范围内随机设定,从而保证了本测试覆盖嵌入式系统的抢占性和随机性。

步骤S3,第一定时器计时完毕后,第一定时器的ISR(Interrupt Service Routine,中断服务程序)获取嵌入式系统的当前运行任务的地址,通过UART(Universal Asynchronous Receiver/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表示通过率,S表示测试通过的次数,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的值越大,表示代码行覆盖率越高。可通过编译产生的汇编文件统计嵌入式系统的汇编指令总数,每一次测试的代码地址对应一条汇编指令(去掉重复测试的指令数量),即可获得测试过的指令数量。

本发明的嵌入式系统的软件可靠性度量能够有效地度量嵌入式系统的可恢复性和测试有效性。

虽然对本发明的描述是结合以上具体实施例进行的,但是,熟悉本技术领域的人员能够根据上述的内容进行许多替换、修改和变化、是显而易见的。因此,所有这样的替代、改进和变化都包括在附后的权利要求的精神和范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1