基于嵌入式脚本的自动测试方法与流程

文档序号:13661159阅读:1584来源:国知局
基于嵌入式脚本的自动测试方法与流程

本发明属于数字系统测试技术领域,具体涉及一种基于主流编程语言(如c++)和脚本语言(如lua)混合编程的自动测试方法。



背景技术:

数字系统功能测试是由系统状态设置、观察和记录三种操作组成的过程。

如果设置、观察和记录操作均可在数字计算机上进行时,则系统测试的主要工作就是将这三类操作按照时序和条件关系组织起来,形成可用于判断系统功能是否符合预期的测试逻辑。系统测试工作通常由人来完成(系统功能框图如图1所示)。当测试逻辑可用程序语言表达时,即可依靠计算机执行全部测试过程,从而达到测试操作自动化的目的。

现有的系统自动测试方法采用基于程序间通信的方案。该方案在被测系统之外单独运行一个测试程序,测试程序按照测试逻辑的内容,通过程序间通信的方式实施对被测系统输入、输出变量(后文统称“测试变量”)的设置、观察和记录(见图2)。

现有自动测试方法的缺点包括:

1.需要设计复杂的程序间通信协议,并要求一定的通信链路质量;

2.测试变量需要在测试程序与被测程序中同时注册,当测试变量集合变更时,测试程序与被测试程序都要被同步更改,同步过程复杂、易出错;

3.因为通信链路延迟不可避免且难以精确控制,所以测试程序与被测系统之间同步性较差,测试操作执行频率受到通信延迟所允许精度的限制,测试操作发生时序难以被精确复现,测试操作效果具有一定的随机性。



技术实现要素:

本发明的目的是:

设计一种基于嵌入式脚本的自动测试方法,实现兼顾测试逻辑编写效率与测试操作运行效率的高效自动测试。

本发明的技术方案:

一种基于嵌入式脚本的自动测试方法,包括:

步骤1、将所有测试变量集中列出后,统一生成适配代码,使这些变量可被脚本程序与被测系统程序同时操作或观察;

步骤2、通过在被测系统代码中嵌入测试脚本程序段,使测试逻辑与被测系统逻辑按确定的顺序交替执行,以内存读写的方式设置、读取或记录相同的测试变量,完成测试过程。

步骤1包括:

步骤11、将被测系统待观察与待操作变量集中列出,形成变量池;

步骤12、针对变量池生成混合编程适配代码。

步骤2包括:

步骤21:根据测试需要在被测系统代码中选取测试脚本插入点;

步骤22:编译生成可嵌入脚本的被测试系统程序。

还包括:

步骤3:如果测试所涉及变量池需要修改,则进入步骤11;否则进入下一步;

步骤4:编写或更新测试脚本;

步骤5:运行嵌入测试脚本的被测系统程序,并观察测试过程;

步骤6:如果测试过程不符合预期,说明测试逻辑不正确,则进入步骤3;否则结束测试。

本发明的有益效果:

利用脚本编写测试逻辑,可以实现测试员与系统开发人员的解耦合,简化测试逻辑编写和执行流程,使测试操作被形式化地记录,实现测试操作和测试经验的复现、复用与积累。采用将测试脚本嵌入被测系统代码中的测试方案,可以避免测试操作效果受到通信延迟的影响,使测试逻辑执行频率和准确度得到提升,使测试操作可复现性增强。

附图说明

图1为现有人工系统测试框架示意图。

图2为现有基于程序间通信的自动系统测试框架示意图。

图3为本发明基于嵌入式脚本的自动测试框架示意图。

图4为本发明基于嵌入式脚本的自动测试方法流程图。

具体实施方式

如图3所示,本发明将所有测试变量集中列出后,统一生成适配代码,使这些变量可被脚本程序与被测系统程序同时操作或观察。这样,测试脚本对测试变量的修改无需经过复杂通信机制即可在被测系统程序中生效,而被测系统中测试变量的更新也可立即被测试脚本程序观察到。

通过在被测系统代码中嵌入测试脚本程序段,使测试逻辑与被测系统逻辑按确定的顺序交替执行,以内存读写的方式设置、读取或记录相同的测试变量,完成测试过程。

由于被测系统功能比较确定,并追求较高的运行效率,所以被测系统开发需要选用编写效率较低(抽象程度有限),而运行效率较高的开发语言(如c++);测试过程追求灵活多样,对编写效率要求较高(抽象程度高,更接近自然语言),而对运行效率要求不高,因此适合采用高级语言(如lua脚本)来描述。上述两种工作对于程序开发人员的要求各不相同,采用不同的编程语言可以使系统开发人员和试验员的角色解耦合,使两种岗位配套有不同专业侧重的人。

将脚本程序插入被测系统代码中混合执行,相当于在被测系统中引入了一段不参与编译的自由代码。这段代码可以被随时替换,十分适用于逻辑自由度较高的测试工作。对于非实时系统,这种测试逻辑与被测系统逻辑混合运行的方式不会改变程序运行时序;对于实时系统,只要插入运行的测试脚本未耗尽被测系统每次同步前的运行时间余量(一般有30%),则这种混合运行方式就不会影响系统实时性或改变程序运行结果。由于大多数传统上由人完成的测试操作运行耗时相于对被测系统程序运行耗时来说都可以忽略不计,所以大部分系统的测试过程均可应用本技术方案。

如图4所示,本方案具体实施途径如下:

步骤1:根据被测系统编程语言,选择可与之混合编程的脚本语言。

步骤2:将被测系统待观察与待操作变量集中列出(称这些测试变量的集合为“变量池”)。

例如c/c++语言中,可以将变量池集中写入同一个头文件(.h文件)中。

步骤3:针对变量池生成混合编程适配代码。具体来说,就是完成混合编程初始配置工作,并针对变量池制造允许这些变量被测系统代码和测试脚本同时读写的内存操作机制。由于适配代码生成目标十分固定,所以可采用自动代码生成工具,快速大量产生适配代码。

例如c/c++与lua脚本混合编程时,用tolua++代码自动器可以直接读入变量池头文件,自动生成全部适配代码。将包含适配代码的源文件(.c文件)与被测系统代码一起编译后,lua脚本与c/c++代码即可同时操作变量池中所有变量。

步骤4:根据测试需要在被测系统代码中选取测试脚本插入点。具体来说,就是在被测系统程序中选取使测试逻辑生效的最佳代码行位置。

例如飞行控制系统测试中,可以在飞机状态更新代码段之后、传感器捕获飞机状态代码段之前插入测试脚本执行语句,以达到直接更改飞机本体状态,而不干涉传感器系统工作过程的目的。由于插入测试逻辑的方法十分简单(c/c++混合编程中,仅需调用一句lual_dofile函数),所以可以轻松设置多个插入点,以使测试逻辑渗透到被测系统逻辑的各个部分。由于通信协议执行机制复杂,基于程序间通信的自动系统测试方法一般只选取单个测试逻辑生效点,而很难在多个程序段中分步执行测试逻辑。

步骤5:编译生成可嵌入脚本的被测试系统程序。

步骤6:如果测试所涉及变量池需要修改,则进入步骤2;否则进入下一步。

步骤7:编写或更新测试脚本。

步骤8:运行嵌入测试脚本的被测系统程序,并观察测试过程。

步骤9:如果测试过程不符合预期,说明测试逻辑不正确,则进入步骤6;否则结束测试。

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