一种嵌入式系统软件的动态测试方法 【技术领域】
本发明涉及一种软件的测试方法,具体地说,是涉及一种对嵌入式系统软件进行动态测试的方法,属于软件测试技术领域。
背景技术
目前,嵌入式设计已经成为工业现代化、智能化的必经之路,嵌入式产品已经深入到各行各业。由于嵌入式系统的专用程度较高,系统的整体继承性相对较小,为了保证系统的稳定性,嵌入式系统软件的测试成为嵌入式开发的一个重要环节,也是软件从开发过程到应用过程的关键环节。软件测试方法根据是否需要运行目标代码,可分为静态测试和动态测试两种。静态测试不运行目标程序代码,主要包括代码检查、静态结构分析、代码质量度量及文档测试等。动态测试是通过运行被测程序,检查运行结果与预期结果的差异,并分析软件运行效率及健壮性等性能。
随着嵌入式平台软硬件的高速发展,嵌入式平台的测试工具和测试方法也越来越先进,越来越完善。但由于嵌入式系统的特殊性,无法应用在PC平台上比较成熟的“录制-回放”的自动化测试方法对嵌入式系统软件进行动态测试。目前,嵌入式系统软件的动态测试主要采用两种方法:
第一,采用PC软件和配套的硬件平台(如仿真器)与目标平台进行交互,实现对嵌入式系统软件的动态测试。采用仿真器等硬件平台进行测试,可以单步执行被测程序,不仅效率较高,且自动化程度也较高。但其缺点是:一方面,需要购买专用的测试硬件平台,价格昂贵,成本较高;另一方面,测试硬件平台是针对特定目标平台开发设计的,其通用性较差。有些目标嵌入式平台未开发专用测试硬件平台,则无法采用该方法进行软件的动态测试。
第二,采用纯黑盒测试方法,由测试人员手动操作进行测试。该方法本身不存在软件测试模块,完全由人工进行操作,因此,对软件的健壮性能测试效果较差,也不能快速确定软件的稳定性,导致测试速度慢、效率低、且不能实现自动测试。
【发明内容】
本发明针对现有技术中嵌入式系统软件动态测试存在的上述缺点和不足,提供了一种嵌入式系统软件的动态测试方法,通过在被测程序中嵌入测试模块,在被测程序运行过程中自动调用测试模块对被测程序进行动态测试,在不需要专用硬件测试平台的情况下实现了软件的自动化动态测试。
为解决上述技术问题,本发明采用以下技术方案予以实现:
一种嵌入式系统软件的动态测试方法,包括需进行动态测试的被测程序;在所述被测程序中设置有对被测程序进行动态测试的测试模块,在被测程序运行过程中调用所述测试模块,实现对所述被测程序的动态测试。
根据本发明,所述测试模块可实现对被测程序执行速度方面的性能测试,具体实现方法为:所述测试模块设置有测试用例执行单元和测试用例存储单元;在被测程序运行过程中调用所述测试用例执行单元时,所述测试用例执行单元首先从所述测试用例存储单元中获取测试用例,然后获取被测程序的当前活动窗口,并将所获取的测试用例输出至所述被测程序的当前活动窗口中。
根据本发明,为提高测试用例的通用性,所述测试用例存储单元中的测试用例为格式化测试用例;所述测试用例执行单元从所述测试用例存储单元中获取测试用例后,先对测试用例进行解析,然后再将解析后的测试用例输出至所述被测程序的当前活动窗口中。
根据本发明,所述测试用例执行单元可采用下述方法获取被测程序的当前活动窗口:通过调用所述被测程序的相关模块入口函数,获取与测试用例相对应的被测程序界面,并将所获取的被测程序界面设置为当前活动窗口。
根据本发明,所述测试模块可实现对被测程序健壮性能的测试,具体实现方法为:所述测试模块设置有模拟按键执行单元及模拟按键存储单元;在被测程序运行过程中调用所述模拟按键执行单元时,所述模拟按键执行单元从所述模拟按键存储单元中获取模拟按键值,并将所获取的模拟按键值输出至嵌入式系统的底层按键处理模块,以供所述被测程序调用。
根据本发明,为实现对被测程序的随机操作测试,所述模拟按键执行单元按照下述方法从所述模拟按键存储单元中获取模拟按键值:
模拟按键执行单元产生随机数;
计算所述随机数对所述模拟按键存储单元中存储的模拟按键总数的模值;
根据所述模值从所述模拟按键存储单元中获取相应的模拟按键值。
根据本发明,所述测试模块以楔子的形式嵌入在所述被测程序中,便于被测程序对测试模块的调用。
与现有技术相比,本发明的优点和积极效果是:
1、通过在被测程序中设置测试模块,可以在被测程序执行过程中自动调用所述测试模块对被测程序进行自动测试,提高了嵌入式系统软件动态测试的自动化程度,提高了测试效率。
2、通过在测试模块中设置测试用例执行单元,可自动实现对被测程序执行速度的性能测试,以程序执行测试用例代替人工执行测试用例,能够快速发现系统整体的稳定性,提高了测试效率。
3、通过在测试模块中设置模拟按键执行单元,可以方便地模拟高强度用户操作及随机操作,实现对被测程序的健壮性测试,测试效率高、测试性能准确。
【附图说明】
图1是本发明所述嵌入式系统软件的动态测试方法一个实施例的基本流程图;
图2是图1实施例中测试用例执行单元的工作流程图;
图3是图1实施例中模拟按键执行单元的工作流程图。
【具体实施方式】
下面结合附图对本发明作进一步详细的说明。
本发明针对现有嵌入式系统软件动态测试存在的要么成本高、要么测试自动化程度低地不足,提供了一种嵌入式系统软件的动态测试方法。该方法的核心是在嵌入式系统软件程序中设置测试模块,在被测程序运行过程中,可根据需要自动调用该测试模块,通过运行测试模块实现对被测程序的动态测试。应用本发明所述的动态测试方法,测试过程由现有的手动操作改变为程序自动调用执行,不仅可实现对被测程序部分性能的自动化测试,且能够干预被测程序的内部执行过程,实现白盒测试,并能在测试过程中快速地发现系统整体的性能,测试速度快、效率高、成本低、易于实现。
在所述测试模块中可以根据需要设置测试用例执行单元、模拟按键执行单元等,以实现对被测程序不同性能的测试。
图1示出了本发明所述嵌入式系统软件的动态测试方法一个实施例的基本流程图。
在该实施例中,为便于在被测程序执行过程中调用测试模块,测试模块以楔子的形式嵌入在所述被测程序中。测试模块中一方面设置了测试用例执行单元和相应的测试用例存储单元,所述测试用例存储单元中预存储了若干个测试用例,用于实现对被测程序执行速度方面的性能测试;另一方面,还设置了模拟按键执行单元及相应的模拟按键存储单元,所述模拟按键存储单元预存储了若干个模拟按键值,用以模拟高强度用户操作及随机操作,实现对被测程序健壮性能的测试。
在该实施例中,测试模块的用户界面定义为两层,第一层用作选择进入测试用例执行单元还是模拟按键执行单元,第二层主要是相应的执行界面。
如图1所示,该实施例的基本流程如下:
S101:流程开始。
S102:嵌入式系统初始化。
S103:运行被测程序。
S104:判断是否要调用测试模块。若调用测试模块,执行步骤S105;若未调用测试模块,继续步骤S103,运行被测程序。
在被测程序运行过程,可以根据需要随时对调用测试模块,对被测程序进行相关性能的测试。
S105:判断是否执行测试用例。若执行测试用例,执行步骤S106;若不是执行测试用例,则转至步骤S108。在调用测试模块后,用户可从测试模块的用户界面中选择是执行测试用例还是模拟按键,若是执行测试用例,则进入相应的测试用例执行单元;若不是执行测试用例,表明调试人员选择的是执行模拟按键,则要进入相应的模拟按键执行单元。
S106:进入测试用例执行单元。测试用例执行单元的具体工作过程可参考图2。
S107:判断测试用例执行单元是否执行完毕。若执行完毕,转至步骤S110;若未执行完,继续执行步骤S106。
S108:若测试人员在测试模块用户界面中选择了模拟按键,则进入模拟按键执行单元。模拟按键执行单元的具体工作过程可参考图3。
S109:判断模拟按键执行单元是否执行完毕。若执行完毕,转至步骤S110;若未执行完,继续执行步骤S108。
S110:测试模块中的相应执行单元执行完毕,输出相应的测试结果后,对测试结果进行分析。当然,在测试模块运行过程中,测试人员也可以观察、记录、和分析被测程序运行过程中的一些测试结果。
S111:一次动态测试结束。
在被测程序运行过程中,可以根据需要多次调用和执行测试模块,实现对不同程序模块的动态测试。
图2示出了上述实施例中测试用例执行单元的工作流程图。如图2所述,在进入测试用例执行单元后,按照下述流程对被测程序进行动态测试:
S201:进入测试用例执行单元。
S202:测试用例执行单元从测试用例存储单元中获取已存储的测试用例。
S203:解析所获取的测试用例。在该实施例中,为提高测试用例的通用性,所述测试用例存储单元中存储的测试用例均为格式化的测试用例。例如,其中一个测试用例定义为:1-2[6]-6,其中,每个数字代表一个按键操作,-为间隔符,[]里的数字代表执行次数。在上述定义中,1代表确认键,2代表向下键,6代表返回键,则上述测试用例的描述为:按确认键,再按6次向下键,返回。
S204:获取被测程序的当前活动窗口。解析完测试用例后,测试用例执行单元需要获取该测试用例所应用的被测程序中的哪个窗口中,该窗口一般为被测程序的当前活动窗口。测试用例执行单元通过调用所述被测程序的相关模块入口函数,获取与测试用例相对应的被测程序界面,并将所获取的被测程序界面设置为当前活动窗口。
S205:将解析后的测试用例输出至被测程序的当前活动窗口中,从而实现采样特定测试用例动态测试被测程序的目的。
图3示出了上述实施例中模拟按键执行单元的工作流程图。如图3所述,在进入模拟按键执行单元后,按照下述流程对被测程序进行动态测试:
S301:进入模拟按键执行单元。
S302:模拟按键执行单元产生随机数。
S303:计算随机数对模拟按键存储单元中存储的模拟按键总数的模值。计算所得的模值与模拟按键存储单元中存储的模拟按键值是一一对应的。
S304:根据所述模值从所述模拟按键存储单元中获取相应的模拟按键值。
S305:将所获取的模拟按键值输出至嵌入式系统底层的按键处理模块。由于底层按键处理模块与被测程序之间是交互的,被测程序将会调用底层按键处理模块来处理测试模块输出的模拟按键操作。
在上述处理过程中,可以通过设定一定时间内多次执行相同按键的操作来模拟高强度用户操作;也可以通过多次产生随机数获取随机的模拟按键值,来模拟随机操作。通过程序来模拟按键操作的方式,比手动操作按键的方式速度也快得多,强度也高得多,因此,能够更快、更精确地测试被测程序的健壮性能,提高软件动态测试的效率。
当然,以上所述仅是本发明的一种优选实施方式而已,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。