我们团队目前在测的Web页面类和App类系统很多,故在UI自动化平台构建中做了很多工作,但面临的问题有:
1. 测试框架不同,如何适配不同的测试框架?
2. 测试系统不断增多,如何适应不断增长的自动化测试需求,提高自动化测试速度?
3. 如何降低UI自动化上手难度,有效推进UI自动化测试推广应用进度?
4. 如果提高UI自动化案例稳定性、成功率?
本次分享将介绍我们团队在这几个方面的探索和当前取得的初步效果。
1. 背景介绍
我们团队目前在测的客户端系统很多,覆盖Web页面类和App类的系统。Web页面类包括ToB的差错、商户、运营平台等,App类的包括ToC的云闪付等。
起初,我们也因为UI类测试回归的一些痛点,在UI自动化进行了尝试。而随着业务系统不断变多,我们开始尝试构建自动化平台,这个过程中遇到了一些问题。
2. 问题解决
2.1 问题分析及解决: 测试框架不同,如何适配不同的测试框架?
因为测试系统很多,各个业务系统不尽相同,开展UI自动化过程中,也采用了不同的框架,如selenium、cypress、airtest等。
起初,我们的方案是针对每个框架构建一个平台,但这种方式实现的功能雷同重复,导致很多开发工作重复。
因此我们针对不同框架,进行了抽象,将 案例管理、案例调度运行、结果输出展示等内容进行了接口封装,这样后面再有新的框架,也可以通过少量开发,复用现有的功能,完成快速接入。同时对用户来说,也有统一个操作风格,更快的上手。
2.2 问题分析及解决:测试系统不断增多,如何适应不断增长的自动化测试需求,提高自动化测试速度?
随着开展UI自动化的系统越来越多,自动化任务对自动化测试资源的需求不断增加,出现了资源不足的情况。
为解决这个问题,我们的框架将测试运行分为两层:任务处理层和执行引擎层,由任务处理层实现服务注册发现,将任务进行拆解分发,实际由执行引擎层实施具体的执行。通过执行引擎层实现弹性扩容功能,同时实现并行执行的功能,从而提高自动化测试速度。
2.3 问题分析及解决:如何降低UI自动化上手难度,有效推进UI自动化测试推广应用进度?
我们在UI自动化测试推广推进过程中,遇到的最大的阻力就是UI自动化上手难度。
为降低UI自动化上手难度,我们做了如下一些优化:
2.3.1 优化框架功能:如对selenium进行封装,并结合cucumber框架,实现无编码配置案例
2.3.2 创建项目模板,给出常用操作的示例;用户可以一键构建UI测试项目;
2.3.3 梳理文档总结,输出平台使用、环境安装、常用接口、常见问题、最佳案例实践等内容;
2.3.4 构建辅助工具,开发chrome插件等工具,帮助控件定位、案例脚本编写等;
2.3.5 开展培训宣传。
2.4 问题分析及解决:如果提高UI自动化案例稳定性、成功率?
自动化案例的稳定性、成功率直接影响了案例维护的成本。
为提高案例稳定性和成功率,我们做了如下优化:
2.4.1 平台提供案例失败重试功能,避免因网络波动等偶发因素影响测试结果;
2.4.2 框架优化:
对selenium操作封装优化,添加控件自动等待等优化;
对airtest添加图像比对。
3. 总结
我们在UI自动化平台构建过程中,结合实际项目遇到的问题,进行了改进优化,最终实现了现有的平台功能。
现有平台支持selenium、Cypress、airtest等框架,支持windows、linux、macos等系统,支持chrome、edge、ie、android、iPhone等设备,已接入70+业务系统,累计10000+案例,平均每天所有系统累计运行150+h,平均成功率达90%。