5、测试执行
测试执行期是整个测试流程的重头,应在整个测试流程中占80%以上的比例。在测试执行期,测试员工作的重点就是尽最大可能找出游戏中的一切缺陷。下面将从不同测试方法或测试过程进行总结。
5.0功能测试
这里的功能测试指狭义上的功能测试,指的是策划文档中的功能。功能测试在我的工作过程通常分以下几个阶段:
①对功能进行初步测试,看功能的主要功能是否实现,是否有错。
②按照测试用例对功能进行详细测试,发现各种大大小小,不同性质,不同严重程度的错误。
③对相关联的功能进行关联测试。
④对修复的BUG进行重新测试。
⑤功能稳定后进行回归测试。
⑥测试用例执行完毕后进行随机测试,随机测试并不是一味盲目的去测试,而是按照自己的猜测和经验去测一些自己可能认为有BUG的地方。
⑦特殊的测试技巧,我在工作累的时候,或者很少发现BUG的时候,会去玩很多竞品的游戏,对比相应的功能,在其他游戏出现的BUG,在我们的游戏中也有可能出现。
⑧特殊的测试技巧拓展,去竞品游戏的讨论区(论坛,贴吧等)看玩家反映的BUG,玩家反映的BUG是千奇百怪的,通过观察玩家反馈的BUG,可以分析出哪些影响了玩家的体验,让玩家不爽,或误以为是BUG,而降低了玩家的体验,进而向策划提出修改建议,或者哪些地方较为容易出现BUG,在测试自己游戏的时候加以注意。
5.1性能测试
性能测试分两种,一种是服务器的性能测试,一种是客户端的性能测试。
5.1.1 服务器的性能测试
服务器性能关心服务器的并发量,吞吐量,响应时间等数据。
按我自己的理解,性能测试是相对于功能测试来说的,模拟玩家的操作对系统(软件或硬件)照成了压力,便是性能测试。
(1)性能测试分类
性能测试的划分有很多:
①负载测试:在被测的系统上加压,直至达到极限或崩溃。这种测试主要是找到系统处理能力的极限,了解系统的性能容量,配合性能调优。
②压力测试:使系统处于很大强度或一定的饱和状态下(如CPU,内存饱和),看系统是否稳定,会不会出错。这种测试主要是通过模拟负载的方法,是系统资源占用较高,检查此时系统处理的能力,测试系统的稳定性。
③配置测试:通过对被测系统的调整(软件/硬件环境的调整),了解调整对系统性能的影响程度。这种测试是通过调整软硬件,找出系统的最佳状态,使系统达到最优,从而达到性能调优的目的。
④可靠性测试:给系统一定的压力(业务压力,通常模拟玩家最常进行的操作或玩家的常态操作来模拟),是系统运行一段时间(通常以“天”为单位),检测系统运行的是否稳定。
其实可以从另一个角度来看服务器测试。
①爆发力:就像举重一样,重点在能举起多少重量,不是举多长时间。
②耐力:就像马拉松,爆发高,短跑再快也没用,长跑坚持到终点才是胜利。
③协调性:人整个身体的协调,跑步的时候才能发挥的好,如果有一条胳膊或腿有残缺,身体的其他部位要去弥补这个残缺的不足,就影响了整体的发挥。
服务器的性能上来说,爆发力就是系统能承受的最大的压力,耐力就是系统长时间压力下的稳定性,协调性就是看系统有没有缺陷,需要调优。
(2)性能测试的需求
性能测试需要一个非常有效的需求,这里也做下总结。
有效的需求应当有这么几个特点:
①明确的数字。
②有凭据,合理,具有实际意义。
③相关人员统一一致需求。
如何获取有效的需求:
①根据以往数据或项目来分析
②参考同类竞品项目或游戏
可以参照同种类型的游戏,虽然不可照搬,也可以做一个借鉴和参考。
③其他方式
由运营方,有经验的人员,或不断地摸索等各种方式明确需求。
(3)性能测试的目的
性能测试的目的在于找出系统性能的瓶颈(进而调优),了解测试系统的容量(能容纳的最大用户数和最佳用户数),验证系统的稳定性。
关于服务器的性能测试并未实际操作过,写上面这些总结的时候心里也没底,就像脚踏在空中,如履薄冰。对于服务器测试环境的搭建,服务器测试的执行等正在学习中,上面也只写了自己服务器性能测试理论上的理解,也只是纸上谈兵,今后工作需加强对这方面的实际操作和了解,再加以总结。
5.1.2客户端性能测试
手游的客户性能关心以下几个参数:包体大小,启动时间,CPU占用,内存占用,FPS,耗电,发热,网络流量等。
(一)客户端性能需求
客户端性能的需求主要有两个获取方式:
①横向对比竞品游戏
横向与同类竞品游戏作对比,同类竞品游戏的选择要选择游戏类型,表现形式相同的,通过同类手游的参数对比,定出具体的基数,作为游戏性能优化的目标。
②纵向对比自己游戏
通过不同版本的游戏做纵向对比,是否在某些版本中参数有较大的变动,参数的大幅降低不一定是好事,反而也可能是问题,一定要做注意。通过不同版本性能参数的对比,可以看程序改动对游戏性能的影响,从而辅助程序对游戏性能的优化。
(二)客户端性能测试工具
①Emmagee
这是在网上找到的一款比较好用的安卓性能测试工具,网易杭州测试部出品,而且是开源的,在github上可以下载到(gibhub地址为:http://github.com/NetEase/Emmagee,下载地址为:https://github.com/NetEase/Emmagee/releases,下载最新版本即可)。
这个软件用起来简单方便,无需ROOT权限。
首先,打开软件,选中被测应用,点击开始测试。
这就是软件的主界面,会列出手机上的所有应用,找到被测应用选中,然后点击下方的开始测试,此时就会自动打开被测应用。测试过程如下图所示:
左上角实时显示游戏的内存,CPU和电流,并可以进行简单的WiFi和流量切换测试。在游戏中进行一些常见的操作,运行一段时间,点击停止测试。此时会在手机的sdcard/目录下生成测试日志文件,文件名称为“Emmagee_TestResult_(时间).csv”,打开这个文件就可以看到具体的测试信息。如下图所示:
其中CPU只需看应用占用CPU即可,CPU0-CPU3是因为手机是多核的。另外excel在打开CSV文件时可能会出现乱码的情况,我也找了一下原因,是因为excel打开CSV默认使用ANSI编码,如果手机上保存的CSV是utf-8或其他编码,就会出现乱码,这里使用一下特别的转码技巧,先在类似“Emmagee_TestResult_(时间).csv”上右键单击,用“记事本”打开,然后点击“文件—另存为”,在编码那里选择“ANSI”,保存,然后用excel打开即可解决乱码的问题。
另外,Emmagee提供了发送测试邮件的服务,在emmagee的主界面右上角设置选项里可以设置,可以设置多个收件人,用逗号隔开即可。生成的CSV可用excel制作折线图等增加美感可看性,方法百度有很多,如:http://jingyan.baidu.com/article/3ea51489107a8852e61bba97.html。
②腾讯GT
这个软件是腾讯出品,功能蛮多的,除了上面emmagee的功能还具有网络切换,抓包,logcat日志查看等功能,但是有几个弊端,首先,也是比较重要的一点,没有开源,不知道应用会不会获取项目的一些信息,不放心用于项目的测试。其次,这款软件的部分功能需要手机root,所以需要ROOT才能安装使用。具体的使用手册官方写的很详细,地址为:http://gt.qq.com/docs.html这款软件还需领导进行批准方可投入到游戏性能测试中。
③IOS设备
IOS设备一般是用程序写入游戏的查看命令来查看。有条件的话可连接mac机,使用Xcode自带的测试工具Instruments进行性能测试。文档地址:https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html
(三)客户端性能测试注意点
①测试环境的纯净,测试时不要开启无关软件。
②启动时间的概念,启动时间为点击应用,到应用正式启动。
③关于时间的较为重要的关注点,首次启动时间(游戏安装后首次启动的时间),非首次启动时间,切换界面时间等。
④客户端的极限测试,测试各种边界情况下(电量,存储,网络等),游戏能否正确运行。
⑤游戏长时间运行,系统资源的占用情况。
⑥与竞品对比,找出性能的基线,根据基线为标准进行测试。
5.2 安装/卸载测试
安装卸载测试看起来很简单,其实在实际测试过程中还有很多“坑”,安装卸载一旦出错就是无法启动的最高优先级错误,因此安装卸载的测试必须重视起来,同时需要进行深入探究。
(一)安装方式
在移动设备上,有很多安装方式
①下载应用到手机SD卡中进行安装,这是用户较常使用的方式之一,也是测试需注意的重点。
②借用第三方软件安装,这是最常用的方式,如,豌豆荚,360助手,应用宝,91助手等等。此种方式还分有线连接和无线连接,测试需注意多任务安装,安装时中断连接等情景。
③通过命令行进行安装。不要高看用户的智商,当然也不要小看用户的能力,既然有这种安装方式,就要对其进行测试,通过命令行安装其实和第三方软件安装逻辑上是相同的。运行adb要保证下载和配置了Java环境变量,具体方法网上有很多http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html。首先,需下载一个Android SDK(下载过程不再赘述),然后进入SDK的tools目录下,找到adb.exe,由于SDK版本不一样,adb.exe所在的目录可能不一样。最新的SDK中可能不在tools文件夹下,在里面会有一个adb_has_moved.txt 说明adb被放在platform-tools里面了。如下图所示:
现在进入platform-tools中找到adb,然后运行cmd(win+R),进入这个目录(cd:目录路径,然后输入盘符),并输入adb运行成功即可,如下图:
手机通过数据线连接电脑,然后输入安装命令adb install <安装包的地址和包名>(为了方便可以将安装包放在adb的所在目录下),如图:
此时只需输入包名即可:
Success即安装成功,同时写下adb命令卸载命令,adb uninstall,主要这里是包名,如下图所示:
其中加入-k参数可以保留配置和缓存文件,用法为adb uninstall<包名>。包名可以通过解压apk后,在AndroidMainifest.xml文件中节点下,package元素指定的名字。
adb的应用还有很多,现在只了解了些皮毛,之后会继续深入研究下。
(二)安装/卸载测试注意点
安装/卸载测试需注意以下几点:
①设备上无应用安装。
②设备上已安装过应用(包括,同版本,不同版本/新旧版本,不同渠道版本)。
③卸载后进行安装。
④游戏正在运行时进行安装/卸载。
⑤其他应用正在运行时进行安装/卸载。
⑥手机存储空间不足时进行安装。
⑦安装/卸载过程中出现意外情况(死机,重启,断电,来电话等等)。
(三)安装/卸载之后
安装/卸载之后需注意以下几点:
①安装后游戏能否正常运行,是否会崩溃。
②安装后检查版本号及相关数据,是否与安装的游戏相一致。
③在安卓或其他设备上安装后从手机内存移动到SD卡或从SD卡移动到手机内存能否正常运行。
④卸载后,是否影响到了其他应用。
5.3更新升级测试
提到安装测试后,不得不提升级更新测试,这也是测试的一个重点。一般手机游戏的更新方式有两种,一种是在游戏内应用自更新,一种是引擎有更新时或有较大改动和特殊需求时,用户需下载一个完整的更新包。
简单说下两种更新方式,第一种自更新的方式,是有更新时在服务器放一个f的包,用户打开游戏后检测到服务器有更新的东西,会弹出一个确认框(具体须看程序的做法),玩家点确认后会更新到最新的f包。后一种则是检测到有较大更新或引擎变动时,要求玩家重新下载一个游戏进行覆盖安装(此种方法不宜常用,会带来大量的玩家流失)。
除了这两种更新方式外,还有一种额外增量包的更新方式,这种方式常用于端游,比如LOL更新时会在官网发布一个更新包,玩家可以通过下载这个更新包,点击安装更新包来达到更新。这种方式和自更新的区别就在于,自更新是打开客户端进行更新,这个是额外下载更新包进行更新。这种增量包更新方式有几个弊端,第一,游戏有多个更新版本,玩家需下载多个增量包进行安装,在手机上这种体验是极差的。第二,如果玩家下载了最新的增量包,却无法进行安装,与旧的游戏版本不兼容,体验较差。第三,某个增量包有特殊的应用权限,被一些安全应用或手机本身设置所拒绝,之后的增量包都没法进行安装。等等,可能还有些我没想到的弊端,总之弊端大于利端(利端是玩家每次更新时下载包较小),因此这种方法在手机网络游戏上是基本没有见过的。但是还是有这么一个方式,提及一下。
更新升级的注意点:
①客户端有新版本时,有更新提示。
②玩家打开客户端提示更新时,关闭客户端,再次打开后仍提示更新。
③客户端有新版本时,不进行更新,删除客户端,重新下载新版游戏,可正常运行。
④客户端有新版本时,点击确定进行自更新,更新过程中做中断测试(断网,重启,来电,杀掉进程等),重新打开游戏是否可以续传。
⑤更新成功后,可正常运行游戏,检查版本号及更新数据是否正确。
⑥更新成功后,可正常卸载游戏。
⑦更新要注意测试包名和签名是否一致,包名不一致会导致成为两个apk 签名不一致会覆盖清除原来的数据
关于强制更新和非强制更新,在游戏中很少见到非强制更新的情况,这里提一下就好,一般服务器一些相关配置做变动的话,必须要进行强制更新,如果只是客户端的资源变动,可以做非强制更新。需保证非强制更新的版本不更新和更新后均能正常游戏。