1.为什么需要测试脚本?之前讲解了AndroidMonkey命令的使用方法,今天趁热用Monkey写一个压力测试脚本。不知道什么是Monkey的可以看之前的文章《关于 Monkey ,你所需要知道的,都在这里!!!》。归根结底,Monkey其实就是一个命令,它只能对有限范围内的随机事件做一些压力测试。你可以清楚地看到它的一些缺点:准备工作太多,需要准备设备和安装要测试的Apk。没有干预就不可能进行循环。就像没人看一夜考试一样。对于一些测试用例,各种状态的监控不好。好吧,这些问题实际上可以使用脚本来解决。Monkey命令实际上是在命令行上执行的命令,所以基本上任何脚本语言都可以完成这个任务。这里我们选择主流的Python来完成。2、如何设计压测脚本既然是一个完整的脚本,当然需要满足一些基本的要求。包括:可以自动安装待测apk。脚本可以在循环中执行,并在每次应用程序退出时重新执行。执行完成后,可以输出测试报告。更改后的参数可由测试人员自行配置。一个包含这些的简单测试脚本基本就够了。3.手写脚本后,Python的项目结构大概是这样的。项目结构大致如下:apk目录:用于存放待测试的Apk。bugreport_out目录:用于存放测试完成输出的报告。.config:压力测试的配置信息文件。chkbugreport.jar:测试报告输出工具。runmonkey.py:实际需要执行的Python脚本。start.bat:准备一个可以一键执行的bat脚本,用于测试。既然您了解了项目的结构,就可以开始编写Python脚本了。1.写配置文件和读配置文件首先看.config配置文件。在配置文件中,主要配置待测设备的ID、循环执行次数、每次循环点击次数。通过这样的设计,基本上可以通过execcount和monkeyclickcount这两个参数来配置一个需要执行多长时间的压测计划。接下来,我们需要一个读取配置文件的方法。2.安装要测试的apk。一般测试会测试同一个apk产品,所以这里写apk的文件名。通过os.popen()的Python方法直接执行adb脚本。3.杀掉待测app为了让每个循环都成为一个新的测试任务,保持测试环境的快速,需要有一种方法,在每次循环之前杀掉之前运行的待测app。4、生成测试报告生成测试报告主要依赖工具chkbugreport.jar,它会根据bugreport获取的文件内容生成测试报告。bugreport的用法:adbshel??lbugreport>.\bugreport.txt和chkbugreport.jar是用java写的工具,可以直接通过java-jar来执行。完整代码如下:5.开始执行Monkey脚本,完成准备工作,需要一个方法来执行我们配置好的Monkey脚本。各种参数的配置,不懂的可以看看昨天的文章。6.开始调用准备好的方法。准备工作已经完成。接下来结合这些准备好的方法,使用一个for循环来完成脚本的执行。4.为测试人员准备一个球棒。完成这些之后,主要的功能就基本完成了。执行下面的命令,就可以跑起来了。pythonrunmonkey.py不过这个脚本毕竟是用来测试的,最好能提供一个可以点击的bat脚本。新建一个start.bat文件,将上面的命令保存进去。这是它的实际效果。这里循环配置了3次,所以从Log可以看出,执行了3次后,生成测试报告,并退出测试。5、生成的测试报告chkbugreport.jar可以通过生成的bugreport的内容生成我们需要的测试报告。从上面的截图可以看出,实际上会是一个网页,输出的内容非常完整。第六,多说几句。其实这个Monkey压力测试脚本已经满足了测试的基本要求。但实际上,生成的测试报告并不是很容易查看。通常打包成成熟产品的应用都会集成第三方的bug监控服务,比如Bugly、友盟。所以,不用依赖bugreport生成的测试报告,直接在打开测试包的时候生成一个测试通道的apk,用于测试,这样在提供的网站上就可以清楚的看到测试报告了第三方服务。7.完整Demo完整Demo请关注城祥魔影的公众号,回复关键字:“猴子脚本”获取。【本文为专栏作家“张扬”原创稿件,转载请微信公众号联系作者获取授权】点此查看该作者更多好文
