免费论文查重: 大雅 万方 维普 turnitin paperpass

试述一种用于自动化测试脚本语言设计与实现

最后更新时间:2024-01-26 作者:用户投稿原创标记本站原创 点赞:5843 浏览:16835
论文导读:映射表,能够将被测试程序的接口符号绑定到测试脚本之中,可以不通过其他渠道,直接驱动被测试软件14多任务、高并发的协程机制为了实现测试操作的多任务性,引入了协程机制,协程不同于一般的例程或者是函数,它能够被人为的制约执行流程或挂起在RSscript中,加入了yield关键字来挂起当前的任务,执行后续的任务15支持库
【摘要】 对软件进行经常性、规范的测试是保证软件质量的重要手段灵活地使用脚本技术,能够使软件测试更加的自动化软件测试的脚本化在大大的减少测试人员的工作量的同时,使整个测试项目更易被维护测试用的脚本语言具有较好的可移植性,使脚本代码具有很强的复用性与通用性,所以,设计实现了一种自动化测试的脚本语言 RSscript,并对该语言的设计思路、实现及其应用加以阐述
【关键词】 自动测试;脚本语言;编译器
0引言
近年来,软件行业蓬勃发展,软件的规模急剧增大,对软件的测试所需要的工作量越来越大,操作也越来越繁琐因此,建立一种易维护、可复用、高度自动化的测试策略的需求也越来越迫切
在测试中使用脚本技术是实现软件测试的自动化的有效手段以脚本代码的形式描述测试用例、测试步骤较之测试人员手动实现更为规范、精确;脚本语言的宿主虚拟机能够反复地、高速地执行脚本代码,极大的减少了测试人员的繁冗操作,提高了测试工作的复用性与可维护性
目前市场出现了多种具有脚本技术的软件自动化测试框架或平台,但是所附带的脚本语言体系简单,特性单一该文将对作者所设计的一种具有丰富特性的脚本语言加以阐述
1脚本语言 RSscript的特色
11语法风格严谨、简便
RSscript语法风格接近C/C++,但是比其二者语法要求更加规范严谨同时充分的考虑到了测试人员在编写代码时对于简便快捷的要求,增加了譬如foreach ,quote之类的“语法糖”,这些“语法糖”仅存在于预处理期之前,故而在提高便携性的同时不会降低脚本的执行效率
12高度动态化的面向对象技术
大部分现代化高级编程语言都实现了OO(object oriented)特性,OO技术能够提供对代码非常好的组织能力,RSscript语言为了方便测试人员组织测试项目,同样加入了OO特性,但没有照搬模仿诸如JA 、C++的OO实现方式,JA、C++等高级语言在编译阶段就已确定类型的结构及继承体系,而RSscript的面向对象是高度动态的,在编译阶段,仅仅确定了对象成员的元数据,但是并没有对类型以及操作方式做任何推断,所以测试人员非常自然的在编程时享受多态、函数闭包的好处
13与被测试程序的无缝交互
RSscript脚本引擎会在测试开始之前,建立一个通信管道同时建立一个被测试程序的接口映射表,能够将被测试程序的接口符号绑定到测试脚本之中,可以不通过其他渠道,直接驱动被测试软件
14多任务、高并发的协程机制
为了实现测试操作的多任务性,引入了协程机制,协程不同于一般的例程或者是函数,它能够被人为的制约执行流程或挂起在RSscript中,加入了yield关键字来挂起当前的任务,执行后续的任务
15支持库依赖程度低、可跨平台
为了方便测试不同的操作系统下的软件,脚本引擎本身被设计为高度跨平台,其具体实现使用遵循的ANSI -C 89标准的C语言编码完成RSscript仅仅依赖与少量的标准库,这使脚本语言引擎本身可以在绝大部分部分的平台上能够顺利编译成功目前,已经windows(xp或者更高版本)、linux (kernel26以上)、Mac OS X测试编译通过,执行情况良好
2嵌入式测试脚本语言RSscript的实现
RSscript脚本引擎对脚本代码执行的操作总体而言分为四个步骤:“预处理+字节码编译+主控程序与被测系统的交互+解释执行”,每个步骤都使用了一个或几个模块,以下将阐述全部步骤以及所使用的模块的实现细节
21预处理
预处理是在程序源代码被编译之前,由预处理器(Preprocessor)对程序源代码进行处理这个过程并不对程序的源代码一种用于自动化测试的脚本语言的设计与实现相关范文由写论文的好帮手www.7ctime.com提供,转载请保留.进行剖析,但它把源代码分割或处理成为特定的符号用来支持宏调用
首先,bufferloader模块将脚本代码读入缓存,并将缓存的地址传给preprocessor模块,该模块负责对代码文本进行预处理,把不会被执行的注释消除,并完成宏展开、以及将一些“语法糖”转换成规范的形式,紧接着压缩空白符的数量,提高接下来的词法分析速度
22字节码编译
Preprocessor将处理的结果提交给lexer_analyzer模块负责分析词法
lexer_analyzer本质是一个字符串扫描器,扫描器的游标不断向后扫描并获得一个子串与内置的一个词法单元类型的hash表I中的模式串进行字符串全匹配把匹配的结果以及该子串提交给语法分析器
23主控程序与被测系统交互
编译阶段完成之后,虚拟机(VM)会与被测试的软件交互,API_register模块将会寻找软件导出C/C++的函数接口的地址,并与之前syntax_analyzer提供接口的字符串形式使之与编译阶段生成的符号表匹配、绑定,完成接口链接VM使用pipe_holder分配一定大小的缓存(默认64K)来建立字符管道
24解释执行
31被测试系统简介
目标系统是一个简易的制约小车系统,通过外部给定的输入,制约小车进行直行、旋转、并根据摄像头输入的数据捕捉障碍物、测距,使小车能够具有一定的避障能力
32测试任务
测试人员通过脚本输入一组障碍物的数据,同时通过该系统提供的接口函数,截获系统所响应的序列,并记录使测试人员能在模拟的环境下,测试该代码的性能与效果
4
结束语
该文给出了一个用于程序自动化测试的脚本语言的设计、实现及其实际测试举例现在这个脚本语言已经成为我们工程中的一个重要技术,进一步的工作是不断的提供新的调度操控方式,并提供可视化的编辑工具,方便测试人员使用
参考文献
[1]Alfred V Aho , Monica S lam, Ri Sethi , et al Compilers Principles Techniques and Tools Second Edition[M] 赵建华,郑涛,戴新宇,译北京:机械工业出版社,20092论文导读:ilersPrinciplesTechniquesandToolsSecondEditionBebenitaM,BrandnerF,FahndrichM,etalTillmann,andHVenterSPUR:atrace-basedJITcompilerforCILInProceedingsofACMconferenceonObject-OrientedProgramming,Systems,Languages,andApplications(OOPSLA),2010708-725赵斌
29-273
[2]Newell A, Shaw J C Programming the logic theory machine[C] Proc Western Joint Computer Conference, 1957
[3]Ullman J D Fast algorithms for the elimination of common subexpressions Acta Inf, 1973(2):191-213
[4][ZK(#]Alfred V Aho, Monica S lam, Ri Sethi, et al Compilers Principles Techniques and Tools Second Edition[M]
[5]Bebenita M, Brandner F, Fahndrich M,et al Tillmann, and H Venter SPUR: a trace-based JIT compiler for CIL[C] In Proceedings of ACM conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA),
2010
708-725
[6]赵斌飞,刘磊 测试脚本自动生成器的设计与实现[J] 计算机科学,2008(6)
[7]Jeremy Siek, Philip Wadler Threesomes, with and without blame In Script to Program Evolution (STOP), 2009
(责任编辑:李家云)