我们为什么要做 SoloPi

简介: Why SoloPi ?

SoloPi现状

去年(2019年)7月份,蚂蚁集团正式对外开源了客户端自动化测试工具 SoloPi ,其主要包括三大模块:录制回放(用于功能测试)、性能工具(用于性能测试)以及一机多控(服务于兼容性测试)。从开源至今,我们也陆续收到了公司内外对工具的不同声音,有的同学对这套工具能提升测试同学的效率表达了支持态度,也有同学认为脱离了代码的自动化测试可能会限制测试同学的灵活度,让这种模式很难走远,还有同学认为这套工具只是昙花一现,简单包装了一下PC上的工具,而缺乏实际的创新。

其实,这套工具我们从17年开始研发,至今已经有三年的历史了,最开始SoloPi本身只是一个性能测试工具,随后逐步扩展成涵盖功能测试、性能测试、兼容性测试、异常测试、Mock测试等一系列移动端测试场景的测试框架,这一路走来,SoloPi就像我们的孩子一样一步一步地成长,稳步且有计划的前进着。

d7eda5f0-fa40-4826-976b-1257abd501ee.png

回想当初,SoloPi最开始想解决的诉求很简单:测试很麻烦,我们想要更简便的测试方法。所以,我们从当时最麻烦的性能测试入手,以往的性能测试工具,无外乎三种形态:PC驱动工具、侵入式的测试模块、ROOT工具。

PC工具:除了Android Studio自带的性能测试工具,市面上大多数文档都是介绍命令行方法,而且各家方案存在差异,不少还存在错误,实际成型的工具也不多。

侵入式的测试模块:这类工具由于需要侵入到源码中,需要单独打包进行测试,工具本身也可能对性能产生影响。

ROOT工具:首先是需要Android系统的Root权限,对于权限管控越来越严格的Android系统,其路必将越走越窄。

为了解决测试同学性能测试难、标准不统一的问题,我们尝试从Android调试能力入手,研究一种能够在Android手机上不需要root也能实现应用提权的方案。经过长时间的研究,我们最终发现了一套通过Java实现的ADB远程调试方案 (https://github.com/cgutman/AdbLib) ,这套方案与Android调试端口进行通信,通过本地Socket方式实现shell权限的获取,从而达到本地应用提权(下述简称无线ADB提权方案)。

结合无线ADB提权方案,SoloPi针对每一种性能指标,进一步实现了对应的精确获取方案。测试同学不需要再费力搜寻/开发/优化性能测试工具,只需要一个SoloPi,短短几分钟即可快速完成以往动辄数小时的性能测试工作。

在性能测试领域得到应用后,我们继续扩展SoloPi在无线自动化方案的适用范围。这次,我们关注点是功能测试领域。传统的功能测试通常有两种方式:一种是人工手动执行测试,另一种则是编写基于测试框架的自动化脚本。前者成本巨大,为应付不断加速的产品迭代可能需要投入大量人力;而后者则对测试同学的代码能力有不小的要求,这也导致由手动测试转化为自动化测试从而节省人力的进度相对缓慢。结合我们在性能测试方面积累的经验,我们尝试将传统上仅能用于PC的自动化测试能力移植到了移动平台,并根据手机的使用习惯,开发了一套简单易用且功能强大的自动化测试框架,也就是当前的录制回放。通过录制回放,我们可以自豪的说,我们能够节省功能测试高达70%的时间。

在功能测试的方案完成后,我们又对这套自动化测试框架有了更多的期待。由此便诞生了一机多控这样一套兼容性测试利器。关于一机多控,最开始源于一次闲聊,如果将录制回放的过程拆分开,一台机器录制用例,由其他几台乃至数十台机器进行回放,不就能够极大地降低兼容性测试的成本。以往兼容性测试一直是无线测试的老大难问题,通过一机多控,就能实现指数级的提效。通过在测试机房环境的部署,我们已逐渐培养起测试同学通过一机多控进行兼容性测试的习惯。在支付宝内部实践过程中,曾有一位测试同学反馈,没有了一机多控甚至不知道怎么测兼容性了。

为了进一步降低广大从业同学的测试成本,我们继续就整个研发流程进行挖掘、优化,并已在一些节点(如数据准备、异常场景、小程序H5等)上尝试和发力。围绕着测试提效的核心,SoloPi不断地为节省人力成本开发和更新着一系列的测试工具。

SoloPi未来趋势

随着测试技术的不断发展,智能化、简单化的测试趋势日益明显,以19年MTSC大会为例,有超过半数的议题都与AI相关,围绕测试提效的核心,我们也将在这方面进行进一步的挖掘,将AI+测试带给每一个从业人员。

在我们开源的这一年间,我们也发现了游戏领域从业人员对类似工具的诉求,目前SoloPi仍然是以支持传统应用的测试能力为主,所以我们也将在游戏场景做进一步的融合,我们希望能够对类似Unity 3D、Cocos2d-X、虚幻等引擎做进一步支持,从而也能更好地降低游戏测试成本。

SoloPi不仅仅是一个移动测试领域的工具,我们更希望它是一个服务于广大测试从业人员的产品。同时,我们也一直在思考着一个问题:如何能进一步降低测试同学的学习和使用成本?在今年下半年,我们计划推出一套更加轻量化的测试方式,能够真正让测试同学像正常使用应用一样进行测试,做到真正的智能化和简单化。

By the way

SoloPi 贡献者活动正式开始了,不管你是代码大牛、资深用户还是入门新手,通过提交开发的功能、编写实际操作文档、整理使用过程中遇到的各种坑、或者是其他能够帮助他人更好使用SoloPi的方式,都可以参与到贡献者活动中来,我们也为活动中参与最积极的5位贡献者准备了精美礼品,更多细节可以访问:https://developer.aliyun.com/article/770026

👉点击此处立即访问 SoloPi 仓库地址

END

SoloPi-white banner 3.png

相关文章
|
存储 数据库 Android开发
|
存储 JavaScript 测试技术
rpmdb损坏的修复方法
yum强制终止后,提示rpmdb损坏 error: cannot open providename index using db3 - bad file descriptor
9801 0
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
316 17
|
Ubuntu 安全 API
Python3.14正式支持Free Threaded版本!
Python 社区迎来历史性时刻!Python 3.14 正式将无 GIL 构建列为受支持选项,标志着 Free‑Threaded Phase II 启动。本文将深入解析 PEP 779 规定的支持标准、3.14.0b3 版本的新变化,以及这对Python开发者意味着什么。文末还有小彩蛋哦!
1928 87
|
jenkins Java 持续交付
运用Jenkins实现Java项目的持续集成与自动化部署
在新建的Jenkins Job中,我们需要配置源码管理,通常选择Git、SVN等版本控制系统,并填入仓库地址和凭据。接着,设置构建触发器,如定时构建、轮询SCM变更、GitHub Webhook等方式,以便在代码提交后自动触发构建过程。
731 2
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
2327 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】TF-IDF算法在人工智能方面的应用,附带代码
TF-IDF算法在人工智能领域,特别是自然语言处理(NLP)和信息检索中,被广泛用于特征提取和文本表示。以下是一个使用Python的scikit-learn库实现TF-IDF算法的简单示例,并展示如何将其应用于文本数据。
907 65
|
Python
【Python笔记】pip intall -e命令:让你的工程直接使用开源包的源码,可断点调试,修改源码!
【Python笔记】pip intall -e命令:让你的工程直接使用开源包的源码,可断点调试,修改源码!
2475 0
|
数据采集 数据可视化 数据挖掘
NCBI GEO王炸:GEO2R直接分析RNA-seq数据,几家欢喜几家愁?
GEO2R是NCBI GEO团队针对上传到GEO的芯片数据开发的一款在线差异分析、可视化作图工具,是广大数据分析人员的福音。然而,一直以来GEO2R仅针对芯片数据,对于越来越多的测序数据,只能下载所上传的matrix矩阵,进行分析,若没有上传表达矩阵,或者基因组版本不合适的话,往往还得下载原始数据重新分析,耗时耗力。 最近,NCBI GEO团队推出了一项“王炸”更新:GEO2R可以直接分析RNA-seq测序数据了。
730 3
|
机器学习/深度学习 监控 Linux
在Linux中,如何创建和管理KVM虚拟机?
在Linux中,如何创建和管理KVM虚拟机?