我们为什么要做 SoloPi
SoloPi现状
去年(2019年)7月份,蚂蚁集团正式对外开源了客户端自动化测试工具 SoloPi ,其主要包括三大模块:录制回放(用于功能测试)、性能工具(用于性能测试)以及一机多控(服务于兼容性测试)。从开源至今,我们也陆续收到了公司内外对工具的不同声音,有的同学对这套工具能提升测试同学的效率表达了支持态度,也有同学认为脱离了代码的自动化测试可能会限制测试同学的灵活度,让这种模式很难走远,还有同学认为这套工具只是昙花一现,简单包装了一下PC上的工具,而缺乏实际的创新。
其实,这套工具我们从17年开始研发,至今已经有三年的历史了,最开始SoloPi本身只是一个性能测试工具,随后逐步扩展成涵盖功能测试、性能测试、兼容性测试、异常测试、Mock测试等一系列移动端测试场景的测试框架,这一路走来,SoloPi就像我们的孩子一样一步一步地成长,稳步且有计划的前进着。

回想当初,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不仅仅是一个移动测试领域的工具,我们更希望它是一个服务于广大测试从业人员的产品。同时,我们也一直在思考着一个问题:如何能进一步降低测试同学的学习和使用成本?在今年下半年,我们计划推出一套更加轻量化的测试方式,能够真正让测试同学像正常使用应用一样进行测试,做到真正的智能化和简单化。
原文链接
本文为阿里云原创内容,未经允许不得转载。
我们为什么要做 SoloPi的更多相关文章
- 用php做注册审核
做注册审核就像前面讲的注册登录一样,也是要连接数据库 首先在数据库内要做这样一张表: 表名为users表 里面的列名分别为用户名,密码,姓名,性别,生日,账户的状态,照片 然后就可以写代码了,要注册的 ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- 传播正能量——做一个快乐的程序员
引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- 调用AJAX做登陆和注册
先建立一个页面来检测一下我们建立的用户名能不能用,看一下有没有已经存在的用户名吗 可以通过ajax提示一下 $("#uid").blur(function(){ //取用户名 va ...
- WPF做12306验证码点击效果
一.效果 和12306是一样的,运行一张图上点击多个位置,横线以上和左边框还有有边框位置不允许点击,点击按钮输出坐标集合,也就是12306登陆的时候,需要向后台传递的参数. 二.实现思路 1.获取验证 ...
- 使用 JavaScript 和 canvas 做精确的像素碰撞检测
原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...
- 做一个gulp+webpack+vue的单页应用开发架子
1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命 ...
- UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?
选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...
- 用原生js做单页应用
最近在公司接到一个需求,里面有一个三级跳转.类似于选择地址的时候,选择的顺序是:省份->市->区.如果分三个页面跳转,那么体验非常不好,如果引入其他框架做成单页应用,又比较麻烦.所以可以用 ...
随机推荐
- day02-SpringMVC映射请求数据
SpringMVC映射请求数据 1.获取参数值 在开发中,如何获取到 http://xxx/url?参数名1=参数值1&参数名2=参数值2 中的参数? 之前的案例中我们知道:提交的url的参数 ...
- Google Chart API学习(一)
圆饼示例: <html> <head> <!--Load the AJAX API--> <script type="text/javascript ...
- enum class 用法
enum的主要缺点 1.类型不明确 首先,无法指定数据类型,导致我们无法明确枚举类型所占的内存大小.这种麻烦在结构体当中尤为突出,特别是当我们需要内存对齐和填充处理的时候. #include < ...
- 微信小程序开发:异步处理接入的生成式图像卡通化
书接上文,我们完成了对接阿里云人像动漫化接口,现已完成的界面是这样的: 就是效果看着一般,看看效果: 然后我就在阿里云api市场转悠,就想看看还有没有什么其他奇奇怪怪的api,结果就发现了这个: ap ...
- 《世嘉新人培训教材—游戏开发》2DGraphics1项目cmake构建
<世嘉新人培训教材-游戏开发>作为经典的游戏开发教程,提供了相关样例代码供我们进行开发使用.但是该样例是基于VS进行编写构建的,而本人日常喜欢CLion进行C/C++开发,于是准备使用cm ...
- pandas 自动化处理Excel数据
需求: 如下一份这样的Excel数据 现在需要把学生的学号.姓名分离出来到单独的一列 ,将 测验.讨论.成绩三列转换成数值,并把讨论这列的"-"转换成 0 显示 最后把处理好的内 ...
- Kingbase 函数查询返回结果集
数据库使用过成中,时常会遇到需要返回一个结果集的情况,如何返回一个结果集,以及如何选择一个合适的方式返回结果集,是现场经常需要考虑的问题. 下面介绍KingbaseES中各种返回结果集的方式. 1.通 ...
- KingbaseES V8R6 逻辑恢复到新的 schema
前言 本文介绍一下KingbaseES V8R6版本中逻辑恢复时,将原有的对象恢复到新的schema. sys_restore命令中如果只加入了-g(原schema) -G(新schema)参数 那么 ...
- 福州大学MEM 备考总结
自己的基本情况 2022年8月2日,当天觉得休息的差不多了,思来想去,觉得考研是个不错的选择,和女朋友聊了一下,得到她的支持,于是乎定下目标.接着就是开始在网络上查找相关的材料,先把要报考高校和专业的 ...
- C++ 自动计时
#include<iostream> #include<chrono> struct Timer { std::chrono::time_point<std::chron ...