手把手用Monkey写一个压测脚本

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:

一、为什么需要一个测试脚本?

昨天讲解了Android Monkey命令的使用方式,今天趁着还热乎就手把手用Monkey写一个压力测试的脚本。还不了解什么是Monkey的,可以看看昨天的文章。

Monkey说到底其实就是一段命令,只能在有限的范围内做一些随机事件的压力测试。可以很明显看到它的一些缺点:

  1. 前期准备工作太多,需要把设备准备好、安装好待测Apk。
  2. 无法做到无干预的循环。类似没人看着去测试一夜的情况。
  3. 对一些在测试情况下,各项状态的监控并不好。

那么,这些问题,其实都可以使用一个脚本来解决问题。

Monkey命令其实就是在命令行中执行的命令,所以脚本语言基本上都可以完成这个任务,这里选择主流的Python来完成。

二、如何设计压测脚本

既然是一个完整的脚本,那么当然需要满足一些最基本的需求。

包括:

  1. 可以自动安装待测试apk。
  2. 可以循环执行脚本,并且每次都退出App重新执行。
  3. 在执行完成之后,可以输出测试报告。
  4. 变动的参数,可以让测试人员自行配置。

一个简单的测试脚本,包括这些基本上就足够了。

三、动手写脚本

编写完成之后,Python的项目结构大概是这样子的。

test_project.png

项目的结构大概如下:

  • apk目录:用于存放待测试的Apk。
  • bugreport_out目录:用于存放测试完成输出的报告。
  • .config:压力测试的配置信息文件。
  • chkbugreport.jar:输出测试报告的工具。
  • runmonkey.py:真正需要执行的Python脚本。
  • start.bat:为测试准备一个点击就可以执行的bat脚本。

了解了项目的结构之后,就可以开始编写Python脚本了。

1、编写配置文件和读取配置文件

首先看看.config配置文件。

test_config.png

在配置文件里,主要配置待测试的设备ID、循环执行次数,和每次循环的时候点击的次数。

这样设计,基本上可以通过execcount和monkeyclickcount两个参数,配置所需要执行多久的一个压测方案。

接下来就需要一个方法去读配置文件。

test_readconfig.png

2、安装待测试apk

一般测试都是会测试同一个apk产品,所以这里写死apk的文件名。直接通过os.popen()这个Python的方法执行adb脚本。

test_install.png

3、杀掉待测app

为了让每次循环都是新的一个测试任务,保持测试环境的赶紧,需要一个方法在每次循环之前,杀掉之前正在运行的待测App。

test_kill_app.png

4、生成测试报告

生成测试报告主要依赖chkbugreport.jar这个工具,它会根据bugreport获得的文件内容,生成测试报告。

bugreport的用法:

adb shell bugreport > .\bugreport.txt

而chkbugreport.jar是一个java编写的工具,直接通过java -jar 执行即可

完整的代码如下:

test_create_report.png

5、开始执行Monkey脚本

做完准备工作,就需要一个方法来执行我们配置好的Monkey脚本。

test_full_monkey.png

各项参数的配置,不明白的看看昨天的文章吧。

6、开始调用准备好的方法

准备工作已经完成,接下来将这些准备好的方法,组合起来,用一个for循环完成脚本的执行。

test_script.png

四、为测试人员准备一个bat

做完这些,基本上就算是把主要功能完成了。执行下面的命令,就可以跑起来了。

python runmonkey.py

但是终归这个脚本是要给测试用的,最好还是提供一个点击可用的bat脚本。

新建一个start.bat文件,把上面的命令保存进去就行。

下面看看执行起来的样子。

test_run.png

这里配置了循环三次,所以最终从Log中可以看到,确实执行三次之后,生成测试报告,并且退出测试。

五、生成的测试报告

chkbugreport.jar 可以通过生成的bugreport的内容,生成我们需要的测试报告。

从上面的截图可以看到,其实它会是一个网页,输出的内容非常的齐全。

test_report.png

六、多说两句

其实这个Monkey的压力测试脚本,已经满足测试的基本要求。但是实际上,生成的测试报告,不太好查看。通常封装成成熟的产品的App,都会集成第三方Bug监控的服务,例如:Bugly、友盟什么的。所以可以不以来bugreport生成的测试报告,直接在打测试包的时候,生成一个测试渠道的apk,用它来测试,这样在第三方服务提供的网站上,可以清晰看到测试的报告。


本文转自承香墨影博客园博客,原文链接:http://www.cnblogs.com/plokmju/p/6445976.html,如需转载请自行联系原作者


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
Shell 测试技术 Linux
通过shell脚本进行linux服务器的CPU和内存压测
通过shell脚本进行linux服务器的CPU和内存压测
359 0
|
2月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
2月前
|
测试技术 数据库连接 数据库
测试脚本的编写和维护对性能测试结果有何影响?
测试脚本的编写和维护对性能测试结果有着至关重要的影响,
37 1
|
Shell 测试技术 Android开发
08-adb命令之monkey压测
08-adb命令之monkey压测
|
Web App开发 测试技术
Jmeter压测——BlazeMeter录制脚本+Jmeter进行测试
Jmeter压测——BlazeMeter录制脚本+Jmeter进行测试
578 0
|
消息中间件 缓存 网络协议
【Kafka】-Kafka服务端脚本详解(3)一性能测试脚本
Kafka服务端脚本详解(3)一性能测试脚本
【Kafka】-Kafka服务端脚本详解(3)一性能测试脚本
|
监控 Ubuntu 大数据
一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本 (下)
一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本 (下)
一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本 (下)
|
存储 监控 前端开发
一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本 (上)
​接上篇,一键转化将接口测试平台测试用例转化成Jmeter压测脚本思路,这里我首先在java 上面做了一个简单的实验,看看 转化的中间遇到的问题,这里呢,我只是给了一个简单的demo 版本,后续结合项目的实际的实用,还是靠各位,贴合我们的实际的项目去制定适合本公司转化的脚本。具体的业务还是要实际的分析的。首先看下我的思路
|
存储 测试技术 Shell
Elasticsearch自定义脚本完成性能测试
1、ES性能测试 要求: 1)完成ES并发100次性能测试; 2)统计得出访问时间结果值。
357 0
下一篇
开通oss服务