京东金融云测平台方案揭秘
The following article is from MiniStarClub北京 Author 土司阿哈
2011年初,在国外的一个网站上看到一篇关于移动端云测相关的文章,突然意识到这是一个大有所为的市场,然后游说老板和并开始实施demo版,后来老板因为觉得我们有更重要的事情做,而且这是一个小众市场,就不了了之,后来心有不甘,完成一篇关于云测平台的专利提交。
2017年加入京东金融,进行移动端测试与探索,做了一个简单的系统,支持自动化和客户端性能测试,通过调用执行云设备管理的设备。就在这时,有个国企要采购云测项目邀请参加POC,和领导商议后,觉得这事可以搞。通宵达旦的搞4天3晚上,按照POC要求优化了管理后台的功能和界面,以及后台云设备管理端,较好的完成了此次POC,领导也很满意,借着公司对外赋能的东风,开启了京东金融云测平台工具建设之路。
移动端测试解决方案主要包含四部分内容录制回放、测试管理、测试服务管理、云设备管理。当用户使用平台时,首先通过录制回放模块录制脚本(也可以手写脚本),提交或者上传到移动端测试管理中的脚本管理中,按照业务进行测试脚本和测试数据配置,组织测试用例、测试场景、测试任务,然后选择对应的App包,通过选择执行测试服务内容提供的测试服务类型,调度执行运设备管理上的设备进行执行,执行完成后将测试结果反馈到测试管理中的结果呈现管理模块。
在脚本增强方面,除了支持顺序、分支、循环三种结果体,还增加了参数化、检查点(文本、图片、表格等)、脚本段(事物)等方式的脚本优化。
测试管理主要是对测试资产进行管理,包含测试对象、测试脚本、测试数据、用例的组织方式、测试结果进行管理;
测试对象主要是对应用安装包的管理,包括应用包的上传下载、应用包的版本信息和开发者信息等。
测试结果呈现主要是各种测试结果进行聚合呈现,分类分析,方便统计和分析测试执行情况,质量发展趋势等。
测试脚本主要是录制回放的脚本或者根据框架提供的demo编写的脚本,支持脚的上传下载和git地址自动打测试包的方式。脚本管理对脚本版本管理做了严格的区分,方便制定不同的执行策略,并减少自动执行时的出错几率。
测试用例和测试数据是测试最核心的资产之一,测试用例和测试数据管理是检验工具平台是否好用的最主要标准之一。京东云测平台测试用例组织主要有测试步骤、测试用例、测试场景三部分,测试数据也对应的有三部分,基于测试步骤的业务数据、基于测试用例的依赖数据(包含测试步骤之间的依赖和用例之间的依赖)、基于测试场景的参考数据、基于运行或者执行环境的全局数据。
参考数据:参考数据是针对测试场景而提供的一个功能增强的便捷功能。比如登录有多种场景,账号密码登录、一键登录(微信、微博、京东)、人脸识别登录、手机号码一键登录等等。在测试时需要准备不同的数据,为了方便测试,提出了一个依赖参数,比如可以每个场景关联一个sql语句,实现场景与数据的关联,方便进行测试。
全局数据:和各种语言中的全局数据一样,主要是方便配置和灵活迁移执行,比如测试地址,测试环境、公共账号等信息。
03测试服务管理(测试类型支持)
测试服务管理,提供统一的接口方式,以服务化的方式接入各种测试类型,如App自动化测试、App性能测试、App标准兼容性测试、稳定性测试(Monkey、自动遍历)、安全测试等等。
▶▶▶ 稳定性工具&monkey测试工具
Android端通过Android SDK提供的命令行工具,iOS端利用XCTest单元测试和Facebook的 WDA,实现Server-Client架构(C/S)的消息通信。发送伪随机的用户事件流。
自动启动App向系统发送大量、连续、随机的用户事件流,如按键输入、触摸屏输入、手势输入等,实现对正在开发的应用程序进行压力测试,跟踪日志输出,查看是否会出现崩溃,无响应等问题,以此监控App稳定性。
▶▶▶ 自动遍历
APP运行过程中,通过Android SDK获取APP当前页面上所有的可点击元素,依次按照策略(深度遍历算法或者广度遍历算法)点击每个可点击元素,并记录新页面。通过算法对元素和新页面进行记录并去重。当前页面遍历完毕后,重复之前逻辑,依次遍历记录的新页面。
自动化遍历工具为在非人工干预的情况下,通过按指定级别,依次点击APP上所有可点击的元素,并记录点击过程中的崩溃、错误、黑白屏、异常日志等数据。
▶▶▶ 自动化测试工具
APP运行期间,通过命令和内嵌SDK方式获取APP的资源消耗信息。
APP性能测试工具主要为了检测应用在执行期间的性能消耗,包括CPU、内存、耗电量、流量、启动速度、跳转速度等,保证APP在重大功能发布以及版本迭代升级中,不影响用户体验。
▶▶▶ 云设备管理
云设备管理,就是对手机进行集中式管理,通过Android SDK提供的命令行工具,iOS端利用Facebook的 WDA,通过Server-Client架构(C/S)的消息事件流的通信。进而实现从web端访问云端手机设备,以达到设备资源利用率最大化。
1)设备不足,显得工具华而不实,之所以作为一个平台,也具有集装箱原理,需要有足够的设备,一般的公司设备都是比较少或者“刚刚够用”,这个时候建设一个云测平台就会影响整个效率。
2)效率问题,云设备管理,在测试过程中,需要频繁上传、下载、安装测试包,由于网络因素,导致测试过程比在本地测试需要的时间更长。
3)稳定性,云设备平台遇到最大的一个问题,就是长时间使用会导致莫名其妙的链接中断,导致维护成本过高。
4)兼容性,在新加入设备时,需要对各种接入工具进行设配,工作量对于一个普通的业务团队来说是巨大的。
业务与系统的傲慢与偏见
project X soccer构建项目管理思维互联网财富管理平台应该怎么做?(上篇)
互联网财富管理平台应该怎么做?(下篇)
关于机器学习全流程溯源管理的思考
AutoML系列 | 01-自动化机器学习技术原理
保护你的钱袋子!京东数科是如何用AI反欺诈的?
关注技术说,我们只凭技术说话!
点在看会少个bug哦👇