python做一个考试系统_使用 Monkey+python 做一个简单的自动化测试

monkey 是个啥子嘛?

monkey 是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上。它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试。(其实可以想象成一只猴子啥都不知道,疯狂乱敲......)

6e0417c1-508e-41cf-b380-d071e5cead04.jpg!large

1f446.svg 伪随机又是个什么鬼?

是因为该随机事件可进行复现(定位可能出现的问题)。我们每次执行一组随机事件,系统都会给一个随机的ID,称之为seed。若我们想将该组随机事件再次执行一遍,则使用-s+seed+count即可。

那么monkey的使用场景是哪些呢?(你喜欢用在哪里就在哪里)

5cb60390-8ec5-43d4-a623-bf493be1b572.jpg!large

monkey 测试是 Android 平台自动化测试的一种手段,通过 monkey 程序模拟用户触摸屏幕、滑动 Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久会发生异常。(当然也可以做自动化测试)开发人员结合 monkey 打印的日志 和系统打印的日志,修改测试中出现的问题 。

1f446.svg 那什么时候进行压力测试呢?

等产品稳定,没有太多的 bug 的时候,一般会用 monkey 去测试待测应用的稳定性,健壮性(是否会发生闪退,崩溃,无响应)和整机测试

好了我要开始嚯稀泥了(有没有搞错啊大佬,那是搭环境)

1、确保电脑已安装adb

直接下载 adb 安装包,把相关文件放到 c:/windows/system32 目录和 c:/windows/system 目录下,完成安装

48b7b40e-72a3-40f9-9400-6d8d73f5bc87.png!large

2、jdk环境已配好(没配好自己配吧,自己配不好请移驾https://www.baidu.com/s?ie=utf-8&wd=jdk%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D)

61d10c28-9bb2-4d60-ab03-8bb950b7fc59.png!large

1f64c.svg 此时此刻我要小声 bb 一下为什么要配置jdk了,

1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;

2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;

这样就可以通过在CMD窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。

3、(安装模拟器/真机)手机已经打开开发者模式以及USB调试状态

4、 把手机锁屏设置为从不

某位仁兄

1f621.svg个憨憨,重要的命令参数有啥。

怂怂的我

1f61f.svg

1)参数: -p

参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,monkey将只允许系统启动指定的APP。如果不指定包,monkey将允许系统启动设备中的所有APP。

指定一个包:

adb shell monkey -p com.kaiyuan.developmentbusiness 100

说明:com.kaiyuan.developmentbusiness 为包名,100是事件计数(即让monkey程序模拟 100 次随机用户事件)。

指定多个包:

adb shell monkey -p com.qywlandroid –p com.kaiyuan.developmentbusiness 100

不指定包:

adb shell monkey 100

说明:monkey 随机启动APP并发送100个随机事件。

2) 参数: -v 日志详细程度

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

日志级别 Level0

adb shellmonkey -p com.kaiyuan.developmentbusiness –v 100

说明缺省值,仅提供启动提示,测试完成和最终结果等少量信息

日志级别 Level 1

adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v 100 说明提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别 Level 2

adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v –v 100 说明最详细的日志,包括了测试中选中/未选中的Activity信息

3)参数:-s

用于指定伪随机数生成器的 seed 值,如果 seed 相同,则两次 monkey 测试所产生的事件序列也相同的。

monkey 测试1:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100

monkey 测试2:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

4) 参数:--throttle <毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;

adb shell monkey -p com.qywlandroid –throttle 3000 100

5) 参数: --ignore-crashes

用于指定当应用程序崩溃时(Force& Close错误),monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

adb shellmonkey -p com.qywlandroid --ignore-crashes 1000

测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

adb shellmonkey -p com.qywlandroid 1000

测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

好了好了,墨刀嚯嚯,开始搬砖

f23f1a2b-b57f-49ae-9e5e-c9f262fc6da0.gif!large

我这里用的pycharmIDE,写完之后直接建个 .bat放里面就好了,比如说

4108c767-50e1-42d8-af38-3679e65e1499.png!large

ojbk,请看我的目录

bfbc08dc-3e05-4e3a-bfb8-b4e71c673d6a.png!large

里面的bugreport_book文件是最后生成的,他从哪里来的呢?

这个时候就该讲一哈我们伟大的插件ChkBugReport

ChkBugRepor t是一个开源工具,它可以把你得到的bugreprot.t解析成适合阅读的 html 文件。导出的html文件包含了根据 bugreport.txt 数据得出的图表和分析结论。

2d98d3e7-6a58-4b62-970e-caade24e746d.png!large

如果这个线程死锁,在报告的Errors将会出现。

***.logs 这部分是对system、main和kernel日志的分析,在这里你可以看到每个进程内存使用图、那个程序产生的log最多、Activity的启动耗时、数据库操作耗时统计、对象被锁定- - 时间、AIDL调用时间、Activity和Service的生命周期及其在内存中使用频率等等

Processes 操作app过程中产生的系统事件日志、内存使用信息等等

Battery statistics 电池使用统计

CPU Frequency statistics CPU频率统计

Raw data 一些原始数据

首先添加.config文件,添加内容为

7b174c09-d94a-45b7-aabf-061dc199e079.png!large

然后创建runmonkey.py文件,主要函数为

引用.config,不然你写它干啥用

d641dda1-b5b7-4d9a-807c-487bc49ccc0f.png!large

安装安装包,(也就是把包放在apk文件下,然后就可以自己安装啦啦啦啦啦啦)

104425f0-ebcd-44b2-8617-a819214ab507.png!large

执行monkey命令

bc9dcd62-69ce-457c-9051-51ba74b306a9.png!large

创建bugreport.txt报告,并生成html文件

67233fd7-f274-454a-a675-750e17f80855.png!large

你可以砍死它了,开心嘛

d02809d5-75ba-48b7-8411-52bde93e18d8.png!large

至于为啥要这么写,我就不告诉你,哈哈哈哈哈哈或,掰掰

;

ab97135a-0544-45c1-ba96-e690110cfeb6.jpg!large

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值