时间:2024-05-04
周绍凯,姚砺
(1.东华大学计算机科学与技术学院,上海 200051;2.东华大学计算机软件与理论系,上海 200051)
2016年6月,国家新闻出版广电总局发布了《关于移动游戏出版服务管理的通知》;2016年12月5日,文化部发布了《关于规范网络游戏运营加强事中事后监管工作的通知》。一系列的通知出台,不断地为我国的网络游戏创造更加良好的市场环境。
2017年,游戏市场销售收入已经突破2000亿元,占据了整个泛娱乐产业中四成收入,并且依然处于快速增长阶段,市场三年复合增长率达到21.2%。中国上市游戏企业数量,从2016年底的158家增长到2017年底的185家。
网络游戏本质上是一套强反馈且有社交功能的意义系统,游戏+社交正在以不可忽视的姿态进入人们生活,网络游戏也逐渐成为继文字、图片、视频之后的第四媒介。在各个社交平台上,网络游戏已经成为了社交的一部分,随着社交平台的催化和传播,其也进一步促进了网络游戏的火热。
整个市场越发成熟,网络游戏用户对产品的要求也日趋提高,行业竞争状况也日趋激烈。而对游戏企业而言,提供游戏产品质量保证的重要性不言而喻,其直接影响到公司的声誉及收益。因此,游戏测试已经成为游戏开发过程中极其重要的一个环节,也直接决定着游戏产品的最终质量。
对于更新迭代频繁的网络游戏,在数十个版本之后的内容会非常繁杂,游戏的测试任务复杂、工作量大,对于接口测试、历史功能回归测试和操作多角色测试等,采用自动化的接口测试方案就非常必要。
目前通用的接口测试工具如:Jmeter、SoapUI、Post-Man,其在使用初期效率高、对于测试人员入门较容易,但方式固定、扩展差、二次开发困难,难以用于复杂用例中的接口交互、数据更改等操作。
本文提出并实现了一个用于网络游戏的测试用例自动化执行的测试系统,可以通过独立和简单的测试用例编写,对复杂的网络游戏项目进行自动化接口测试。
对于自动化测试用例的设计,需要考虑到测试的针对性和用例的可复用性。本文设计的测试系统所面向的游戏公司,其已有多款三至五年版本内容的线上游戏,积累有大量的测试用例以及所遇到的各种问题,但实际测试时仍以手工测试为主。本文针对手工测试的成本高及测试覆盖局限性,基于混合式测试自动化框架思想,提出了以测试用例为驱动的自动化测试系统,能有效提高网络游戏的测试效率。
为进一步降低该自动化接口测试系统的开发和使用成本,从开发维护和实际使用两方面入手。
开发维护:(1)自动化接口测试系统的开发,结合游戏公司中已有的工具和脚本进行开展,一方面减少开发时间,另一方面降低使用人员的学习成本;(2)开发生成测试用例模板的工具,通过对游戏公司内已有的测试用例进行整理,归类出不同类型的测试用例模板,并结合后续的自动化测试进行适当的调整;(3)独立的自动化接口测试执行工具,测试用例与测试执行工具分离,便于各自的单独升级和维护。
实际使用:(1)自动化接口测试执行工具与测试用例,可任意组合,切换内外网环境、不同通信协议后进行测试;(2)根据具体游戏项目,调整被测游戏的IP地址、端口等信息后,便可根据测试用例对不同的游戏执行自动化接口测试;(3)通过对测试执行工具的升级,不断地将新的事件驱动、关键字驱动等进行持续集成;(4)通过对用例模板的补充完善,能进一步提升测试用例编写的针对性和覆盖率。
本文所述的自动化接口测试系统,由测试用例模板生成工具、接口测试工具、自动化测试执行工具构成。其中用例模板生成工具、接口测试工具可独立运行,自动化测试执行工具的使用基于测试用例而实现。根据测试用例与测试工具的不同组合,可在内外网环境、不同通信协议下对网络游戏进行测试。
根据网络游戏的手工测试过程,而设计的自动化测试系统执行流程,如图1所示。
自动化测试的执行流程:由读取以Excel形式保存的测试用例开始,根据需求连接所需测试的游戏服务器,并查询或创建测试所需的游戏角色,将测试用例内的测试步骤解析成相应的测试执行脚本,在游戏服务器内执行测试后,将测试结果保存到测试用例内,待所有测试需求都执行后,最终完成自动化测试。
图1 自动化测试流程图
为使测试用例能更加灵活和具有针对性,设计了通用和特殊的两种测试用例模板。
通用的测试用例模板,是根据该网络游戏项目的测试工作业务积累和测试方法,预先制作并提供一部分的测试用例模板,需求及测试人员仅需对差异内容略作修改便可进行测试工作,用以完成相似的测试业务内容,充分体现了测试用例的复用价值和测试用例模板的实用价值,对测试用例模板内已提供的测试数据略作相应调整后即可。
特殊的测试用例模板仅提供填写的样例,需要需求及测试人员对用例进行完善,用以开展新的测试业务执行。如该新的测试业务和测试用例(特殊的测试用例)有再次利用的价值,会通过将其增加到测试用例数据库中,用以丰富和完善该项目的测试用例。
为使测试用例可自动化执行,需要将测试用例中填写的内容,按照一定的格式进行填写。在读取到测试用例文件之后,会依次解析各个测试用例表格内填写的内容,然后将文字转化为相应的操作步骤,并在测试信息验证通过后才会执行自动测试。
在测试开始前,从测试用例的Excel文件内读取所测试游戏的信息和测试所需执行的步骤(如Python的openpyxl模块)。测试用例的数据转换,以接口返回值的检查操作转换为例,测试用例内的文字如下:
查看接口返回值|接口名#
发接口|接口名#
核对接口返回值|接口名#参数1;参数2|返回值字段名#预期值
测试执行工具中,将其转化为执行操作的代码如下:
在测试过程中,模仿客户端进而实现与服务器的接口交互操作。根据测试需要的不同,提供了http与socket两种与服务器连接通信的方式(如Python的httplib、urllib、socket模块)。
在测试验证时,通过单元测试的执行工具,对服务器返回的接口信息进行验证、通过SSH(Secure Shell)的方式进入服务器(如Python的Paramiko模块)对操作结果日志进行验证、连入游戏服数据库(如python的MySQLdb模块)后核对相应表内和字段的数据变化。
在测试完成后,将测试结果写入到测试用例内相应的位置。
通过使用用例模板工具,在项目开发过程中可完成60%的自动化用例开发,并为之后的冒烟测试提供测试用例,在测试阶段完善30%的自动化用例,较之前减少50%以上的用例编写时间。使用自动化接口测试,在历史功能的回归测试和需要多接口交互及数据更改的复杂测试时,减少了80%以上的测试时间。
本文设计了生成测试用例模板所用的工具,以及基于测试用例的自动化接口测试系统,并利用Python语言编程实现了该自动化接口测试系统设计。该自动化接口测试系统可应用于实际网络游戏测试工作,并能用于解决一些相关问题,具有一定的实际意义。本文介绍了该自动化接口测试系统设计中一些关键技术的实现原理,有助于读者更好地理解和把握该自动化接口测试系统的基本思想和实现过程。
在之后的工作中,随着被测项目的更新迭代和新的测试理论与技术出现,也可以通过不断地升级和完善该自动化测试系统,在与现有功能相结合后,达到测试系统持续集成的目的。
参考文献:
[1]赵家刚,狄光智,吴丹桔.计算机编程导论—Python程序设计[M].北京:人民邮电出版社,2013.10.
[2]Wesley J.Chun著.Python核心编程(第二版)[M].宋吉广译.北京:人民邮电出版社,2008.7.
[3]Alex Martelli,Anna Martelli Ravenscroft,David Ascher编.Python Cookbook(第 2 版)中文版[M].高铁军译.北京:人民邮电出版社,2014.10
[4]Ron Patton著,张小松,王钰,曹跃等译.软件测试[M].北京:机械工业出版社,2015,9.
[5]姚砺,束永安.软件测试自动化关键技术的研究[J].安徽大学学报(自然科学版),2003(04).
[6]王世俊.软件自动化测试框架的研究和实现[D].华东师范大学,2006
[7]王东刚.自动化测试结构论[J].程序员,2009(11).
[8]梁家安.自动化软件测试技术研究[D].江南大学,2011.
[9]张浩.一种自动化测试系统集成方案的设计与实现[D].东南大学,2015
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!