资讯专栏INFORMATION COLUMN

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

txgcwm / 410人阅读

摘要:一为什么需要一个测试脚本昨天讲解了命令的使用方式,今天趁着还热乎就手把手用写一个压力测试的脚本。对一些在测试情况下,各项状态的监控并不好。一个简单的测试脚本,包括这些基本上就足够了。六多说两句其实这个的压力测试脚本,已经满足测试的基本要求。

版权声明:

本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。

允许有条件转载,转载请附带底部二维码。

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

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

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

前期准备工作太多,需要把设备准备好、安装好待测Apk。

无法做到无干预的循环。类似没人看着去测试一夜的情况。

对一些在测试情况下,各项状态的监控并不好。

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

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

二、如何设计压测脚本

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

包括:

可以自动安装待测试apk。

可以循环执行脚本,并且每次都退出App重新执行。

在执行完成之后,可以输出测试报告。

变动的参数,可以让测试人员自行配置。

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

三、动手写脚本

编写完成之后,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的用法:

adb shell bugreport > .ugreport.txt

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

完整的代码如下:

5、开始执行Monkey脚本

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

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

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

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

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

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

python runmonkey.py

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

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

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

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

五、生成的测试报告

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

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

六、多说两句

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

七、完整的Demo

完整的Demo请关注承香墨影的公众账号,回复关键词:“monkey脚本”获得。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13514.html

相关文章

  • 把手Monkey一个压测脚本

    摘要:一为什么需要一个测试脚本昨天讲解了命令的使用方式,今天趁着还热乎就手把手用写一个压力测试的脚本。对一些在测试情况下,各项状态的监控并不好。一个简单的测试脚本,包括这些基本上就足够了。六多说两句其实这个的压力测试脚本,已经满足测试的基本要求。 版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 允许有条件转载,转载请附带底部二维码。 一、为什么需...

    tomato 评论0 收藏0
  • 【人情事故】做了3年销售一事无成,转行软件测试成功后我就拿了8k!

    摘要:以下为我的真实案例以我真实案例分享,希望给更多决定重新开始的人以鼓励我已经上班很久了,目前在中软做软件测试工程师,月薪,现在回想起来,仍然庆幸我当初的决定。  今天跟大家分享我的故事,或许你也曾像他那样迷茫过。17年软件工程专业专科毕业之后做了3年的销售工作,最后决定还是再次提升专业技能,...

    _Zhao 评论0 收藏0
  • 有赞全链路压测引擎的设计与实现

    摘要:工欲善其事,必先利其器,我们拿什么工具来压测呢我们做了很多前期调研和论证,最终决定基于开发有赞自己的分布式全链路压测引擎。 一年以前,有赞准备在双十一到来之前对系统进行一次性能摸底,以便提前发现并解决系统潜在性能问题,好让系统在双十一期间可以从容应对剧增的流量。工欲善其事,必先利其器,我们拿什么工具来压测呢?我们做了很多前期调研和论证,最终决定基于 Gatling 开发有赞自己的分布式...

    Euphoria 评论0 收藏0
  • 有赞全链路压测实战

    摘要:有赞对于性能测试主要有线下单系统单接口线上单系统以及线上全链路压测等手段,通过不同维度和颗粒度对接口系统集群层面进行性能测试,最终保障系统的稳定性。这里主要讲述一下,有赞全链路压测的相关设计和具体的实施。 一、前言 有赞致力于成为商家服务领域里最被信任的引领者,因为被信任,所有我们更需要为商家保驾护航,保障系统的稳定性。有赞从去年开始通过全链路压测,模拟大促真实流量,串联线上全部系统,...

    Drinkey 评论0 收藏0
  • 超全的App 测试工具大全,收藏这篇就够了【附带官网|GitHub地址】

    摘要:三性能测试工具官网介绍腾讯开源的的随身调测平台,支持和。官网介绍腾讯游戏部门开发的移动全平台性能测试分析工具平台。百度的服务目前主要为收费服务。 随着移动互联网的高速发展,App 应用非常火,测试工程师也会接触到各种 app 应用。除了人工测试之外,也可以通过一些测试工具来提高我们的测试效率...

    MRZYD 评论0 收藏0

发表评论

0条评论

txgcwm

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<