康瑛石,刘秀峰
(1.浙江工商职业技术学院,浙江宁波 315000; 2.奥博学术大学计算机系,图尔库 20520)
基于Q tronic工具的在线测试产品设计
康瑛石1,刘秀峰2
(1.浙江工商职业技术学院,浙江宁波 315000; 2.奥博学术大学计算机系,图尔库 20520)
运用了一种基于模型的测试工具Q tronic,优化设计出一个系统测试模型产品,并分析了如何实现适配器和如何运用自动生成的测试实例对系统进行有效测试.测试结果证明,一个成功的设计模型产品能极大地提高发现系统隐藏错误(Bugs)的机会.
模型产品设计;在线测试产品;适配器
传统软件测试难以胜任手动测试的过程,不能处理复杂的软件规格.为解决这一难题,通过采用新的途径从系统规格中自动获得测试案例.途径之一便是模型测试产品(MBT),运用该产品测试可以根据模型的部分描述或给定的完整系统而自动生成.用模型测试产品可以代替上百次的手工绘制测试案例,如测试设计者写出被测试系统(SU T)的抽象模型,模型测试工具将从模型里自动产生一套测试案例.优势在于测试的产生过程能够在模型里系统地形成与测试需求相关的所有组合,从而实现测试设计的自动化过程.
测试案例根据给定的模板,临近备用设备基于被测试系统的执行自动生成.产生的被测试系统的输出和时间排序会在测试时进行详尽的动态检测.
离线测试是传统的测试方法.依此方法,测试案例的产生和执行是分成两个互相独立的阶段的,所有的测试案例都是先产生后执行.与传统的离线测试相比,在线测试体现了其长期测试的优势,如测试可持续数小时甚至数天,减少了离线测试时状态空间爆炸的问题,并允许非确定性、即时系统测试[1].
模型测试产生于像电话交换器这样的硬件测试,近几年已经扩展到软件领域[2].模型测试已发展成不同风格的研究工作.例如文献[3-4]包括大范围的模型测试工作.人们已经研究了模型测试的生成技术并将此技术运用于一些工业系统[5-6].一些模型测试工具得到了很好的发展,如:A ETGG,Case M aker,A TD-Automated Test Designer和Conformiq Qtronic等[7].
我们运用Conformiq Qtronic(1.0.5版本)工具来执行手机游戏服务在线模型测试.当输入既定的系统的“设计模型”时,Confo rm iq自动导出测试.导出的测试实际上是黑盒测试,它取决于性能的模型和测试系统的端口状态和设置,而非实施的内部结构[8].Q tronic提供在线和离线测试模式两个补充模型来配置导出测试.在线模式中,Qtronic从设计模型中产生大量不同的测试案例,并直接在运行的系统中执行.离线模式中,从模型中产生测试脚本,随后可在系统中独立执行.
本文通过Q tronic建模型以及演示在线测试来展现测试模型设计,讨论了适配器插件法的创建以及运行测试,并分析测试了结果.
在ABOT系统中,一个物理区域内游戏者可以用像手机那样的便携设备进行交互式游戏.服务器在游戏者手持的屏幕上用电子地图提供物理游戏区域交换.便携设备会随着游戏者在游戏区域内的位置定期更新服务器.服务器计算所有游戏者的图像区域,并将运算出的信息发布给所有在线登陆的游戏者们.根据收到的位置信息,游戏者可以和其他游戏者进行打斗,或根据程序(客观的能够提高游戏者的经验价值)在一个可打斗的距离,程序可根据打斗随意移动.如果俘获一个机器人,便能获得程序中的机器人的点数.如果游戏者在打斗中失败,他的经验价值还有所拥有机器人将被分配给赢家.失败者可以通过返回主页凡人方式复活.
ABOT游戏服务器的结构有两个主要部件(见图1).通信管理器,作为服务器和游戏管理者的一个信息媒介,基本上是服务器的引擎.游戏管理者,所有的输入信息首先由信息分析器进行分析以便后续工序.然后,一个“客户经理”对游戏者进行身份验证和注册,然而,登陆的游戏者和点数是由“游戏经理”和“点数经理”分别管理的.“打斗结果经理”用来决定打斗的结果,“位置经理”用来变换GPS位置到游戏者的像素位置,并运算游戏者与其他所有游戏者、交换服务器和游戏者们之间的数据,不对称的交换会被用到.也就是说游戏者用点对点(PtP)方式,通过3G或GPRS技术链接,将数据发送给服务器,服务器通过无线的DVB-H媒介将数据发布给其他游戏者.这一方法使游戏者们可以积极地进行游戏互动,服务器可以修改游戏设置并发布适当的数据给游戏者们.信息结构经常在服务器和游戏者之间交换信息(见图2).信息的每个字段解释见表1和2.
图1 ABOT的结构
图2 ABOT的信息结构
表1 信息结构描述
表2 信息类型描述
我们需要用Qtronic模型语言(QML)建立被测试模型,从而能够用Qtronic工具执行在线测试. QML即用文本也用图示的符号.然而,图示符号总是要依赖文本符号进行完善.文本的QML基本属于变种的Java语言[9],然而,图示模型用状态机提供基本模型,没有像正交直线或历史状态那样的先进特征.一个图示编辑Qtronic制造模型者创建和编辑图示的规格.
在QML中,系统的静态描述类似Java语言的类别定义.此外,还类似标准Java特征(像构造器方法、分类方法等)系统规格,包括系统端口的定义,数据类型通过这些端口输入或输出.程序1体现了系统分程序描述ABO T服务器端口,即输入接受信息,输出发送信息.
用程序2列出服务器用到的5种数据类型.其中,M sgHdr是其他3种输入数据类型的超级类型.输入信息记录类型有3种:
●账户:游戏者用来登录的用户名和密码;
●战绩:显示游戏者的战绩或机器人的战斗结果;
●超时:显示超时信息的类型.
输出记录数据类型“回应”用来通过被测试系统对检验器进行信息宣布,同时也宣布字段信息类型TOC和信息目录.
完成了对系统端口和通过这些端口输入输出的数据类型的定义以后,整个体统就成为一个Java.通过扩展状态机的类别,机器人类别将有一个从超级类别获得的Run(自动运行项)程序执行的线程.如果文本QM T符号用来具体说明服务器的性能,那么执行状态机的编码就会被添加到Run程序.然而,如果选择图解模型建模服务器性能,因为性能会从图解模型输入,所以就没有必要定义Run程序了.
我们的研究采用QM T的图解表示法建模服务器性能.通过分析服务器的需求,得到下列几个主要功能:
●用户账户管理:负责新玩家的注册和账户认证;
●战绩管理:裁决游戏者之间和游戏者与机器人之间的打斗结果,并不断改变机器人的所属权;
●游戏者与机器人位置管理:更新游戏者的实际位置,分别发布游戏者和机器人的像素信息.
基于上述这些功能,我们把服务器分为6个状态,如图3所示.在程序3编码摘录中可以看到,状态机对转变的作用如同机器人类别中的程序一样.在执行测试时,服务器的状态机将会通过从状态机获得的start程序启动.
图3 ABOT游戏服务器状态机
生成设计模型令人关注的方面是SU T超时性能的建模.每当注册玩家变换位置,服务器就会通过GPS定位系统接收信息.服务器收集位置信息并有规律地(每隔5 min)把它发送给游戏中的所有玩家.我们理想地认为,既然发布信息体系完全独立于服务器的其他活动,那么它应该用服务器状态机的图解状态来建模.然而,QM T的图解版本并不支持图解状态,所以我们用QM T的文字版本把信息发布系统建模成一个单独分开的QM T线程.实际上,SU T的任何模型都可以解读并且能够在电脑运作时间当作线程来应用.因此,我们可以为一个给定的类别增添多个线程,扩展状态机的类别.这种方法在展示在机器人类别的main功能里.
要进行在线测试,Qtronic必须通过适配器连接到SU T上.适配器用来把Qtronic的普通端口转换成测试系统的某个端口(实验中用输入/输出端口表示).此外,适配器是缩小模型与SU T之间抽象缺口的好方法[8].因为基于模型的测试工具产生的测试程序组太抽象了,没有足够的具体细节,测试系统不能进行测试.图4表示在线测试结构中的适配器.
图4 在线测试适配器架构
在线测试过程之初,适配器作为一个C++动态链接库(DDL)的插件输入Qtronic.测试一开始,适配器就按照由测试器启动的本身特有的线程运行.当Q tronic发送数据时,适配器就接受程序要求,它还把从SU T那里接收到的数据送回到Qtronic那里{qtronic08}.为了简化这个机制,Qtronic运用一种普通的数据类型,即datum与适配器进行通信.适配器的任务就是从SU T支持的数据类型转换数据.
在适配器的安装启用中有两个端口用来和测试器进行通信,即接受端口和发送端口.接受端口程序是测试器把数据发送到SU T,而发送端口程序则是适配器把SU T发送的信息返送回测试器.输入端口和输出端口用来执行与SU T的通信合作.程序4给出的编码样本,展示的就是当玩家操作时,适配器与Qtronic测试器和SU T的通信活动.同样也展示了普通数据类型datum是怎样转换成SU T具体数据类型的.在案例中,注册程序力求构建一个能够被发送到ABOT游戏服务器的登录信息,而接受信息程序则用来检索由服务器返送回来的回应信息.
只有基于普通数据类型的Datum才会在Q tronic和适配器之间交换.适配器与SU T交流时要把普通数据测试器从内部的QML record数据类型转换成具体的数据类型、子类型.QML record是用来建模数据类型的,而数据类型由运用了reco rd数据类型的设计模型定义的(见程序2).Datum和QM TRecord之间的转换在程序4中表示出来.这是QMLDataM apper和Datum Factory类别完成的.在这个程序末尾,我们构建了一个Response记录,设置其字段值,从而使数据从QM TReco rd转换成Datum,最终发送到测试器.
更确切地说,ABO T游戏服务器在线测试是用来核对服务器和游戏者之间发送与接收信息的准确性.也就是说,每当服务器接收到测试器的信息,我们期待服务器执行接收这条信息的任务;当服务器发送一条信息给测试器时,我们预料服务器会产生结果.例如,一玩家注册时,typeOfContent=x08信息就会发送到服务器,服务器接收到注册信息时就会核实玩家的账户登记.如果玩家注册成功,服务器就反送回一条信息typeOfContent=x09,否则就显示注册失败.
Qtronic在线测试时,需要下载系统模型和适配器插件.下载完系统模型之后,Q tronic将检测模型的结构是否完整,报告不匹配之处.Q tronic根据给定的模型自动生成测试案例,排除有悖于实际系统运行的案例,逐个确认测试结果的有效性.测试进行中,像过渡范围和状态范围这些基于模型的范围标准是用来指导测试生成的.可以安装的测试执行过程的附加选项也有很多,如已选标准的Stop at 100% Coverage,或者是运行单一测试案例的Single Test Run,图5显示的就是Qtronic的用户界面.
图5 运行测试的用户界面
表3是从应用于ABOT服务器的测试执行过程(在线模式)的结果中摘录的一部分.符号→表示系统对Qtronic生成的SU T的输入,而符号←表示SU T观察到的反应.有了生成测试序列,来自于SU T的反应信息就会受到模型现行状态的检查,就这样通过检查证明其正确性.由于SU T是确定的,其他的测试运行就会产生不同的结果序列.
我们对表3中展示的测试给以解释说明.第1行,注册者拥有用户名和密码,但是字段为空,导致第2行的注册失败信息.在第3行里,一个用户(用户2)试着注册,这一次成功了,SUT回复了信息并给这个用户分配了角色任务.随后,在第5行SU T收到建立新账户的请求,系统在第6行回复确认成功.7到18行描述的是两个玩家之间的打斗场景.第7行里的玩家打斗数据信息早在两个玩家打斗之前就发送了,然后是玩家和对手的详细信息.玩家对手分析打斗数据并给初始玩家提供结果(第9行和第10行).其他两条打斗结果信息是发送给SU T的打斗结局.可能有3种结局:我输了、我赢了和不确定,分别由信息类型0,1和2来表示.一般SUT每5min会把游戏里所有玩家的位置发送给所有在线注册玩家.[Response 2发布玩家位置信息]第23,24和25行是SU T通过输出端发送给测试器的单向信息.
表3 Otron ic测试ABOT游戏服务的运行过程
通过对ABOT服务器的在线测试,已发现3个程序错误.
错误程序1在转变bot所属列表时,服务器显示错误:“分隔错误”.例如,在确定战斗结果时,如果转变bot的所属列表,如将bot从输家列表上转移赢家列表,服务器即显示错误并崩溃.这一错误在3处都出现过.
原因是当C++STL的迭代器的某一成分丢失,迭代器便失效.当下一成分出现时,错误即显示.原代码如下:
错误程序2当将长期不操作的玩家移出玩家控制管理时,程序显示“分隔错误!”.显示的错误如下.
检查长期无操作的玩家
玩家181831长时间无操作
玩家管理:删除玩家18183
发送退出系统信息
游戏大师.cpp 1026行:p is null分隔错误.
这一错误发生的原因与错误1类似.导致这一错误的代码如下:
错误程序3当服务器收到信息时显示错误“争论无效”.这一程序在沟通经理和游戏大师这两个服务器启动时出现错误.
主机名称:localhost.localdomain
SOCKET已开
确认SOCKET可再用
端口已连上
收听……
接收器(25285)接受新信息:从127.0.0.1的新连接
服务器:新连接自127.0.0.1
接收器ID=26064 TOC=0
发送器(25288)阅读信息表的信息
无效
解决这一错误程序的办法是确保游戏大师先于管理经理开启.
本文细致地描述了SU T模型设计及其优化措施.另外,试用了另一种正在研发的产品——适配器.用其对模型和SU T进行测试.通过案例分析了Otronic测试器的运行.通过更改软件,测试其他设计软件变得更方便.我们通过利用QML建立一个文本模型,通过分线传递信息只需5 s.试用了无分区连接服务器,并使用分开的程序设施,因此每5 s从服务器发的信息都能直接发送到Q tronic.
[1] M IKUCION ISM,LARSEN K G,N IELSENB.T-Uppaal:onlinemodel-based testing of real-time systems:tool Demo[J].In the 19th IEEE International Conference on Automated Software Engineering,2004,51:396-397.
[2] EI-FAR I K,W H ITTA KER J A.Model-based software testing[M].Wiley:Encyclopedia on Softw are Engineering,2001: 231-256.
[3] PETREN KO A.Fault Model-D riven test derivation from finite state models:annotated bibliography[J].Lecture Notes in Computer Science,2001,2067:196-200.
[4] GRONAU A,HARTMAN A,KIRSH IN K,et al.Methodology and architecture for automated softw are testing[M].Haifa: IBM Research Laboratory in Haifa Technical Report,2000:147-213.
[5] LARSEN G,M IKUCIO ISM,N IELSEN B.Online testing of real-time system s using UPPAAL[M].Austria:Wo rkshop on Fo rmal App roaches to Testing of Software,2004:367-382.
[6] MARIUSM,LARSEN K G,LARSEN B N,et al.Testing real-time embedded softw are using UPPAAL-TRON-an industrial case study[M].New Jersey:In Embedded Softw are(EMSOFT),2005:139-148.
[7] U TTING M,LEGEARD B.Practical model-based testing[M].Morgan Kaufman:A Tools App roach,2007:298-312.
[8] HU IMA A.Imp lementing conform iq Qtronic[J].In Test Com/FA TES,2007,35:1-12.
Onlinemodel-based testing design using the Qtron ic tool
KANG Ying-shi1,L IU Xiu-feng2
(1.Zhejiang Business and Technology Institute,Ningbo 315000,China; 2.Department of Computer Science,Abo Akademi University,Turku 20520,Finland)
In this paper,online model-based testing design using the Q tronic tool:1)describe the techniques used to design and op timize the model;2)imp lement a m iddle-w are p roduct-the adap ter; 3)integrate the adap ter w ith the testing model and the SU T;4)run the online tests using themodelbased testing tool,qtronic.Our results demonstrate that a successful design increases the chances of discovering hidden imp lementation errors.
model design;online model-based testing;adap ter
TP311
520·60
A
1000-1832(2010)04-0066-10
2010-09-18
国家发改委基金资助项目(20083293).
康瑛石(1955—),男,副教授,主要从事机电产品设计开发与教学研究.
(责任编辑:石绍庆)