Monkey测试真的靠谱吗?

news/2024/7/7 21:17:37

Monkey测试,顾名思义,就是模拟一只猴子在键盘上乱敲,从而达到测试被测系统的稳定性。Monkey测试,是Android自动化测试的一种手段,Monkey测试本身非常简单,Android SDK 工具支持adb Shell命令,实现模拟用户的按键输入,触摸屏输入,手势输入等操作,去发现应用隐藏的严重问题。

Monkey测试真的靠谱吗?

Monkey测试真的靠谱吗?

现在线上有很多云测真机平台,平台上基本都支持Monkey测试服务(多数平台收费),同时利用平台上不同的测试机型发现被测应用的稳定性和健壮性问题。

Monkey自动化测试,通过Monkey命令及一些参数,可以控制Monkey在执行过程中出现异常而终止

  • --ignore-crashes    #忽略因crash终止测试
  • --ignore-timeouts    #忽略因超时终止测试
  • --ignore-security-exceptions    #忽略因权限异常终止测试
  • --monitor-native-crashes    #监视奔溃时本地代码

尽管Monkey命令可以避免上面所述的情况,但不同的Android 测试应用,功能结构不同,有些应用程序存在广告,有些应用程序内跳链其他应用,这种情况下,Monkey测试过程被测应用有可能是没有被执行的。当然,Monkey还可以指定执行被测应用的Activity(参数:-c ),甚至调整Activity启动的百分百(参数:--pct-appswitch )。

以jenkins+Monkey+Python自动化测试作为实例

一键构建开始执行Monkey测试,在执行过程中,会记录Monkey的日志,自动分析日志,并生成测试报告。(如图1-1)

Monkey测试真的靠谱吗?

经过多次实验证明:在限定的框架页面,Monkey测试是有记忆操作的,与其说记忆操作,不如说是Monkey自动化测试的局限性所在。通过观察与执行日志分析,发现Monkey在执行测试过程中,在同一个功能页面框架下,它的操作总是跟之前的操作趋同,并且容易困在某个功能页面。这也正是Monkey的随机特性所在,有时才能发现被测试应用程序的稳定性和健壮性问题。

最后,我们已经知道Monkey测试并不能在我们预期之内执行100%事件发生在被测应用,从而增加了是否被执行到位的不确定性(概率事件),可以通过二次开发Monkey来实现(主要修改monkey.jarframework.jar)防跳出、防中断、防锁死、控制随机事件,最终达到测试的预期效果。Monkey的二次开发本文不作为详细说明,感兴趣的同学,可以自行尝试。

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

自动化测试视频教程、学习笔记领取传送门!!!


http://lihuaxi.xjx100.cn/news/1441407.html

相关文章

bs4练习

bs4练习 工具目的代码运行结果 工具 pycharm 目的 网址:http://ip.yqie.com/ipproxy.htm,原url不能用,更换url为:http://www.66ip.cn/index.html 用bs4来做一个简单的爬虫,爬取某个ip网址里的免费ip,获取每个ip的代理IP地址、端…

Vue中路由缓存问题及解决方法

一.问题 Vue Router 允许你在你的应用中创建多个视图,并根据路由来动态切换这些视图。默认情况下,当你从一个路由切换到另一个路由时,Vue Router 会销毁前一个路由的组件实例并创建新的组件实例。然而,有时候你可能希望保持一些页…

Web 自动化测试学会这一招,下班至少早一小时

♥ 前 言 大家都知道,我们在通过 Selenium 执行 Web 自动化测试时,每次都需要启动/关闭浏览器,如果是多线程执行还会同时打开多个,比较影响工作的正常进行。那有没有办法可以不用让浏览器的自动化执行干扰我们的工作呢&#xf…

剑指 Offer 46. 把数字翻译成字符串(动态规划)

文章目录 题目描述思路分析完整代码 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多…

Controller是单例还是多例?

Controller是单例还是多例? controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。 我们下面来简单的验证下: package com.riemann.springbootdemo.controller;import org…

章节4:Burp Target模块

章节4:Burp Target模块 Burp渗透测试流程 01 Target模块的作用 与HTTP History的区别 HTTP History按时间顺序记录Target按主机或者域名分类记录(字母顺序) Target模块的作用 把握网站的整体情况对一次工作的域进行分析分析网站存在的攻…

使用GraphQL在Postman中进行API测试

GraphQL 是一种用于API的开源数据查询和操作语言,用于API的查询语言和运行时。它使客户端能够精确地指定其数据需求,并获得预测性地结果。GraphQL旨在提高API的效率、灵活性和可靠性。 Postman 是一款用于API开发的强大工具,它支持REST和Gra…

【ARM 嵌入式 C 入门及渐进 9 --- 代码优化的经验与方法】

文章目录 1.1 简介1.1.1 整形数1.1.2 除法和取余数1.1.3 合并除法和取余数1.1.4 通过2的幂次进行除法和取余数1.1.5 取模的一种替代方法 1.2 变量1.2.1 使用数组下标1.2.2 全局变量1.2.3 使用别名1.2.4 变量的生命周期分割1.2.5 变量类型1.2.6 局部变量1.2.7 指针1.2.8 指针链 …