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

之前讲解了 Android Monkey 命令的使用方式,今天趁着还热乎就手把手用 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 获得的文件内容,生成测试报告。

bugrepor t的用法:

adb shell bugreport > .\bugreport.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脚本”获得。

【本文为51CTO专栏作者“张旸”的原创稿件,转载请通过微信公众号联系作者获取授权】

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

python怎么写测试脚本语言_手把手带你,用Python写一个Monkey自动化测试脚本!!!...相关推荐

  1. python刷题一亩三分地_手把手教你用python抓网页数据【一亩三分地论坛数据科学版】...

    前言:. visit 1point3acres.com for more. 数据科学越来越火了,网页是数据很大的一个来源.最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,pyt ...

  2. python是不是最简单的语言_全世界都公认运行Python的最简单方法

    Python是一种跨平台的编程语言,这意味着它可以在Windows,macOS,Linux等多种平台上运行,甚至可以移植到Java和.NET虚拟机.它是免费和开源的. 即使当今的大多数Linux和Ma ...

  3. 如何写一个脚本语言_零基础小白如何学会写文案?文案写作技巧之一:如何写一个吸引读者的文案开头...

    我文笔不好怎样才能够写出优质的文案?很多人都有这个疑问,包括我自己在学习新媒体运营之前,这也是我最大的困惑.现在是内容为王的时代,你的文章质量决定了你的KPI. 后来我学习了文章的写作结构和技巧后,就 ...

  4. python写小说阅读器_手把手教你用Python制作简易小说阅读器

    /前言/ 不知从什么时候开始.小说开始掀起了一股浪潮,它让我们平日里的生活不在枯燥乏味,很多我们做不到的事情在小说里都能轻易实现. 今天我们要做的就是一个小说阅读器了,一个可以将你的文章中的字每隔多少 ...

  5. python讲1020逆序输出_手把手带你学 Python3(九)| 快速实现数据处理的不二工具(文末有彩蛋)...

    ", line 1, in TypeError: 'int' object is not callable #当然实际代码绝对不能这么写,这里是为了说明函数名也是变量.要恢复abs函数,请重 ...

  6. python网站有中文界面吗_手把手教你用python开发界面程序

    在本教程中 我们将通过使用Tkinter包编写一些python GUI示例来学习如何开发图形用户界面. Tkinter包是作为标准包随Python一起提供的 所以我们不需要安装任何东西来使用它. Tk ...

  7. python爬取音乐源码_手把手教你使用Python抓取QQ音乐数据(第一弹)

    [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...

  8. python抢票用哪个库_手把手教你使用python抢票回家玩

    电脑终端查看电脑上已有环境 conda env list 创建一个独立环境 conda create --name textenv 进入这个环境 source activate textenv 安装p ...

  9. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

最新文章

  1. xshell查询日志命令_Polysh命令实现多日志查询的方法示例
  2. 灵活强大的构建系统Gradle
  3. 知己知彼,百战百胜!如何做好干系人管理
  4. oracle的一些基本操作,Oracle中的一些基本操作
  5. java redis 商品秒杀_使用redis秒杀出现产品超发现象求解?
  6. ASP.NET生成静态页面方法大全(2)
  7. cocos2dx 3.0研究(1)-- hello world程序
  8. 用cubesuite烧写器报下列错误: [Direct Error Cause] Incorrect ID Code.(C0602202)
  9. Win7系统运行慢如何解决?——系统天地
  10. 译:25个面试中最常问的问题和答案
  11. 什么是数据缩减,无损4:1缩减有多难?
  12. 三维重建(1):坐标系之间的变换
  13. 怎么隐藏服务器真实IP地址?
  14. macOS系统低版本升级问题处理纪录
  15. 一行代码就能使用PYTHON开发的小游戏
  16. mysql中esc是什么意思_esc按钮是什么意思
  17. 谈谈我的一些学习感悟
  18. ios文件扩展名_安卓JY Share | 还在为担心文件上传成为 base.apk,这个应用帮你解决...
  19. excel两个表格数据对比_EXCEL表格中1列数据分别另外2列数据对比,在第四列输出第一列数据中不重复的数据?...
  20. RN measure获取元素坐标失效问题 (仅安卓端)

热门文章

  1. MySQL读写分离事务策略实现
  2. c++中函数放在等号右边_如何从C或C++中的函数返回多个值?
  3. 【LeetCode】0938. 二叉搜索树的范围和(二叉树的遍历)
  4. SpringBoot 2.6.0发布:禁止循环依赖,还有哪些实用的更新?
  5. 面试官问:为什么String的hashCode选择 31 作为乘子?
  6. 为什么 select count(*) from t,在 InnoDB 引擎中比 MyISAM 慢?
  7. http简介看这篇就够了
  8. 2020-10-14 B树 概念添加删除笔记
  9. 一天搞定HTML----a标签02
  10. 一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)