1. 前言
近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放、图像识别、云测平台等测试技术贴合实际业务需求深度应用和创新,测试效率从而一次又一次被提升。1.1 移动测试 1.0 时代
移动测试 1.0 时代,也可以称之为探索期。由于厌倦了日复一日的手工操作,如何提升测试效率成为了移动测试领域最重要的课题,在此期间,除了 monkey、uiautomator、instruments 等官方提供的工具,业界还涌现了一批优秀的开源自动化测试工具/框架,在自动化驱动能力的基础之上,不仅可以实现基本功能的验证,还可以结合性能采集方案、遍历算法等实现各类专项测试的自动化。在这个阶段,自动化测试的常见形态是在单机或本地少数几台 pc 上部署测试环境,再利用 jenkins 等工具实现持续集成。
1.2 移动测试 2.0 时代
伴随着测试技术的持续发展、又得益于 stf 的开源,业界开始出现了云测平台的概念,将真机设备、任务管理、自动化框架以及专项测试方案打包在平台中作为服务提供出去,给用户带来了一站式的测试体验。另一方面,远程调试、设备调度等技术的引入极大的提升了设备的利用率,测试人员不再需要为缺少测试设备或测试任务排队耗时而担心。对于云测平台用户而言,在此阶段常见的测试形态是:在本地 pc 上开发测试脚本,再上传至云测平台执行,最后可在平台中查看测试报告,测试流程简单且清晰。
1.3 移动测试 2.0
在保留了上述 “云测” 的玩法之外,移动测试 2.0 时代下的测试技术提供的往往不再是某一个独立的小工具,更多的是带来一套完整的凯发k8国际官网首页入口的解决方案,例如为用户提供一套定制化的 ide 环境,结合录制回放、图像识别等技术,用户可能只需要做一些简单的框选、拖拽就能完成测试脚本的开发。另一方面,由于办公环境、硬件条件等因素的限制,越来越多的测试人员希望可以在移动端上直接发起测试,做到移动测试 “移动测”。当然,无论是云端、ide 端、还是移动端,都应该做到能力互通,即 “多端多通”,这样才能让测试方案更加灵活、适用于更多场景。
2. 无线驱动的 android 专项测试方案:soloπ
“多端多通” 的概念比较广,仅凭一篇文章可能无法阐述清楚,所以下面将会重点介绍为了迎接 “移动 2.0 ” 时代,我们在移动端上实现的一套无线化、非侵入、免 root 的 android 专项测试方案 soloπ。直接操控手机,即可实现自动化的功能、性能、兼容性、以及稳定性测试等工作。2.1 整体架构

2.2 无线 adb 方案

2.3 录制回放
录制回放功能基于 accessibilityservice、chromedevtoolsprotocol、图像识别三种模式实现精确查找,可以在设备本地实现回放,也可以转换为 appium/macaca 等框架的脚本,对接云测平台。另外,为了降低用例维护的成本,我们在端上还提供了用例编辑、流程控制的功能。2.3.1 实现方案

2.3.2 控件查找能力
对于传统的 native 应用,通过 uiautomator dump 获取的属性就足以实现自动化了。然而,随着移动端动态化能力的稳步发展,越来越多的应用采用了 “native h5/小程序” 这种混合开发的方案。再考虑到近年来手游行业的飞速发展,手机游戏自动化测试的需求也越来越多。为了尽可能的适配各种场景,soloπ 提供了三种查找模式:
2.3.3 回放能力
通过 soloπ 录制的用例会以 json 的形式存储起来,用例不仅可以向上述视频演示的一样在设备本地直接回放,还可以通过 soloπ 的解析器将用例转换为 appium、macaca 等目前主流自动化测试框架的脚本,轻松打通云测平台。另外,得益于文本抓取和图像识别能力,soloπ 还实现了在 android 端录制一遍用例,生成的脚本能够同时在 android、ios 双端回放的能力。
2.3.4 更多功能
soloπ 还提供了用例步骤的插入、删除、修改等用例编辑功能,可以有效降低用例的维护成本。另外,soloπ 还引入了循环、条件等流程控制能力,若对用例进行合理编排,可轻松实现需要重复操作的工具脚本或是需要暴力回放的稳定性测试脚本。
2.4 一机多控
在各类专项测试中,兼容性测试是最为耗时费力的一项,测试人员需要关注各种系统版本、各大手机厂商,各种类型的屏幕等等,想要通过纯人工测试来保证兼容性测试的质量成本是非常高的。 soloπ 在录制回放能力的基础上实现了一套兼容性测试的凯发k8国际官网首页入口的解决方案。在录制回放的场景中,我们先是在一台设备上记录了用户的操作,然后再在任意一台设备上实现操作的回放。如果把场景扩展到多台设备上,就可以实现通过一台设备操控多台设备,我们把这套功能称为 “一机多控”。具体说来就是主机与从机建立 socket 连接,然后在主机上将用户的操作实时发送到各个从机,在从机上完成操作的回放。
2.5 性能测试
提到专项测试,不得不提性能测试。近年来,手机应用成为了人们日常生活中不可或缺的一部分,这也对应用的使用体验提出了更高的要求。 为了给用户带来 “丝般顺滑” 的体验,仅仅实现功能是不够的,而性能测试,就是打造优质应用不可或缺的一个环节。 然而,性能测试的开展并不是很容易,一方面,性能测试具有一定的门槛,很多时候需要开发脚本去实现,还要去处理各类兼容性问题。另一方面,大多数性能测试方案获取到的都是一些基本指标,难以发现深层次的问题。针对上述问题,soloπ 实现了一套性能测试工具。包含常规性能指标获取、响应耗时计算以及移动 lighthouse 三方面功能。2.5.1 常规性能指标获取
soloπ 支持 cpu、内存、fps、流量等常规指标的实时获取,同时支持将性能数据记录下来,存储到本地并通过报表形式展示。soloπ 还提供了数据上传的功能,可以将数据发送给服务端做进一步的处理。整套性能工具支持手动触发和广播触发,可以和自动化测试轻松打通。2.5.2 响应耗时计算
除了常规性能指标的获取,soloπ 还提供了响应耗时计算的功能。大家都知道,计算响应耗时的一种常用方法就是基于代码埋点或是系统日志(比如 activitydisplayed time),但是这种方法计算得到的结果对于异步加载较多的界面来说会与用户实际的观感有比较大的偏差。
2.5.3 移动 lighthouse
h5/小程序等技术在移动应用中的占比越来越高,如何测试这类应用的性能成为了一个新的课题。接触过前端性能的同学都知道,lighthouse 是前端性能测试的利器,但是它无法在手机上直接应用。而 soloπ 所做的,就是基于 cdp 协议,在客户端中实现了一套 lighthouse 性能测试工具,它可以获取 h5/小程序页面的启动性能、资源流耗、请求质量、js 质量、jsapi 调用情况与页面信息,并内置了 30 余条前端开发最佳实践,旨在发现细粒度的性能问题。

3. 更多
作为一套完整的专项测试方案,除了前面提到的录制回放、一机多控、性能测试外,soloπ 还提供了数据 mock,性能加压、网络模拟、智能 monkey 等功能。目前 soloπ 的部分源码已开源(项目地址:https://github.com/solopi/solopi),欢迎大家加入到项目中,与我们一同开发出更好用的测试工具!联系凯发k8国际官网首页入口

注意:本文法律责任由该作者承担,侵权请联系▷诈骗举报◁▷新闻不符◁▷我要投稿◁
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。
46f
请教一下,一机多控是基于控件信息的,那我录制的图片断言,在不同分辨率上尺寸可能不一样,怎么能保证图像识别的精度或者换句话说怎么保证图像断言一定是通过的。
45f
一机多控,可以用于棋牌游戏测试吗,主从测试机上发牌信息肯定不一样,这样是怎么断言测试正确性
44f
如何保证进程不被后台杀死? 杀死后如何拉起?
特别是在定制比较深度的 华为 小米手机上,运行超过 25 分钟之后,是否会被后台杀死?
43f
录制回放内有性能测试功能,可以在全局操作中找到,在需要测试的地方执行开启和关闭
如果是游戏等通过图像引擎渲染的场景,推荐使用游戏帧率项
42f
我开启了手机的 fps 的记录功能,但是在查看录制结果时,打开录制数据查看帧率数据等都是为空,这个是什么原因?是我的配置不正确么?
41f
回放功能是否可以结合性能测试同时使用?比如我在执行录制的用例的同时,开启性能测试工具,在执行功能测试时,同时输出性能测试结果?