自动化测试现状与挑战
随着人们对生活品质要求的不断提升,市场上产品更新换代的频率也随之增加,这对于产品开发者来说是不小的挑战。而我们探索自动化测试的意义,就是为了帮助业务以更好的品质,更快的速度来占领市场。
相比于人工测试,自动化测试有更高的测试覆盖率,在面对 TOP300 机型与 TOP500 机型时的测试效率也更高。同时,自动化测试能配合持续集成的工具,做到快速响应的版本,达到一个版本就可以进行一次回归测试,甚至一个代码提交就可以进行一次回归测试的效果。并且自动化测试还可以把多项专项测试也融合在其中。
近年来在腾讯内部,自动化测试的需求也在持续上升。从 2019 年到 2020 年的数据来看,腾讯的头部项目自动化测试用例数量提升了 50%,自动化测试的频度提高了 200%。本文将从多个角度全面剖析,腾讯内部是如何进行自动化测试的探索与建设的。
智能自动化测试的探索
腾讯内部的产品数量多,覆盖类型广,其对于接入方式、测试场景和测试需求是有差异的。一个优秀的自动化测试平台,需要帮助业务解决以下问题:
智能自动化测试
为了更好的保障用户的产品质量,给予用户更好的平台使用体验。我们一直在对自动化测试技术进行研究、探索与思考,不断的追求技术进步。
对于低代码工具与 AI 探索的领域,然后我们研发了用于脚本录制的新一代低代码自动化工具——WeAutomator。这款低代码工具包含了多种的脚本录制功能,包括最基础的通过图像、空间和坐标的综合录制,也可以提供根据图片的边缘算法来进行的智能录制。并且这款工具支持场景与代码模式,支持 Android 与 iOS。
案例分享
王者荣耀皮肤自动化测试
左侧画面是用户真实的游戏画面,右侧画面是王者荣耀为了该屏幕自动化测试提供的一个专用测试地图。其把时间改成一个逻辑的称号,同时去除了地图的噪声,将底面变成统一的蓝色,并对敌方不需要进行测试的英雄、血量、英雄名称等进行了隐藏。
在整个自动化测试的过程中,系统会进行录制,录制完成后会对每一个视频的每一帧画面通过 OCR 识别进行提取,然后将所有的图片帧都保存下来。不同迭代版本之间的图片,会通过 ORB 的特征匹配和图片的精准对比,利用图片比对库来比对,从而筛选出具有差异的图片进行标注,然后判断是否出现了 UI 异常。整个自动化测试的 bug 发现能力非常强,相当于人工能力的 5 倍。同时,因为王者荣耀组件资源较多,进行一次自动化测试相较于人工测试可以节约 160 小时。
微信客户端自动化测试案例
微信相关的端到端的 UI 自动化测试主要涉及:微信基础客户端,支付 UAT,小程序基础,搜索等业务测试。一般 UI 自动化测试需要历经四个步骤:选择 UI 驱动工具、选择用例组织工具,编写用例和用例部署。微信客户端项目组根据自身业务情况,在用例部署时,选用了 3 个时机介入自动化测试。
1. 合入检查
开发每次提交 MR 的时候会检查编译,启动问题。这个时机主要检查微信启动/发消息是否成功,用 3 条用例 + 登陆来进行测试。
2. 红版测试
在此版本上,需要保证应用基础功能是稳定可用的,允许新特性或者部分场景带 bug。在编译出包之后介入一个精选用例(大概 40 条用例)进行测试,验证基础功能是否执行成功,主要为检测出是否有一些明显影响体验的问题 。
3. P0 测试
测试通过的需求会合入到发布分支等待发布,合入后会触发编包。在编包后介入执行 P0 自动化测试(大概 400 条用例),测试可以保证在 26min 左右运行完。
微信接入 WeTest 的自动化测试后,可把用例分发,用例结果存储,测试报告等功能交给 WeTest,自身则有更多的精力聚焦业务本身测试,WeTest 提供了高稳定性的设备、自动化设备运维监控,测试稳定性达 99.68%,测试效率提升 40%,让用户无需担忧设备问题,更加高效便捷地检验产品质量。
探索成果
1. 设备维度:设备稳定性高,在月均测试量 100w+ 台次的情况下设备成功率与测试任务执行率高达到 99.9%
2. 用例纬度:用例覆盖率高,通过用例动态分发,缩短测试时长,支持灵活的用例分发模式
3. 效率维度:资源更多,速度更快,测试提效 40%