• 0
  • 0
分享
  • Monkey测试工具大盘点!如何选怎么用全整明白了!——软件测试圈
  • 小丸子🍡 2024-08-12 16:40:36 字数 2891 阅读 1196 收藏 0

  什么是monkey测试?

  以下是官方说法:

  我所认为的monkey测试:指像猴子一样,不知道程序的任何用户交互方面的知识,就对界面进行无目的、乱点乱按的操作;

  我想要的monkey测试:不用熟悉业务逻辑,通过界面随机测试,发现浅层的交互问题、前端逻辑问题。

  Monkey测试的优点有哪些?

  1. 自动化:Monkey 测试是自动化的,无需手动操作,可以节省测试人员的时间和精力。

  2. 随机性:Monkey 测试的随机性可以发现一些普通的测试方法可能遗漏的问题。

  3. 广泛性:Monkey 测试可以覆盖应用程序的大部分功能,包括一些边缘情况。

  4. 压力测试:Monkey 测试可以通过模拟大量用户事件来对应用程序进行压力测试,以评估其在高负载情况下的稳定性和性能表现。

  常见的Monkey测试工具有哪些?

  1.adb:Android 官方提供的 Monkey 测试工具,可以通过 adb 命令调用。它可以模拟用户在 Android 设备上的随机操作,如触摸、滑动、按键等。通过命令行或者脚本调用 Monkey 工具,可以指定测试的时间、事件频率、包名等参数。Monkey 工具会自动生成并发送用户事件,直到测试结束或者满足某个停止条件为止。

  Android 调试桥 (adb)  |  Android Studio  |  Android Developers

1-1.png

  2.Chaos Monkey:Netflix 开源的工具,用于在分布式系统中执行随机故障注入测试,模拟实际运行中的故障情况,包括关闭服务器、网络分区等。虽然它主要用于测试分布式系统,但也可以应用于 Web 应用程序的测试。

  Home - Chaos Monkey

  3.Gremlins.js:一个 JavaScript 库,可以在 Web 页面上执行随机化的用户行为,如点击、滚动、输入等,以测试页面的稳定性和性能。它可以模拟真实用户的随机行为,并帮助发现页面中的一些问题。

  https://github.com/marmelab/gremlins.js?tab=readme-ov-file#cypress

  4.Selenium with TestNG/JUnit:虽然不是专门的 Monkey 测试工具,但 Selenium 是一个流行的自动化测试框架,可以用于执行 Web 应用程序的功能测试和界面测试。结合 TestNG 或 JUnit 等测试框架,可以编写随机化测试用例,模拟用户的随机操作行为。

  如何选择合适的monkey测试工具?

  需求是什么?

  上手简单,适用于web端。

  满足需求的工具有哪些?

  1)Selenium

  Selenium是一个用于Web应用程序测试的开源工具。它支持各种编程语言,如Java、C#、Python等,可以用于自动化测试Web应用程序的功能。

  2)Puppeteer

  Puppeteer是由Google Chrome团队开发的Node库,用于控制Chrome或Chromium浏览器。它提供了一套高级API,可以用来模拟用户操作,如点击、输入文本等。

  3)Cypress

  Cypress是一个现代化的Web测试工具,它允许你编写测试脚本,模拟用户操作,并提供实时反馈。它支持各种测试框架,如Mocha、Jasmine等。

  4)WebDriver

  WebDriver是一个用于Web应用程序测试的开源工具,它提供了一套API,可以用来模拟用户操作。WebDriver支持多种编程语言,如Java、C#、Python等。

  5)Jest

  Jest是一个流行的JavaScript测试框架,它可以用于测试React、Angular等前端框架的应用程序。Jest支持模拟用户操作,如模拟点击、输入等。

  6)gremlins.js?

  gremlins.js是一个用于测试Web应用程序的JavaScript库,它可以模拟用户在浏览器中进行的各种操作,如点击、滚动、键盘输入等。这个库通常用于测试Web应用程序的健壮性和稳定性。

  如何选择?

  易操作,少编程,能够python语言支持。所以,我选择Gremlins.js和Selenium。

  如何使用monkey测试工具?

  1.Gremlins.js安装方法

  Github地址为https://github.com/marmelab/gremlins.js。使用npm安装,命令为:npm i gremlins.js。

  2.Gremlins.js的monkey测试

  Gremlins.js提供两种使用方式:编写js脚本或着bookmarklet。本文介绍基于bookmarklet的方式进行monkey测试。该方法简单,直接将bookmarklet代码输入在浏览器的console窗口运行即可得到结果。但值得注意的是:由于安全限制,Bookmarklet可能无法在所有浏览器中正常工作,特别是如果你的浏览器有严格的安全设置。此外,Bookmarklet通常只在当前页面中运行,而不是在整个浏览器中运行,因此它们可能无法访问某些资源或功能。

  1)基于bookmaklet的monkey测试

  如下图所示,打开gremlins.js的bookmarklet标签页面,勾选对应操作的标签,获取bookmarklet code。其中,Mogwai表示监视窗口,species表示监视窗口中的动作(如,点击click,表单填写formFilter等),strategies为运行策略。

1-2.png

  以阿里云网页为例,将复制得到bookmarklet code粘贴到console面板运行,可得到如下图所示的运行截图。左侧主窗口红色边框为操作范围,右侧console面板打印monkey测试结果。Mogwai fps表示每秒监视的帧数。

1-3.png

   2)gremlins.js和selenium结合

  为了实现自动化脚本控制,我们可以采取gremlins.js和selenium相结合的模式。将gremlins.js的bookmarklet code引入脚本,使用selenium的控制器触发浏览器操作。核心代码片段如下图所示:

1-4.png

  触发运行图如下所示:

1-5.png

  效果如何?

  使用gremlins.js的bookmarklet可以很直观地观察到监控窗口中地频繁操作,如点击、输入、触摸等。由此频繁操作引发的问题和错误,也会打印到console窗口,便于排查。

  但是,该方法虽然能捕获某些错误,但由于频繁地随机操作和错误输出,导致无法判定相关操作,以及错误真伪。例如:在console捕捉到错误,但无法准确定位操作来源。

  后续计划

  1、加强测试断言

  如何判断错误的真实性?

  2、获取相关操作日志

  例如,脚本中console错误日志获取,并与操作绑定。


作者:刘晓佳Rachel    

来源:http://www.51testing.com/html/89/n-7801989.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • SQL注入是一种注入攻击,可以执行恶意SQL语句。下面本篇文章就来带大家了解一下SQL注入,简单介绍一下防止SQL注入攻击的方法,希望对大家有所帮助。 什么是SQL注入?SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。SQL注入漏洞可能会影响使用SQL数据库(如MySQL,Oracle,SQL Ser...
            11 11 1325
            分享
          •   操作步骤:  右击:“添加”-"监听器"  察看结果树  查看结果树显示所有取样器的请求信息和响应信息,方便接口调试,问题定位。  聚合报告  聚合报告为测试中的每个取样器创建一行。对于每一个取样器,计算响应信息,并提供请求计数,最小,最大,平均,错误率,近似吞吐量(请求/秒)和千字节每秒的吞吐量。测试完成后,吞吐量就是整个测试期间的实际吞吐量。  · 标签 -样品的标签。如果选择“ 在标签中包括组名? ”,则线程组的名称将作为前缀添加。这样,可以根据需要分别整理来自不同线程组的相同标签。  · #样本 -具有相同标签的样本数  · 平均 -一组结果的平均时间  · 中...
            10 10 2238
            分享
          • 大家好呀,我是阿常,昨天帅张广州分队邀请了嘉宾 lee、木木以及若坤关于「求职面试」进行线上分享,由于阿常当天有其他安排,所以只完整地听完了lee的分享,木木的分享阿常听了一部分,若坤的分享阿常没听到有些可惜。下面阿常把自己听到的部分内容做个总结:一、lee 的分享数据产品小lee一枚数据产品经理,分享工作日常,所思所想一)深度复盘,好好认识自己(分析自己)知道自己的特长,自己短期、长期的需求,匹配自己的需求。1、思考你的优势和劣势是什么,据此判断什么样的工作适合你2、想清楚你为什么要换工作,你未来 3~5 年的规划是怎样的二)了解市场需求、清除信息差(分析市场)分析市场最重要的就是...
            0 0 961
            分享
          •   点击链接参加测试行业调查问卷,提交成功之后免费获得独家测试资料,链接:http://vote.51testing.com/  机器学习、人工智能各类KNN算法层出不穷,DBSCAN具有强代表性,它是一个基于密度的聚类算法,最大的优点是能够把高密度区域划分为簇,能够在高噪声的条件下实现对目标的精准识别,但该算法当前已远不能满足人们对于高效率、高精准度的算法要求,由此FDBSCAN算法应运而生。  01  FDBSCAN聚类算法在KD-树的加持下,时间复杂度达到了O(nlogn),目标识别效率已指数级别上升。  02  Kd-树:它是一种树形结构,主要应用于多维空间关键数据的搜索。由于他的增加...
            0 0 1098
            分享
          • 读者提问:作为测试,如何跟不讲理的开发有效沟通?阿常回答:1、不要和这位比较轴、不讲理的开发人员单独正面沟通。2、要当着其他研发、测试和产品的面儿,比如我们可以在产研测微信工作群里,做相关内容的反馈。3、描述问题时附上截图、日志、链接等相关证据。4、必要时发邮件给干系人汇报当前工作情况,包括测试进展如何、当前遇到什么阻碍、阻塞任务的干系人是谁、问题不解决可能存在哪些风险。5、做到如上四点就差不多了,测试该做的都做了,证据也留了,责任在他那儿,相信他也会理性处理相关问题的。阿常碎碎念:今天登录知乎收到了这条邀请回答,说实话阿常在工作中很少遇到这样的开发人员。沟通能力是职场中非常重要的软技能,我们...
            0 0 1063
            分享
      • 51testing软件测试圈微信