一种实现嵌入式软件异常测试的方法及系统的制作方法

文档序号:6615615阅读:470来源:国知局
专利名称:一种实现嵌入式软件异常测试的方法及系统的制作方法
技术领域
本发明涉及嵌入式软件测试领域,尤其涉及一种实现嵌入式软件异常测试的方法及系统。

背景技术
嵌入式软件系统由于受到开发环境的限制,在软件测试方面随着对象规模的扩大,从单元、集成到系统的难度也不断加大,异常测试内容更加难以实施。尤其在嵌入式系统中信令控制流是搭建各种业务流程的关键,属于神经系统,针对信令的异常处理就显得格外重要,对应的异常测试必须实施,但在测试手段上比较受限。
软件处理的异常分为异常流程和异常取值,前者为不走原来流程,产生其它分支处理;异常取值则走原有流程,但是数据取值被改变。
传统的软件异常测试最简单是手工操作系统产生异常激励,这种方式只能造成简单少数的异常条件,如异常流程,不能满足测试要求;另外的方式就是直接修改源程序,在其中写入异常变化的代码,当流程走到时就按代码要求产生异常条件,这种方式可扩大异常的覆盖,但是属于“硬编码”类型,需要变换条件时又得修改代码再编译运行,十分繁琐,同时对源程序的影响较大,只能作为临时调试使用,测试完成后要做屏蔽,测试代码零乱,难以管理。总而言之,现有的软件异常测试执行方法在测试过程中灵活性差,效率低。


发明内容
为了解决上述的技术问题,提供了一种实现嵌入式软件异常测试的方法,其目的在于,克服现有技术在进行软件异常测试时不够灵活及效率低下的缺点。
本发明提供了一种实现嵌入式软件异常测试的方法,包括 步骤1,设置异常测试规程; 步骤2,根据异常测试规程在软件源代码中插入异常测试点; 步骤3,根据异常测试规程进行异常测试脚本的编写或修改,用于生成异常条件; 步骤4,构建运行环境并下载异常测试脚本; 步骤5,启动测试流程进行异常测试,运行与异常测试点相对应的异常测试脚本,依据异常行为的结果对软件异常处理能力进行判断。
步骤2包括 步骤201,根据异常测试规程找到源代码中产生异常条件位置,按异常条件所依附的原始数据信息归整异常测试点; 步骤202,在源代码相应位置插入异常处理宏,异常处理宏包含消息格式的数据信息。
步骤2还包括步骤203,对于异常处理后的返回情况进行处理;所述返回情况包括异常处理完成后继续源程序后继流程、直接退出本次调度或跳过源程序后继一段代码后继续执行。
步骤3包括 步骤401,根据异常测试规程选择对应异常测试点,将所述数据信息作为输入参数; 步骤402,如果进行异常流程处理,则异常测试脚本依据输入参数发送消息;如果进行异常取值处理,则异常测试脚本修改输入参数的值。
步骤3还包括实时手工或自动修改异常测试脚本。
步骤4包括 步骤601,构建运行环境,启动包含异常测试点的软件源代码及异常测试模块; 步骤602,定制与异常测试点对应的异常测试脚本; 步骤603,将所定制的异常测试脚本生成异常测试用例,并下载到运行环境中。
步骤5包括 步骤701,启动测试流程,运行包含异常测试点的软件源代码; 步骤702,软件源代码在执行到异常测试点处由异常处理宏进行判断,如果异常测试点定制了异常测试脚本,则转入异常测试脚本进行处理,执行步骤703; 步骤703,异常测试脚本依据所述数据信息进行异常流程处理或者异常取值,生成异常条件; 步骤704,将所生成的异常条件同步到实际数据区域,用于被测软件产生异常行为,依据异常行为的结果对软件异常处理能力进行判断。
本发明提供了一种实现嵌入式软件异常测试的系统,包括 异常测试点插入模块101,用于根据异常测试规程在软件源代码中插入异常测试点; 异常测试脚本编辑模块102,用于根据异常测试规程进行异常测试脚本的编写或修改,以生成异常条件; 异常测试脚本下载模块103,用于构建运行环境并下载异常测试脚本; 异常测试执行模块104,用于启动测试流程进行异常测试,使被测软件产生异常行为,并依据异常行为的结果对软件异常处理能力进行判断。
异常测试点插入模块,还用于对异常处理后的返回情况进行处理;所述返回情况包括异常处理完成后继续源程序后继流程、直接退出本次调度或跳过源程序后继一段代码后继续执行。
异常测试点插入模块,还用于在源代码中插入异常处理宏,异常处理宏包含消息格式的数据信息。
异常测试脚本编辑模块,还用于对于已经编写好的测试脚本,根据运行时的需要可实时修改脚本代码,按新异常生成条件来做异常处理,测试相同位置不同异常情况。
本发明通过在源代码中嵌入脚本,将需要变化的处理转入脚本控制,基于脚本对数据及流程操作的便利特性,提高了异常条件变化的灵活性,在异常点处可以通过变化脚本内容来调整对应异常取值或异常流程,达到各种异常处理分支的测试。脚本不需要与源程序一同编译运行,随时修改同步下载,提高了异常测试执行效率。产生异常可以用来测试自己代码稳定能力,也可以为被测方提供异常交互测试对方稳定能力。在应用上除了可以在单元/集成/系统阶段进行异常测试外,还可以在单元测试阶段用脚本仿真环境进行流程自测试。两者在自己代码中插入的异常指令是一致的,只是对应测试脚本不同而已。在具体实现中,各种类型的异常变化在源程序中插入异常点时格式全部统一,只是一个函数宏,当在非测试模式时将宏定义为空即可,对源代码影响降到最低。各异常测试脚本以文件形式保存,可以同异常测试规程一同关联,便于管理。



图1是异常测试模式的系统结构图; 图2是异常测试方法的流程图; 图3是异常处理后返回源程序不同情况处理的流程图; 图4是异常测试方法中所采用的测试脚本工作机制说明。

具体实施例方式 本发明提供的异常测试方法如图2所示,包括 第一步、进行异常测试规程设计,这是定制异常处理内容的前提,属于用例设计的范畴,是本异常测试方法的准备工作; 第二步、根据异常测试规程在源代码中插入异常测试点,这是本异常测试方法的一个关键点,属于源代码与测试脚本的一个纽带,反映测试规程的要求,在执行中实现从原流程转入异常流程,处理完成后再退回到原流程; 第三步、根据异常测试规程进行异常测试脚本的编写/修改,脚本内容直接体现规程要求,对所处异常点进行异常流程/异常取值,用于异常条件的生成; 第四步、进行运行环境构建及测试脚本下载,将带有异常测试点的软件版本及异常测试模块在嵌入式环境中正常运行,根据测试内容选择对应异常测试脚本,从后台下载到运行环境中(前台嵌入式设备)。
第五步、启动测试流程进行异常测试,被测软件在运行过程中走到异常点处如果满足条件则转入脚本处理,产生所需异常条件,改变源程序后继的运行。在该步骤完成后,也可以执行第三步,手工或自动化调整脚本。
第六步、根据最终测试结果及异常测试执行过程的输出信息得出异常测试结论,判断被测软件对于异常处理的好坏。
上述第二步又可以包括 21)、根据异常测试规程的要求找到源代码中产生异常条件位置,按异常条件所依附的原始数据信息来归整异常测试点,即有可能多个不同异常条件是针对同一原始数据信息而形成,且在相同流程位置,则可归结为一个异常测试点。
22)、归整完成异常测试点后,在源代码相应位置插入异常处理宏,以消息的形式带入包含产生异常条件的数据信息,如消息名,消息数据。
23)、对于异常处理后不同返回情况进行处理,一种是异常处理完成后继续源程序后继流程,一种是直接退出本次调度,一种是跳过源程序后继一段代码后继续执行。
上述第三步又可以包括 31)、按照异常测试规程的要求选择对应异常测试点,将异常处理宏以消息形式带入的数据作为输入参数(简称入参)供脚本异常处理使用。
32)、对于需要进行异常流程处理,将根据异常测试规程设计要求由脚本发出对应的消息,脚本中要包含此消息数据,通过脚本发送指令实现发送。
33)、对于需要进行异常取值处理,即将传入的消息数据内容进行改变,直接通过脚本数据赋值操作对数据内容进行定制,从而形成非正常取值条件。
此处异常取值对应的异常数据分为异常消息和异常变量,其中要异常变化的消息是指整个被测产品系统级定义的,而变量则是局部定义的,如某功能模块/代码文件局部变量。异常消息由于在系统中是统一定义,如消息命名及消息体对应,可在脚本机制上直接关联进行处理,而针对局部变量则要做进一步变化,处理方法为列出此功能模块/代码文件内需要控制的变量表,定义为一个统一的UNION结构做为此异常变量消息体,再定义对应的异常变量消息,形成异常系统中可视见的固定关联关系,供脚本处理。
34)、对于已经编写好的测试脚本,根据运行时的需要可实时修改脚本代码,按新异常生成条件来做异常处理,测试相同位置不同异常情况。
上述第四步又可包括 41)、构建嵌入式软件系统环境,将带有异常测试点的软件版本及异常测试模块在所运行嵌入式设备上正常启动。
42)、选择要测试执行的异常测试点,定制相对应的异常处理脚本,内容可以是前述步骤已保存好的脚本或在其上按需要有针对性的修改;定制了异常处理脚本的异常测试点将在软件运行到时被处理。
43)、将定制好的全部脚本汇总生成用于执行的异常测试用例,通过后台下载到嵌入式运行环境中(前台嵌入式设备)。
上述第五步又可以包括 51)、启动测试流程,让软件得以运行。
52)、软件代码在执行过程中走到异常测试点处由异常处理宏对应函数做判断,如果满足条件则转入脚本处理;判断条件为是否对此异常测试点定制了异常处理脚本。
53)、转入脚本处理时,异常处理宏带入包含信息的数据,包括消息名,消息内容等,这些数据被复制到脚本执行体中按脚本代码的要求进行处理,如异常流程/异常取值。
54)、异常处理完成后这些数据又同步到实际数据区域,供后面代码使用,产生本异常测试规程所需要的异常行为。
图2中,随着异常测试规程测试内容的不同,可以下载不同测试脚本来产生相应异常条件。这可有两种方式选择,一种是手工根据需要随时修改测试脚本内容,下载后形成新的异常处理条件,适用于异常测试现场扩展情况;另一种方式为自动化方式,即针对某异常测试点各种异常条件的生成编写不同测试脚本,在不同次循环测试中分别下载,形成不同异常条件来自动测试,这适用于即定异常条件的定制测试。
图1是异常测试模式的系统结构图,图中脚本编辑/通信接口部分为后台程序运行在PC机上,用于编辑脚本用例,控制下载运行,显示运行信息;其它部分做为前台运行在嵌入式系统设备上,被测对象做为业务进程驻留在操作系统支撑层之上,辅助进程及脚本执行进程为异常测试加入到被测对象所在系统中的附加部分,用于接收下载脚本及实际执行;操作函数AbProc为全局函数,可定义为异常处理宏供被测对象调用,实现正常代码处理过程中对异常脚本的插入。可将辅助进程、脚本执行进程和操作函数统一称为异常测试模块。
根据系统运作功能可将其划分为几个功能模块,其中函数AbProc及加入异常测试宏的被测对象1构成了异常测试点插入模块101,用于根据异常测试规程在软件源代码中插入异常测试点;脚本编辑部分构成了异常测试脚本编辑模块102,用于根据异常测试规程进行异常测试脚本的编写或修改,以生成异常条件;前台辅助进程结合后台下载控制部分构成了异常测试脚本下载模块103,用于构建运行环境并下载异常测试脚本;带有脚本指令区的脚本执行进程构成了异常测试执行模块104,通过函数AbProc的入参传入数据信息,根据脚本指令完成异常条件的生成。
被测对象根据测试过程不同分为两类,一类是被测对象1自测,另一类通过被测对象1产生异常对被测对象2进行测试。两种情况下被测对象1都运行自己插入的异常点,而被测对象2则不插入异常点,不用做任何改变。
图3是异常处理后返回源程序不同情况处理的流程图。在针对某异常测试点所进行的异常处理过程中,要考虑脚本完成后退回源程序的不同情况,包括三种一种是异常处理完成后继续源程序后继流程,一种是直接退出本次调度,一种是跳过源程序后继一段代码后继续执行。这几种情况都通过在异常测试脚本中设置一数据标识来识别,前两种直接利用异常处理宏,后一种在异常测试宏后通过增加一异常跳转宏带入所需跳转源代码的行标识来实现。即当标识设置为0时,走第一种流程,不做额外处理,异常处理函数直接返回,程序继续执行异常测试点后面代码;当标识设置为1时,走第二种流程,将标识复位为0,然后在异常处理函数中调用退出本次调度执行的系统函数,由于此时处理函数还是属于被测进程本次调度范围,所以将直接退出本次调度,源程序后继代码不再执行;当标识设置为2时,走第三种流程,此时源代码中异常处理宏后面要设计好插入异常跳转宏,入参为需要跳转到源程序后继代码的行标识,首先异常处理函数正常返回,程序进入异常跳转宏,它先将标识复位为0,然后就是通过调用“goto行标识”来实现跳过源程序后一段代码而继续执行。
图4是本方法中所采用的测试脚本工作机制说明,包括脚本的静态编辑和动态运行两阶段。首先是基于源程序代码的消息结构信息提取,即脚本中所处理的对象都是以消息及对应数据结构为基础的。根据异常测试内容选择出要用到的消息结构,以列表的形式生成用例静态区,即脚本数据描述区域。然后用户使用脚本所提供的各种操作原语来描述处理的逻辑步骤,以文本的形式生成用例动态区,即运行逻辑描述区域。两个区域内容统一保存在文本文件中,生成测试用例文件,至此完成静态编辑过程。接下来需要实际运行用例时,脚本处理内核读入用例文件,通过解析转化生成内存中二进制信息,然后通过数据下载处理将这些信息传输到前台脚本执行体,最后在脚本执行体中启动用例运行,按照要执行的异常测试点传入的数据进行对应脚本处理,直到退出用例,从而完成动态运行阶段。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种实现嵌入式软件异常测试的方法,其特征在于,包括
步骤1,设置异常测试规程;
步骤2,根据异常测试规程在软件源代码中插入异常测试点;
步骤3,根据异常测试规程进行异常测试脚本的编写或修改,用于生成异常条件;
步骤4,构建运行环境并下载异常测试脚本;
步骤5,启动测试流程进行异常测试,运行与异常测试点相对应的异常测试脚本,依据异常行为的结果对软件异常处理能力进行判断。
2.如权利要求1所述的实现嵌入式软件异常测试的方法,其特征在于,步骤2包括
步骤201,根据异常测试规程找到源代码中产生异常条件位置,按异常条件所依附的原始数据信息归整异常测试点;
步骤202,在源代码相应位置插入异常处理宏,异常处理宏包含消息格式的数据信息。
3.如权利要求2所述的实现嵌入式软件异常测试的方法,其特征在于,步骤2还包括步骤203,对于异常处理后的返回情况进行处理;所述返回情况包括异常处理完成后继续源程序后继流程、直接退出本次调度或跳过源程序后继一段代码后继续执行。
4.如权利要求2或3所述的实现嵌入式软件异常测试的方法,其特征在于,步骤3包括
步骤401,根据异常测试规程选择对应异常测试点,将所述数据信息作为输入参数;
步骤402,如果进行异常流程处理,则异常测试脚本依据输入参数发送消息;如果进行异常取值处理,则异常测试脚本修改输入参数的值。
5.如权利要求4所述的实现嵌入式软件异常测试的方法,其特征在于,步骤3还包括实时手工或自动修改异常测试脚本。
6.如权利要求4所述的实现嵌入式软件异常测试的方法,其特征在于,步骤4包括
步骤601,构建运行环境,启动包含异常测试点的软件源代码及异常测试模块;
步骤602,定制与异常测试点对应的异常测试脚本;
步骤603,将所定制的异常测试脚本生成异常测试用例,并下载到运行环境中。
7.如权利要求6所述的实现嵌入式软件异常测试的方法,其特征在于,步骤5包括
步骤701,启动测试流程,运行包含异常测试点的软件源代码;
步骤702,软件源代码在执行到异常测试点处由异常处理宏进行判断,如果异常测试点定制了异常测试脚本,则转入异常测试脚本进行处理,执行步骤703;
步骤703,异常测试脚本依据所述数据信息进行异常流程处理或者异常取值,生成异常条件;
步骤704,将所生成的异常条件同步到实际数据区域,用于产生异常行为,依据异常行为的结果对软件异常处理能力进行判断。
8.一种实现嵌入式软件异常测试的系统,其特征在于,包括
异常测试点插入模块,用于根据异常测试规程在软件源代码中插入异常测试点;
异常测试脚本编辑模块,用于根据异常测试规程进行异常测试脚本的编写或修改,以生成异常条件;
异常测试脚本下载模块,用于构建运行环境并下载异常测试脚本;
异常测试执行模块,用于启动测试流程进行异常测试,使被测软件产生异常行为,并依据异常行为的结果对软件异常处理能力进行判断。
9.如权利要求8所述的实现嵌入式软件异常测试的系统,其特征在于,
异常测试点插入模块,还用于对异常处理后的返回情况进行处理;所述返回情况包括异常处理完成后继续源程序后继流程、直接退出本次调度或跳过源程序后继一段代码后继续执行。
10.如权利要求8或9所述的实现嵌入式软件异常测试的系统,其特征在于,
异常测试点插入模块,还用于在源代码中插入异常处理宏,异常处理宏包含消息格式的数据信息。
11.如权利要求8所述的实现嵌入式软件异常测试的系统,其特征在于,异常测试脚本编辑模块,还用于对于已经编写好的测试脚本,根据运行时的需要可实时修改脚本代码,按新异常生成条件来做异常处理,测试相同位置不同异常情况。
全文摘要
本发明涉及一种实现嵌入式软件异常测试的方法,包括步骤1,设置异常测试规程;步骤2,根据异常测试规程在软件源代码中插入异常测试点;步骤3,根据异常测试规程进行异常测试脚本的编写或修改,用于生成异常条件;步骤4,构建运行环境并下载异常测试脚本;步骤5,启动测试流程进行异常测试,运行与异常测试点相对应的异常测试脚本,依据异常行为的结果对软件异常处理能力进行判断。本发明通过在源代码中嵌入脚本,将需要变化的处理转入脚本控制,基于脚本对数据及流程操作的便利特性,提高了异常条件变化的灵活性,在异常点处可以通过变化脚本内容来调整对应异常取值或异常流程,达到各种异常处理分支的测试。
文档编号G06F11/36GK101183335SQ20071030237
公开日2008年5月21日 申请日期2007年12月25日 优先权日2007年12月25日
发明者军 左 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1