智能遍历测试在回归测试与健壮性测试的应用

随着移动互联网的发展,App 的功能变得越来越多,功能也越来越复杂。App 的回归测试、稳定性与健壮性也变得更加重要。更好的用户体验能让 App
在激烈的竞争市场中脱颖而出,从而为公司带来巨大的收益。因此针对 App
的自动化回归测试、非功能测试等相关的测试技术正成为软件工程和智能化测试的热门研究方向。

行业里比较流行的测试手段主要包括手工测试与自动化测试。在App的复杂性前提下,手工测试善于解决新feature的测试,但是很难及时有效的完成回归测试、兼容性测试等工作。自动化测试虽然可以做到及时反馈,但是要覆盖充分的功能,又会面临维护成本问题。那么有没有一种方法是可以很好的针对性的解决上述问题的呢?这就是我们今天给大家介绍的智能遍历测试技术。

遍历技术可以通过智能分析app
ui模型与业务路径,实现自动化测试。它相对于手工测试,可以更快更全的覆盖功能点,相对于自动化测试又可以大大降低维护成本,所以智能遍历/自动遍历测试技术就成了最近几年各家名企都在大力去投资的一项测试技术。

接下来我们就带大家了解下行业里非常热门的几款智能遍历测试工具。

** 4款常见自动遍历工具对比**

Monkey app压力测试工具

首先来看业界用的较早也是经常听过的一款工具—— Monkey。这是 Android 官方提供的一个工具。谷歌原本设计这款工具是为了对 App
进行压力测试的。谷歌早期在设计 Android 的时候,Android 需要响应滑动、输入、音量、电话等事件,早期 activity
设计不完善的时候,谷歌希望测试 activity 的性能,把所有的数据批量化的输出给 activity,看 activity
一秒钟可以处理多少数据。所以早期 Monkey 是用来做 Android 的一个压力测试的工具。

由于 Monkey 在测试过程中的“随机”性,恰巧可以被用来做自动遍历测试,但是 monkey
的缺点很明显,不支持业务行为定制,无法灵活的控制,经常会点到外部的 App 无法回归原测试 App;或者点击到注销和退出,造成无法继续后面的测试;因此
monkey 在经过调研了解后没有成为我们做自动遍历测试的首选。

Monkey 官方链接:

https://developer.android.com/studio/test/monkey

Maxim 自动遍历工具

Maxim 也是一款自动遍历工具,由国内的 zhangzhao 同学开发,官方给出的定义是:

An efficient Android Monkey Tester, available for emulators and real devices
基于遍历规则的高性能 Android Monkey,适用于真机/模拟器的 APP UI 压力测试。

我们来看看这款工具的优缺点:

优点:

  • 基于Monkey二次开发,运行速度非常快

  • 提供了多种遍历算法以提高覆盖度

  • 提供了定制化功能,可以实现流程控制

缺点:

  • 因为是基于 Monkey,所以不具备跨平台性,只能测试 Android,不能测试 iOS,Web 等;

这是一款很优秀的工具,可在一定程度上进行定制,如果只测试 Android 系统的话,可以考虑选用 Maxim 做自动遍历。

官方 GitHub 地址:

https://github.com/zhangzhao4444/Maxim

字节跳动Fastbot 健壮性测试工具

Fastbot是字节跳动的Quality Lab团队开发的一款融合了机器学习与强化学习的基于模型测试的工具。

中文介绍

基于model-based testing 结合机器学习、强化学习的APP 稳定性测试工具

英文介绍

Fastbot is a model-based testing tool for modeling GUI transitions to
discover app stability problems. It combines machine learning and
reinforcement learning techniques to assist discovery in a more intelligent
way.

Fastbot可以理解为MaxIM的升级版,为了增强覆盖,融合了多种机器学习、强化学习等相关的算法。他的执行速度很快,并显著提升了测试覆盖度。应用的效果也是非常不错的。

这是来自于作者团队的效果介绍

目前,Fastbot 已广泛应用于字节客户端类产品的稳定性测试与兼容性测试。每日启动任务数超过 300 次,每日平均发现 5000
个以上的崩溃,并有超过 100 个新捕获的崩溃。借助 Fastbot 的能力,我们在发版前就可以修复大部分的
crash,确保线上用户的使用体验。同时,Fastbot 在整个 DevOps
流程扮演重要的基础服务角色。我们相信,越来越多的智能化测试工具,将极大的改善国内传统测试行业。

官方 GitHub 地址:

https://github.com/bytedance/Fastbot_Android

AppCrawler 优缺点

AppCrawler 是由霍格沃兹测试开发学社第一任校长思寒开源的一个项目,官方 GitHub 上对这款工具的解释是:

一个基于自动遍历的 App 爬虫工具。支持 Android 和 iOS,支持真机和模拟器。最大的特点是灵活性,可通过配置来设定遍历的规则。

这里顺便提一下的是谷歌也发布了一款自动遍历的工具,名字几乎一样,叫做 App Crawler
(差了一个空格),设计的思想也一致。思寒开源的的工具比谷歌早了两年时间。

下面来看看 AppCrawler 的作用和价值。看看它为何满足我们的测试需求,它的优缺点又在哪里。

优点

  • 跨平台性:AppCrawler 是基于 Appium 开发的,所以支持 Android、iOS、Web以及GUI

  • 灵活定制:对遍历的页面、控件、事件、深度等都可*控制

缺点

  • 运行速度较慢:AppCrawler 是基于 Appium 开发具备了跨平台的优点,但是也因为这层封装造成了运行速度相对较慢,再加上运行过程中加入了截图(可以在配置中取消,但是取消后不利于结果的查看),运行起来自然就慢了;

  • 使用门槛高:正因为使用灵活性的问题,也造成了使用门槛的提高,主要基于 YAML 文件中使用 Appium 的相关技术知识进行配置,这就对使用者有了一定的技术要求;

** 作者亲授带你玩转自动化遍历**

给大家介绍了常见的几款遍历工具,相信大家已经对自动遍历已经有所了解。那么如何把这套有趣又有用的技术落地到自己的工作中以保证好回归测试、健壮性测试效果哪?

9月28日appcrawler的作者思寒将来到直播间,与大家分享并交流智能遍历的相关技术,并教大家在工作中如何应用。

** ** ** ** 点一下在看,就少一个 Bug!********

来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
点击获取更多信息

上一篇:转:Monkey软件测试工具介绍


下一篇:python笔记69 - 什么是猴子补丁(Monkey Patch)?