爱奇艺iOS稳定性测试实践

稳定性测试是长时间持续运行APP,以验证应用是否稳定的测试。它可以有效发现APP长时间运行下的偶发闪退、内存泄露、性能变差等问题。iOS端通常由苹果系统的API快速执行点击事件,开展稳定性测试,类似的优秀工具如FastMonkey等虽然有诸多好处,但是作为长期运行的测试服务系统,还需要调整功能以适应企业级测试场景,无法解决通过外部请求定制事件执行序列、无法动态设置启动参数、截图存在本地将导致磁盘占用过大等问题。

爱奇艺测试团队在iOS稳定性测试方面展开了不懈的探索,也积累了一些相关经验,希望借本文跟大家分享在【iOS稳定性测试】实践和优化过程中的心得和体会,也借此机会抛砖引玉,征求同行的更多探讨。

01

方案实践

1.1基础框架


爱奇艺iOS稳定性测试基于现有的云真机体系,总体分为三大块。向下是设备管理,向上是产出物汇总,核心是测试策略。基础框架如下图1,真机设备通过驱动层接入远程控制体系,统一由后端调度管理,核心策略通过设备驱动与真机设备交互,模拟用户行为开展测试,测试过程中产生的数据统一汇总到后端,由后端生成测试报告并反馈给用户。

9428edfe0bb9542ff4111a0474b0358e.png

图1. 系统框架

系统结构如上,下面重点讨论策略选择的问题。

常用的稳定性测试方案,有Monkey测试、录制回放或者按元素遍历的方式等。其中Monkey测试实现成本较低,但有的页面元素较少,盲目的操作经常点不到元素,导致测试效率较低;对于长期执行录制回放的方案,其执行路径固定且与业务功能耦合,可能需要长期维护业务逻辑,不利于各业务线快速拓展稳定性测试场景;而按元素遍历操作的方案,可以较好的处理上述方案的问题,但是实现成本比Monkey策略高,需要测试团队持续投入研发力量。

我们尝试了随机滑动点击策略、按元素点击的遍历策略,下面分析下两种方案的实现细节和难点。

1.2生成测试事件

我们抽象出一个模块叫事件生成器,主要作用是持续产生用户事件流作用于APP,以达到验证APP稳定性的目的。本文重点介绍随机产生和根据页面元素产生两种模式。

随机产生事件

随机事件方案的典型代表是Monkey,它向系统发送随机的用户事件流(如点击、输入、滑动等),实现对正在开发的应用程序进行稳定性测试。该方案通过XCTest提供的接口就可以快速模拟相关操作,实现成本相对较低。早期为了快速打通测试流程,验证方案有效性,我们实现了Monkey测试的方案。如图2所示:先获取本次任务期望各事件发生的占比配置(涉及重启APP、按home键、切换横竖屏、点击事件、滑动事件、后退等事件),再按概率指定本次执行哪种事件。组装好需要执行的事件,最后请求具体的驱动服务以执行事件。

ac53c0cabd06c53ca337550e1b924c79.png

图2  随机事件生成器


根据页面元素产生事件

随机策略虽然

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值