移动性能测试 | 持续集成中的 Android 稳定性测试

简介: 来自学院内部学员 xinxi 同学的又一篇佳作,本文主要介绍了作者如何借助开源工具进行 Android 的稳定性测试,并在持续集成中使用,希望对大家有所帮助。

来自学院内部学员 xinxi 同学的又一篇佳作,本文主要介绍了作者如何借助开源工具进行 Android 的稳定性测试,并在持续集成中使用,希望对大家有所帮助。

心有多大,世界就有多大!
image.png
前言
谈到Android稳定测试,大多数会联想到使用monkey工具来做测试.google官方提供了monkey工具,可以很快速点击被应用,之前我有一篇帖子提到了monkey工具的使用

但是原生的monkey都是基于坐标随机点击的,能真正点击到控件的概率并不大,而且会跳出app.所以monkey工具并不合适在持续集成使用.

替代方案
主要有两个思路做替代方案:

1.基于monkey工具写一套脚本来执行monkey命令.之前也写过这样的脚本,把monkey命令封装一下,但是问题在于的遍历页面太少,做过统计遍历范围15%到20%,所以这个方案并不完美.

2.寻找开源工具, AppCrawler、Maxim、UICrawler

AppCrawler

对app进行快速遍历,底层引擎基于appium,支持Android和iOS.
https://github.com/seveniruby/AppCrawler

Maxim

高速uiautomator控件解析算法的Android Monkey,支持多种模式运行.

https://github.com/zhangzhao4444/Maxim

UICrawler

基于Appium的AppUI遍历工具.

https://github.com/lgxqf/UICrawler

三款工具都使用过,优缺点就不说了.目前使用是Maxim工具,Maxim代码还没有开源,作者会定期发布新版本.主要是用其工具的两个功能,基于解析控件的点击和崩溃时图片导出.

Maxim使用
需要把两个jar包push到手机sdcard目录下
adb push framework.jar /sdcard
adb push monkey.jar /sdcard

运行命令:adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v

策略:
模式 DFS --uiautomatordfs 增加深度遍历算法
模式 Mix --uiautomatormix直接使用底层accessibiltyserver获取界面接口
模式Troy --uiautomatortroy控件选择策略按max.xpath.selector配置的高低优先级来进行深度遍历
保留原始monkey
自动化脚本开发
选好了工具,接下来可以开发自动化脚本,预期脚本可以达到的效果.

修改源码

在Android源码中注入内存泄漏检测代码、卡顿检测代码、启动时间测试代码

构建app

根据环境参数执行打包命令构建app

安装测试

使用adb命令进行安装测试

登录测试

使用appium进行登录测试

稳定性测试

使用脚本启动Maxim工具、获取崩溃日志、获取崩溃时图片

性能测试

测试内存、cpu、fps、页面加载时间等性能指标

生成报告

把安装测试、登录测试、稳定性、性能等数据,绘制成报告展示.

平台收集结果

在脚本的最后一步把测试报告上传到服务端,由前端做报告展示.

把脚本也分为模块来开发,让每个模块没有关联性,后期比较方便维护.
image.png
持续集成
持续集成中最常用的工具是jenkins平台,jenkins可以新建job拉最新代码进行打包,触发后续的自动化测试.

由于自动化脚本已经模块化了,所以使用了pipeline模块把功能串联起来.pipeline使用是的groovy语法,需要写一个pipeline脚本文件
image.png
使用的pipeline来构建自动化任务,好处在于很清晰的知道自动化脚本执行耗时和构建步骤.
image.png
执行策略
1.每天晚上定期执行,可以在jenkins设置定时器.

2.提交代码自动触发自动化测试job.

2.手动触发.

报告展示
报告展示把自动化测试结果绘制成html报告,使用的是flask服务的Jinja2作为报告模版.

完成自动化测试报告会自动上报到测试平台保存,为后续的数据统计做准备.

应用基本信息
image.png
Monkey覆盖率
image.png
内存、cpu监控
image.png
崩溃日志、崩溃图片

!
image.png
平台汇总
可以在平台中查看自动化测试产生的崩溃日志和版本崩溃对比趋势.平台也可以查看每次自动化报告,出现崩溃问题直接把报告地址发给开发即可,省去了复制粘贴崩溃log的过程.image.png
结语
使用这种方式已经在几个版本中发现了不少崩溃问题,也累计了不少数据.希望自动化测试的同时,还能获取更大的价值.image.png
更多优秀内容及资料可点击获取链接文字

相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
288 4
|
5月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
704 0
|
3月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
173 6
|
5月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
6月前
|
人工智能 Java 测试技术
SpringBoot 测试实践:单元测试与集成测试
在 Spring Boot 测试中,@MockBean 用于创建完全模拟的 Bean,替代真实对象行为;而 @SpyBean 则用于部分模拟,保留未指定方法的真实实现。两者结合 Mockito 可灵活控制依赖行为,提升测试覆盖率。合理使用 @ContextConfiguration 和避免滥用 @SpringBootTest 可优化测试上下文加载速度,提高测试效率。
356 5
|
5月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
10月前
|
存储 人工智能 测试技术
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
141676 29
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
|
6月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
10月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1305 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
307 60