CN107678944B - 基于嵌入式脚本的自动测试方法 - Google Patents
基于嵌入式脚本的自动测试方法 Download PDFInfo
- Publication number
- CN107678944B CN107678944B CN201710785877.XA CN201710785877A CN107678944B CN 107678944 B CN107678944 B CN 107678944B CN 201710785877 A CN201710785877 A CN 201710785877A CN 107678944 B CN107678944 B CN 107678944B
- Authority
- CN
- China
- Prior art keywords
- test
- script
- tested
- testing
- variables
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (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
本发明属于数字系统测试技术领域,设计一种基于嵌入式脚本的自动测试方法,实现兼顾测试逻辑编写效率与测试操作运行效率的高效自动测试。技术方案包括:步骤1、将所有测试变量集中列出后,统一生成适配代码,使这些变量可被脚本程序与被测系统程序同时操作或观察;步骤2、通过在被测系统代码中嵌入测试脚本程序段,使测试逻辑与被测系统逻辑按确定的顺序交替执行,以内存读写的方式设置、读取或记录相同的测试变量,完成测试过程。
Description
技术领域
本发明属于数字系统测试技术领域,具体涉及一种基于主流编程语言(如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;否则结束测试。
Claims (3)
1.一种基于嵌入式脚本的自动测试方法,其特征在于,包括:
步骤1、将所有测试变量集中列出后,统一生成适配代码,使这些变量可被脚本程序与被测系统程序同时操作或观察;
步骤2、通过在被测系统代码中嵌入测试脚本程序段,使测试逻辑与被测系统逻辑按确定的顺序交替执行,以内存读写的方式设置、读取或记录相同的测试变量,完成测试过程;
步骤2包括:
步骤21:根据测试需要在被测系统代码中选取测试脚本插入点;飞行控制系统测试中,在飞机状态更新代码段之后、传感器捕获飞机状态代码段之前插入测试脚本执行语句;
步骤22:编译生成可嵌入脚本的被测试系统程序。
2.如权利要求1所述的一种基于嵌入式脚本的自动测试方法,其特征在于,
步骤1包括:
步骤11、将被测系统待观察与待操作变量集中列出,形成变量池;
步骤12、针对变量池生成混合编程适配代码。
3.如权利要求2所述的一种基于嵌入式脚本的自动测试方法,其特征在于,还包括:
步骤3:如果测试所涉及变量池需要修改,则进入步骤11;否则进入下一步;
步骤4:编写或更新测试脚本;
步骤5:运行嵌入测试脚本的被测系统程序,并观察测试过程;
步骤6:如果测试过程不符合预期,说明测试逻辑不正确,则进入步骤3;否则结束测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710785877.XA CN107678944B (zh) | 2017-09-04 | 2017-09-04 | 基于嵌入式脚本的自动测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710785877.XA CN107678944B (zh) | 2017-09-04 | 2017-09-04 | 基于嵌入式脚本的自动测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107678944A CN107678944A (zh) | 2018-02-09 |
CN107678944B true CN107678944B (zh) | 2020-12-29 |
Family
ID=61134888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710785877.XA Active CN107678944B (zh) | 2017-09-04 | 2017-09-04 | 基于嵌入式脚本的自动测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107678944B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541045A (zh) * | 2010-12-31 | 2012-07-04 | 镇江灵芯软件实验室有限公司 | 一种自动测试可编程逻辑控制器程序的方法 |
CN102567014A (zh) * | 2011-11-14 | 2012-07-11 | 南京天溯自动化控制系统有限公司 | 一种Lua脚本在SCADA系统中实现动画的方法 |
CN103729189A (zh) * | 2013-12-31 | 2014-04-16 | 福建星网视易信息系统有限公司 | 基于lua的播放协议转换方法、系统、终端 |
CN106444633A (zh) * | 2016-11-09 | 2017-02-22 | 湖南戈人自动化科技有限公司 | 一种运动控制系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100543701C (zh) * | 2007-12-25 | 2009-09-23 | 中兴通讯股份有限公司 | 一种实现嵌入式软件异常测试的方法及系统 |
US20140143762A1 (en) * | 2012-11-21 | 2014-05-22 | Fujitsu Limited | Symbolic execution of dynamic programming languages |
CN103995777A (zh) * | 2014-05-29 | 2014-08-20 | 上海科梁信息工程有限公司 | 嵌入式软件黑盒自动化测试系统及测试方法 |
CN106443245A (zh) * | 2016-09-06 | 2017-02-22 | 南京大全自动化科技有限公司 | 一种光伏箱变测控装置生产自动化测试方法 |
-
2017
- 2017-09-04 CN CN201710785877.XA patent/CN107678944B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541045A (zh) * | 2010-12-31 | 2012-07-04 | 镇江灵芯软件实验室有限公司 | 一种自动测试可编程逻辑控制器程序的方法 |
CN102567014A (zh) * | 2011-11-14 | 2012-07-11 | 南京天溯自动化控制系统有限公司 | 一种Lua脚本在SCADA系统中实现动画的方法 |
CN103729189A (zh) * | 2013-12-31 | 2014-04-16 | 福建星网视易信息系统有限公司 | 基于lua的播放协议转换方法、系统、终端 |
CN106444633A (zh) * | 2016-11-09 | 2017-02-22 | 湖南戈人自动化科技有限公司 | 一种运动控制系统 |
Non-Patent Citations (1)
Title |
---|
基于LUA脚本语言的光模块测试系统;倪君;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715(第07期);I138-383 * |
Also Published As
Publication number | Publication date |
---|---|
CN107678944A (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5202889A (en) | Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs | |
CN105512036A (zh) | 根据预置规则自动生成测试用例的测试模板及测试方法 | |
US10936474B2 (en) | Software test program generation | |
US9317405B2 (en) | Test double generation | |
US9235669B2 (en) | Method and an apparatus for automatic processor design and verification | |
Singh et al. | Automated testing of mobile applications using scripting technique: A study on appium | |
CN104021072A (zh) | 用于评估失效的软件程序的机器和方法 | |
CN106021101A (zh) | 对移动终端进行测试的方法及装置 | |
US9235670B2 (en) | Method and an apparatus for automatic generation of verification environment for processor design and verification | |
CN107918585B (zh) | 用于测试软件程序的方法和装置 | |
CN106093897A (zh) | 一种雷达系统的测试系统及测试方法 | |
Lee et al. | Requirements modeling and automated requirements-based test generation | |
CN106649094A (zh) | 一种基于EventViewer开发过程中的测试方法 | |
CN116069635A (zh) | Soc系统的测试方法、装置、计算机设备及存储介质 | |
CN115269393A (zh) | 一种基于硬件的程序动态函数调用序列追踪方法和装置 | |
CN107678944B (zh) | 基于嵌入式脚本的自动测试方法 | |
US9529963B1 (en) | Method and system for partitioning a verification testbench | |
CN109783837A (zh) | 仿真设备、仿真系统、仿真方法和仿真程序 | |
KR20150047007A (ko) | 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 | |
CN109032941A (zh) | 测试用例驱动的可持续集成接口自动化测试方法及系统 | |
CN110209565A (zh) | 一种元数据模型调试方法及其装置 | |
WO2017201853A1 (zh) | 基于切片模型的程序回归错误定位方法 | |
US11409939B2 (en) | Test generation systems and methods | |
CN110688271B (zh) | 一种应用于处理器芯片仿真验证的可控随机故障注入方法 | |
JP5021584B2 (ja) | マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |