基于MSC的私服游戏软件测试方法研究-征途私服
目前 ,游戏产业迅猛发展 ,游戏测试已成为游戏产品开发 不可缺少的环节 。然而 ,我国的游戏软件测试特别是私服游戏 软件测试技术还没有得到很好的研究 ,这给私服游戏软件的发 展带来一定的障碍 。游戏的可玩性测试是一项新的测试需求 , 随着私服游戏的发展 ,这种需求还会不断增加 。然而 ,征途私服游戏的 可玩性测试的相关方法和技术还没有形成 ,游戏测试更多地是 采用 β测试来完成 ,即通过发布试用版游戏来达到检 测可玩 性的目的 。随着对测试自动化的需求 ,传统的游戏测试方法受 到很大的挑战 。基于模型的软件测试方法是一种新的测试理论 ,它强调测 试模型的设计 , 强调测试与开发 的同步 [ 1 ] 。基于模型 的软件 测试可以根据软件行为模型和结构模型生成测试用例 。文献 [ 2 ]综述了基于模型的软件测试方法的研究现状 ,介绍了三种 软件系统建模方法 ,并给出了一些应用的评述 ,但没有讨论测 试模型与软件系统模型的关系 ,没有区分测试模型与开发模型 的不同 。文献 [ 3 ]从测试与开发过程的角度讨论了测试与开 发的关系 ,但仅从概念上进行了讨论 ,没有给出具体的建模方 法 。文献 [ 4 ]提出了一种新的基于模型的测试方法 ,该方法从 软件实现入手 ,试图导出设计模型 ,并与初始的设计模型进行比较以发现问题 。该方法执行了一条与从建模到检测相反的技术路线 ,但由于该方法的技术支持不够 ,很难得到推广 。文献 [ 5 , 6 ]对手机私服游戏结合协议一致性测试进行了 研究 ,但只对单个客户端和服务器通信的过程进行了测试 ,对 于多个客户端通过服务器交互信息进行通信的情况并没有涉 及 。本文在文献 [ 5 , 6 ]研究的基础上 ,对多客户端私服游戏进 行了研究 ,提出了利用基于模型的测试方法对多客户端私服游 戏进行测试的方法 ,并用魔兽私服游戏测试实例验证了该方法 的有效性 。 2 及 简介 TTCN 23 ( te sting and te st con tro l no ta tion ve rsion 3)即测试及 测试控制表示法第三版是由欧洲电信标准协会发布的一个国 际标准 ,可以用做多种通信端口上的各种响应系统测试的描述 语言 。典型的应用领域是协议测试 (包括 移动协议和互联网 协议 ) 、服务测试 (包括增补服务 ) 、模块测试 、基于平台 、A P Is 等的 CORBA 测试 。 TTCN 23意在用做独立于测试方法 、层和协 议的测试套的描述 [ 7 ] 。 TTCN 23 最新标准规范包括 TTCN 23 核 心语言 、TTCN 23表格表示形式 、TTCN 23图形表示形式 、TTCN 23 操作语义 、TTCN 23 运 行 时 接 口 、TTCN 23 控 制 接 口 、在 TTCN 23 中使用 A SN. 1 ( ab strac t syn tax no ta tion one)等九部分 。 TTCN 23 核心语言是 TTCN 23 标准规范中最重要 的 部 分 。核心语言是基于文本的 TTCN 23 测试语言 。 TTCN 23 的顶层单 收稿日期 : 2008 204 216; 修回日期 : 2008 206 230 基金项目 : 北京市自然科学基金资助项目 ( 4062012 ) 作者简介 :赵会群 ( 1960 2) ,男 ,北京人 ,教授 ,博士后 ,主要研究方向为协议测试 ( zhaohq6625 @ sina. com ) ; 苏玉兰 ( 1981 2) ,女 , 安徽宿州人 ,硕 士研究生 ,主要研究方向为软件测试 ;孙晶 ( 1968 2) ,女 ,副教授 ,博士 ,主要研究方向为软件测试. © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 第 1 期 赵会群 ,等 :基于 M SC的私服游戏软件测试方法研究 ·1 47 · 元是模块 ,一个模块中不能包含子模块 ,但是它可以从其他模块中引入定义 。模块可以带有参数列表去提供测试套参数化 的一个形式 ,一个模块由一个定义部分和一个控制部分组成 。 术语测试 套 与 一 个 包 含 测 试 例 和 一 个 控 制 部 分 的 完 整 的 TTCN 23模块是同义的 。模块的定义部分定义测试成分 、通信 端口 、数据类型 、常数 、测试数据模板 、函数 、测试端口上调用的 过程特征 ( signa tu re s) 、测试例等 。模块的控制部分 调用 测 试 例并控制它们的执行 。消息顺序图 (M SC)是 ITU 2TZ. 120建议中给出的一种形式 语言 ,用来描述多个实体之间和实体与环境之间消息交互的顺 序 。在协议开发中 , M SC 可 以用来描述两个协议实体 之间或 多个协议实体之间 PDU (协议数据单元 ) 的交换时序 ; 在通信 软件中 , M SC可以用来描述两个通信实体之间或多个 通信实 体之间消息交互的情况 。M SC可以与 TTCN 联合 ,支持测试用 例的自动生成 [ 8 ] 。下面结合具体的 M SC图来介绍消息顺序图中的各种实体类型 。图 1为客户端 1和服务器的 M SC 图 。表 1 简单地介绍 了图 1中用到的 M SC图符及含义 。 图 1表示的含义是两个实例 ,即客户端 1和服务器 。客户 端 1向服务器发送 O nD e sk1消息后启动定时器 ,若客户端 1 在 定时器限定时间内接收到服务器的响应消息 O nD e sk1O ver则进 一步向服务器发送消息 Sta rtF ram e1,若征途私服客户端 1 在定时器限定 时间内收到服务器的响应消息 Sta rtF ram eO ve r,则停止定时器 , 状态为 pa ss,定时器超时或接收到其他消息状态均为 fa il。 基于 的私服游戏软件测试方法 目前的私服游戏大多有两种连接类型 , 即端对端连接和 客户服务器连接 , 而用得最多的就是客户 服务器连接方 式 。 本文主要针对客户服务器连接方式的私服游戏可玩性测试进 行研究 。 TTCN 23进行基于模型的私服游戏测试的过程为 : 根据游 戏的玩法建立模 型 ; 接着根 据模型编写 TTCN 23 测试套 , 将编 写完成的测试套生成可执行测试套 ,在测试平台上执行测试 ; 最后分析测试结果形成测试报告 。若被测系统更新而没有改 变游戏规则 ,则原来的测试套可以继续用来测试新的系统 ; 若 改变了游戏规则则需要按照上面的步骤重新进行测试 。测试 过程如图 2所示 。下面解释具体的建模方法和根据 模型编写 TTCN 23 测试 套的步骤 。 1)私服游戏软件可玩性建模方法使用消息顺序图 (M SC ) 对私服游戏的玩法进行建模 。具 体方法如下 : a) 抽象出私服游戏客户端和服务器端的通信规则 。 b) 将游戏客户端和服务器端之间的交互信息描述为消息 顺序图中的消息 。 c) 服务器和客户端各自为一个实例 ,多个客户端的只需 要描述两个客户端的情况即可 ,即一个服务器实例 、两个客户 端实例 。 d) 将服务器和客户端之间的消息交互按照时间的顺序在 对应的实例之间用消息的方式表示 。 e) 在必要的地方加上定时器和其他条件限制 。 f) 每一条逻辑路径最后都需要加上状态 ,描述系统的全 局状态或者局部状态 。 2 )根据建立的消息顺序图模型写出对应的测试套根据模型编写 TTCN 23测试套 ,主要是将 M SC图各实体映 射为 TTCN 23的概念 。具体映射规则如表 2所示 。表 2 消息顺序图和 TTCN 23 概念映射 M SC图 TTCN 23核心语言 实例 PCO 控制观察点消息 发送或接收消息 定时器 定时器 (启动 、停止 、超时 ) 状态 判断线内表达式 ( a lt) a lt语句或者可选步 写测试套的具体步骤如下 : a)定义消息顺序图中出现的消息用到的数据类型和消息 模板 。 b)定义测试配置用来描述构建测试结构的通信端口和通 信组建 。 c)根据模型的消息交互顺序写出对应逻辑的函数 。 d)完成测试例和测试套的书写 。 所谓协议是预先定义好的一系列规则 。协议测试是用来保证协议实现正确性和有效性的重要手段 。协议一致性测试 是依据协议的文本描述对协议的某个实现进行测试 ,检测协议 实现是否符合协议标准 。私服游戏的玩法也是一些特定的规 则 ,如征途私服客户端发送一条命令 ,服务器端有确定的回应消息 。客 户端和服务器通过消息的交互传递信息 。将这些交互的消息 看做是一条一条的规则 ,客户端服务器之间的通信规则理解为 一种特定的协议 。要测试游戏规则的实现是否与设计的一致 , 可以用协议一致性测试方法对其进行测试 ; 而 TTCN 23 是进行 协议一致性测试的规范语言 ,所以用 TTCN 23 对私服游戏的规 则进行一致性测试是可行的 。结合消息顺序图 (M SC ) 易于描 述实体间消息 交 互 和 可 以 与 TTCN 联 合 的 特 点 , 所 以 可 以 用 TTCN 23对私服游戏利用基于模型的测试方法进行测试 。利用这种方法建立的模型和根据模型编写的测试套 ,在游 戏规则不改变的情况下 , 可以用于同种规 则的所有游戏的测 试 。测试套可以重复执行 ,充分体现了可重用的特点 。在一个 测试套中 ,可以自定义很多测试例 ,只需要运行一下即可完成 相应的测试 ,而不再需要一次一次地执行游戏来进行测试 ,更 接近于自动化测试 。在将来的工作中 ,会完成从模型到测试套 的自动转换工作 ,以满足自动化测试的需要 。 一个私服游戏测试实例 本文使用简单的魔兽私服游戏作为测试实例 。该游戏的 主要功能是用户进入游戏大厅 ,选择角色和桌子坐下 ,若有用户选择和自己相同的桌子坐下并选择对应的角色才能开始游 © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net ·148· 计 算 机 应 用 研 究 第 26 卷 戏 。开始游戏后 ,游戏者可以互相向对方扔武器 ,若扔中对方 , 则对方会流血 ,直至其中一方血流干为止 ,游戏结束 。血先流 干的一方失败 ,对方胜利 。该游戏使用 C / S结构开发 ,利用 Socke t通信编程实现客 户端和服务器的通信 。这里服务器的任务是与客户端联机 、接 收客户端请求 、处理消息并发送消息给客户端 。本文将对启动游戏的规则测试实现进行分析说明 。规则 为 :客户端 1 和客户端 2 分别向服务器发送坐上桌子的命令 , 服务器给出对应的回应信息 ,当两个客户端均发送了启动游戏 的命令后 ,征途私服服务器才同时给两个客户端回应游戏界面已启动的 消息 。该过程的 M SC图如图 3所示 。 对客户端和服务器之间消息交互的过程进行详细描述 ,其 中客户端 1和服务器之间消息交互的详细 M SC 图见图 1。同 样可以细化客户端 2和服务器通信的过程 。至此 ,符合第 2 章 中描述的游戏规则的模型已经建立完成 。 1 测试套编写 根据第 2章中的方法把服务器看做是被测系统 ,客户端看 做是测试系统 ,通过 TTCN 23测试例模拟客户端的行为来实现 测试 ,两个客户端可以通过并行测试成分来实现 。具体步骤如 下 : a)首先定义消息顺序图中出现的消息用到的数据类型和 模板 。消息模板的定义有两种方法 ,即逐个定义和采用带参数 的消息模板两种形式 。逐个定义消息模板比较繁琐但便于与 模型中的消息进行对照 ; 带参数的消息模板虽然定义方便 ,但 在不太熟悉的情况 下不易与消息顺序图中 的消息进行对照 。 为便于理解 ,本文采用逐个定义消息模板的方式 ,简单给出几个例子 ,其他模板定义类似 。测试例如下 : b)然后定义测试配置用来描述构建测试结构的通信端口和通信组建 。 typ e po rt h ttp Po rtTyp e m e ssage { ou t request; in re spon se; } typ e componen t system Typ e { po rt h ttp Po rtTyp e system Po rt11; po rt h ttp Po rtTyp e system Po rt12; } 主测试成分和并行测试成分的定义与系统成分定义类似 , 不再赘述 。 c)最后写出对应逻辑的函 数和测试例 , 完成测试套的书 写 。根据图 1 ,客户端 1和服务器之间的消息交互过程用函数 W a rte st_c lien tTwo2 _1 ( )描述 。部分函数如下 : func tion W a rte st_c lien tTwo2 _1 ( ) run s on p tcTyp e { p tcPo rt1. send (O nD esk1 ) ; loca lTim e r. sta rt; a lt { [ ] p tcPo rt1. rece ive (O nD e sk1O ve r) { p tcPo rt2. send ( Sta rtF ram e1 ) ; a lt{ [ ] p tcPo rt2. rece ive ( Sta rtF ram eO ve r) { loca lTim e r. stop; setve rd ic t ( p a ss) ; ⋯⋯ 函数 W a rte st_ c lien tTwo2 _2 与 W a rte st_ c lien tTwo2 _1 相 似 , 不再赘述 。测试例如下 : te stca se W a rte st_ c lien tTwo _ sta rt ( ) run s on m tcTyp e system system 2 Typ e{ va r p tcTyp e1 clien t1: = p tcTyp e1. crea te; va r p tcTyp e2 clien t2: = p tcTyp e2. crea te; m ap ( c lien t1: p tcPo rt1 , system: system Po rt11 ) ; ⋯⋯映射工作 ⋯⋯ c lien t1. start (W arte st_c lien tTwo2 _1 ( ) ) ; c lien t2. start (W arte st_c lien tTwo2 _2 ( ) ) ; c lien t1. done; stop; } 1 测试执行 根据德国 Te sting Tech公司提供的 TTth ree编译器编写测 试套的编码解码器和适配器 ,负责测试执行的控制与被测系统 的通信以及测试系统用户接口的提供 。完成的测试套在自行 [ 9 ] typ e reco rd of cha rstring p ayload; 开发的基于 Ec lip se的 TTCN 23 测试平台上经过编译生成可 typ e reco rd reque st { cha rstring c lien tnum , cha rstring po rtnum , p ayload con ten t } typ e reco rd re spon se { p ayload con ten t } temp la te request O nD e sk1 : = { c lien tnum : = " c lien t1 " , po rtnum : = " 6000 " , con ten t : = { " &onD esk&Dongq iang" , " 4 " , " ORC" } } temp la te re spon se O nD esk1O ver : = { con ten t : = { " conD e skcove r" , " 4 " , " ORC" , " suyu lan" } } 执行测试套 。在该平台上给可执行测试套配置上适配器即可 执行测试 。测试执行结果如表 3所示 。表 3 启动游戏测试套执行结果 测试用例 期望接收数据 实际接收数据 返回判定 W a rte st_c lien t Two_ sta rt ( ) “cSta rtF ram ecove r”“cSta rtF ram ecove r” p a ss 从表 3中可以看出 , 3. 1节中的测试例最后期望接收的数 据是“cSta rtF ram ecove r”,实际接收到的数据也是“cSta rtF ram e2 cove r”,期望数据和实际得到的数据相同 。最后返回的判断为 “p a ss”,测试例执行通过 。 结束语 本文提出了将基于模型的测试和协议一致性测试应用于 私服游戏软件测试的思想 ,并且给出了具体的建模方法和根据模型编写 TTCN 23测试套的方法 。该方法具有 (下转第 161 页 ) © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 第 1 期 沈羽佳 ,等 :基于数据依赖图的主域变量识别方法 ·1 61 · 变量库中被集中管理 ,这样分析人员可以关注于一个模块的主域变量 ,集中精力分析该模块的业务逻辑片段 。表 1为从实例程序中分析出来的主域变量信息 。因为实库两条记录的部分信息 。它们也是来自于公用配变监测系统主站软件的分片 。表 4 公用配变监测系统主站软件分片中的主域变量管理例程序比较简单 ,没有过程间调用 ,同义词变量信息为空 。本 synonym modu le va riab le loca tion synonym synonym 实例仅有一个 m a in函数 ,所以模块信息只有 m a in,变量地址是 行号信息 。表 1 实例程序的主域变量 modu le va riab le loca tion synonym va riab le synonym loca tion synonym modu le m a in sum 4 , 9, 11 m a in n 1 , 3 m a in i 5 , 10 表 2、3 是通过数据依赖图方法得出的业务逻辑提取辅助 分析信息 。表 2 中 ,前相关 ( fo rwa rd re la tion) 变量是指该变量 所依赖的变量 ,后相关 ( backwa rd re la tion ) 变量是指依 赖于该 变量的变量 。表 3 中 , 控 制 依 赖 列 ( con tro l dep endence ) 记 录 了这个变 量由哪些语句控制 。例如 , 变量 n 是 由语句 2 和 7 来控制 。表 2 主域变量相关依赖信息 va riab le loca tion modu le 956 Q s QALL Q PEALL 1781 956 Efram e s onEALL 结束语 本文详细描述了基于数据依赖图的识别主域变量的方法 。 很明显 ,对于大型遗留系统而言 ,该方法能有效地识别出程序 的主域变量 ,同时该方法还能提供一些辅助信息 ,有效管理主 域变量 ,使得数据分析更加容易 。本文方法在纯主域变量的选取上 ,除了启发式之外没有更 好的方法 ,如果漏掉了某些纯主域变量 ,将会给业务逻辑提取 带来很多麻烦 ,很可能造成一连串主域变量的遗漏 。这也是笔 者进一步的研究工作 。
本文来源:征途私服:http://www.ztsf.cn,如需转载[基于MSC的私服游戏软件测试方法研究],请保留版权
本文来源:征途私服:http://www.ztsf.cn,如需转载[基于MSC的私服游戏软件测试方法研究],请保留版权
