您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
有效进行稳定性测试的Accu框架
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
有效进行稳定性测试的Accu框架
自猿其说Tech
2021-07-22
IP归属:未知
29800浏览
测试
### 1 前言 稳定性测试是在保证基本功能正确的前提下,软件或系统在一定时间或压力下,检验功能稳定运行的情况及性能优劣趋势,以减少系统或软件崩溃的发生。目前对于APP的稳定性测试,大多使用的是Monkey框架,而本文章介绍的是一套结合APP埋点数据而搭建的精准场景稳定性测试框架(以下简称Accu框架)。 ### 2 Monkey框架分析 #### 2.1 什么是Monkey? - Monkey是一款app的自动化测试工具,monkey是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动Trackball、手势输入等操作),来对设备上的程序进行测试,检测程序长时间的稳定性,多久的时间会发生异常 #### 2.2 Monkey框架的原理: - 底层通过runMonkeyCyles()方法循环获取事件,一个事件结束之后,通过调用getNextEvent() 方法获取下一个事件 - 获取事件是从事件队列里面获取,这是需要组建事件队列MonkeyEventQueue,队列由MonkeyEvent构成。 - 将事件注入到系统:MonkeyEvent通过command设计模式将具体的事件(如:MonkeyActivityEvent、MonkeyKeyEvent、MonkeyMotionEvent)通过injectEvent()方法逐一注入到系统中 #### 2.3 Monkey框架的应用: - 应用于京驿货车APP、京管家APP、京牛小哥APP #### 2.4 Monkey测试过程中发现的问题: - 测试过程中容易出现退出登录账号的情况,此时无法再次登录,只能通过重启程序解 - 测试过程中出现闪退时无法复现路径 - Monkey测试对场景无意识 #### 2.5 Monkey执行结果: ![](//img1.jcloudcs.com/developer.jdcloud.com/5b92b631-e38f-48a3-8030-e80906a953d820210722112655.png) ![](//img1.jcloudcs.com/developer.jdcloud.com/bcb26b07-6bef-4837-a725-97af6c62827320210722112703.png) ### 3 Accu框架分析 针对2.4中列举的问题,进行了框架改进,决定从业务执行域入手,结合UI自动化脚本,配合APP埋点数据整理出了Accu框架。Accu框架的底层架构如下: ![](//img1.jcloudcs.com/developer.jdcloud.com/d1844df1-99e3-459b-af0b-9215b5d6b8c720210722112722.png) Accu框架的流程图如下: ![](//img1.jcloudcs.com/developer.jdcloud.com/fc61c58d-6b3c-4925-9fd2-f98c404888d820210722112738.png) ### 4 Monkey框架与Accu框架的对比 针对2.4中提出的问题: 1. 针对登录态失效的问题,该框架在测试的前置方法中会校验用户的登录态,未登录时会自动登录; 1. 针对无法复现路径的问题,执行过得测试用例会自动记录在excel文件中,便于问题复现; 1. 针对Monkey测试对场景无意识问题,该框架是结合业务场景编写的脚本,所以从根本解决了问题。 ![](//img1.jcloudcs.com/developer.jdcloud.com/b4ca8466-a543-4374-9f5b-fc767e80424c20210722112827.png) ### 5 Accu框架的应用实例 目前框架应用到京驿货车APP上,已编写用例条数34条,覆盖了主流程。 **执行过程(**截图中的用例为任务详情页添加异常,按照业务需求覆盖功能点。相对于Monkey的无序点击更真实): ![](//img1.jcloudcs.com/developer.jdcloud.com/86c98326-dea8-4fd6-b546-7dc7cd5bc31720210722112908.png) **结果统计**(统计执行过程中的总次数及失败次数,并记录执行路径。相对于Monkey发生问题时更易于复现问题): ![](//img1.jcloudcs.com/developer.jdcloud.com/3fadf593-95f5-402e-bc4a-3bc1d8acfc7f20210722112932.png) **失败用例原因统计**(针对失败的用例拉取了失败原因,便于分享问题): ![](//img1.jcloudcs.com/developer.jdcloud.com/44753aef-a1f6-434e-8fbc-8e60c32b961c20210722112959.png) **执行过程中APP性能统计**(执行过程中APP性能指标记录): ![](//img1.jcloudcs.com/developer.jdcloud.com/2e05b610-29fa-42f4-8d5a-4d8a4c47e7a620210722113020.png) ### 6 总结 **改进后框架的优势** - 执行过程更接近手工操作,避免了测试场景的遗漏,且可根据埋点平台实时调整用例执行权重 - 记录了用例执行过程,在发生NAR或CRASH后能快速地跟根据路径复现问题,提升定位问题的效率 **后续思考** - 稳定性测试开始前执行基准测试,得出单个用例执行的时间。稳定性测试后统计各用例的执行时间并与基准测试结果做对比,针对耗时长的用例抓取用例执行时的APP性能指标 - 执行结果保存到数据库,并对执行结果进行对比分享 - 将持续集成应用到稳定性测试中 ------------ 自猿其说Tech-JDL京东物流技术发展部 作者:运力平台技术部 范文君
原创文章,需联系作者,授权转载
上一篇:即时配送的现在与未来
下一篇:四层负载均衡的NAT模型与DR模型推导
相关文章
安全测试之探索windows游戏扫雷
Jmeter压测实战:Jmeter二次开发之JSF采样器实现
Laputa自动化测试框架介绍
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号