所谓自动化测试,就是模拟手工测试步骤,通过执行程序语言编制的测试脚本,自动地实施产品的单元测试、功能测试、负载测试或性能测试等。
本次《游戏自动化测试指南》将会分2期推送,上篇着重介绍一下自动化测试框架的搭建,下篇将会和大家探讨一下自动化测试用例脚本的编写和自动化框架的其它应用。
01 前言
1.1 什么是自动化测试
测试工作中,很大一部分需要依靠手工进行,对于游戏产品而言,手工测试有着不可替代的意义,可以在操作游戏的同时,直接观察到游戏产品的行为是否正常,玩法的趣味性等。但其所带来的人员开销也是必不可少的,况且不能保证100%不会出错。而自动化测试,可以将一部分测试工作从手工中解放出来,用代码来代替人工执行,用以提高测试效率。
自动化测试的应用场合:
1.适用于流程比较稳定的场合,比如基本功能、主线任务、日常任务、系统类玩法等等,这类功能流程一旦确定,后期大改可能性较小,在一定程度上能避免自动化测试脚本反复迭代的工作,自动化最忌讳的就是需求不稳定,频繁的变更会导致自动化测试用例的维护成本直线上升。
2.适用于流程比较复杂的系统或者手工成本太高,比如主线任务,所涉及到的任务类型多、整体流程繁琐,人工测试费时费力,寻找某些种类缺陷时效率并不高,可能覆盖不全或者忽略了部分重点,采用自动化测试的方法能很好地规避这类问题。
3.适用于高可用性的场合,也就是尽量不会出错的场合,在游戏中,存在一些功能有一定的容错机制,比如弱网下的状态就不太适合采用自动化的方式来测试。
4.需要频繁执行回归的测试,游戏的生命周期一般都比较长,通常会有多个版本持续发布,每次版本发布都会有大量的回归测试需求。当然如果是短期的一次性项目,从技术上讲自动化测试的可行性很高,但从投入产出比考虑通常并不建议使用自动化,比如像节日活动这类玩法。
游戏的开发周期是一个高效开发、快速迭代的过程,游戏系统相对来说都比较复杂,面对如此快速开发的产品,自动化测试的意义主要体现在:
1.无人执守,自动执行;
2.回归测试中,可以快速验证版本的稳定性;
3.避免重复测试;
4.节省劳动力;
5.监控版本的性能数据。
通常情况下,自动化测试流程一旦形成,除了上班时间以外,可以充分利用下班后的空闲时间、空闲机器自动执行测试脚本,充分利用资源来保障产品质量,日后的测试工作便可以高效循环进行,这是产品长期回归测试的高效方法,可以避免在产品上线或交付的最后一刻,还深陷软件问题的泥潭中。
万物皆有阴阳两面,尽管自动化测试有诸多好处,当然也有它的劣势。主要有以下几个方面:
1.对测试人员要求相对较高;
2.自动化测试的开发、测试结果分析、测试脚本编写及维护有一定的维护成本;
3.自动化测试用例也分“好”、“坏”,测试结果不一定100%准确。
所以产品组做到多大程度“自动化”需要根据各个项目组的具体情况来决定,切不可盲目追求自动化。
02 自动化测试框架的搭建
自动化测试框架,可以理解为,驱动所有测试用例持续执行的一套流程。这套流程从项目组打包就开始了,直到产出测试报告,全程由代码自动执行。自动化测试框架,可以由项目组内自己搭建,也可以借助合适的第3 方工具完成。接下来会介绍这两种不同的方式。
如果由项目组内搭建,测试框架的灵活性、可扩展性更高,不