我们为什么要做 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做单页应用
最近在公司接到一个需求,里面有一个三级跳转.类似于选择地址的时候,选择的顺序是:省份->市->区.如果分三个页面跳转,那么体验非常不好,如果引入其他框架做成单页应用,又比较麻烦.所以可以用 ...
随机推荐
- AAC音频编码之--概念介绍
一 概念 AAC,全称Advanced Audio Coding,是一种专为声音数据设计的文件压缩格式.与MP3不同,它采用了全新的算法进行编码,更加高效,具有更高的"性价比".利 ...
- Linux 常见缩写命令英文全称
linux 命令参考Linux 命令大全: https://man.linuxde.net/ awk = "Aho Weiberger and Kernighan" 三个作者的姓的 ...
- Kotlin 集合对象的单条件和多条件排序
原文: Kotlin 集合对象的单条件和多条件排序 - Stars-One的杂货小窝 本文不是太难的东西,因为sortedWith之前没怎么用过,所以就记录下 平常开发经常使用到List,Map等数据 ...
- C# NAudio 播放多个MP3文件
C# 使用 NAudio 来播放多个MP3文件.上代码 1.引入NAudio:using NAudio.Wave; 2.定义变量: private WaveOutEvent outputDevice; ...
- RabbitMq消息队列进一步认识
参考:https://www.cnblogs.com/wanglijun/p/10896896.html(应用场景) https://blog.csdn.net/weixin_41588751/art ...
- 大端(big endian) 小端(little endian) --- 在多字节存储 和 多字节通信中的含义(我还是太年轻了)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 基于VS Code的JSDoc的使用指南
1. 引言 JSDoc是一个用于 JavaScript 的API文档生成器,可以将文档注释直接添加到源代码中,JSDoc 工具将扫描您的源代码并提供一些操作,例如,生成一个 API 文档 JSDoc官 ...
- HTML/ CSS 入门
前言 我们在之前的学习中,对于网络有了一定的了解.现在我们来学习一些基础的 HTML/ CSS 知识.希望阅读完这篇文章能达到编写简单页面的程度. 目录: HTML/ CSS 的发明: HTML 基础 ...
- PLSQL的异常传播
文章概要: 本文对主要就PLSQL的异常传播进行知识性小结,分为四个部分,PLSQL异常传播小结,编写小案例验证5种传播规则,示例了一个容易理解出错的案例,以及使用goto结合异常处理的案例. 一,异 ...
- KingbaseES sys_bulkload数据加载工具错误处理
一.关于sys_bulkload数据加载工具 sys_bulkload是KingbaseES提供的快速加载数据的命令行工具.用户使用sys_bulkload工具能够把一定格式的文本数据简单.快速的加载 ...