摘要:三思而后行自动化测试最终目的是啥投入产出比的最佳平衡点在哪很多实施者在搭建自动化框架前往往缺乏思考,为了自动化而自动化。
三思而后行
UI自动化测试最终目的是啥?投入产出比的最佳平衡点在哪?很多实施者在搭建UI自动化框架前往往缺乏思考,为了自动化而自动化。三思而后行,方向决定成败。由于项目接口(API and Service)自动化代码行覆盖率已经达到70%,基于当前自动化人力和项目质量目标,我们的自动化最终目的是覆盖上线回归的UI CheckPoint,为了降低后期维护成本,CheckPoint偏重于入口展示和用户事件响应逻辑。围绕目标,在搭建UI自动化框架的过程中探索了一些优化点,来分享一下
最佳实践资源代码分离
XML与Java Object建议映射关系,一个页面对应一个XML,页面、控件信息和测试数据统一管理维护,如图:
测试用例执行之前,会将XML转化成Java Object,且会实例化一些操作类的方法,如图:
通过Override可以满足同一事件不同场景下的使用,也便于日志格式的一致性,提高脚本失败原因分析效率
自动抓取控件生成XML
既然采用XML管理Page和Element数据,那么生成XML这件事就可以自动化了,不过困难在于如何定义控件XPath生成规则,需要把手动写控件XPath的思考过程,抽象化,规则化。需要通过两方面来完成:
有事件响应的控件,如button、a、input。而这些控件具备通用属性,且在一个页面大多时候具备唯一性,如:text、value、herf、placeholder,所以优先生成这个规则的XPath:
业务通用组件一般基于div的形式,获取class生成唯一识别的XPath:
操作步骤使用接口请求代替UI操作
这一点套用在iOS、Android、Web、H5、小程序几乎所有前端UI自动化上,都是适用的。因为接口请求的稳定性和维护成本永远低于UI操作。准确来说,与CheckPoint无直接关联的UI操作,如数据的创建和删除。这里是post请求的方法封装:
命令模式进行测试后的数据清理
命令模式是Java种开发设计模型的一种,在这里具体是这样运用的:
1、每一项测试数据的清理,都是一个任务类,所有的任务类都继承了一个抽象类,在action方法里定义了数据清理的接口请求。
2、在每次创建数据后,实例化任务类,然后添加到队列里
3、所有测试用例执行完成后,afterTest里遍历队列依次数据清理
采用这个方式的优势:
1、自动化测试任务中途异常退出结束了,也可以清理掉已创建的数据
2、支持多份的同样数据清理,数据之间不受影响
3、无需用完立刻删除,统一清理,且支持并发,高效
通过Listener收集数据生成测试报告
日志统一,操作事件和检查点清晰可见,加上失败截图保存,一旦出现失败可以快速定位问题,大大降低后期维护成本
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72142.html
摘要:本文简单介绍是什么,为什么用,怎么用。技术栈是什么是一个开发平台,用于生成,开发,部署和。实现需定制化源码。 本文简单介绍Jhipster是什么,为什么用Jhipster,怎么用Jhipster。 WHAT - 技术栈 JHipster是什么 JHipster是一个开发平台,用于生成,开发,部署Spring Boot + Angular/React Web Application和Sp...
摘要:介绍最近开始刷一些书和题此系列是介绍在读最佳实践的一些收获和体会。先修改诸如命名,格式等不涉及具体逻辑的内容重构过程中要持续测试,在多个浏览器测试,确保重构的部分功能正确。 介绍 最近开始刷一些书和题,此系列是介绍在读Web最佳实践的一些收获和体会。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...
摘要:介绍最近开始刷一些书和题此系列是介绍在读最佳实践的一些收获和体会。先修改诸如命名,格式等不涉及具体逻辑的内容重构过程中要持续测试,在多个浏览器测试,确保重构的部分功能正确。 介绍 最近开始刷一些书和题,此系列是介绍在读Web最佳实践的一些收获和体会。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...
摘要:介绍最近开始刷一些书和题此系列是介绍在读最佳实践的一些收获和体会。先修改诸如命名,格式等不涉及具体逻辑的内容重构过程中要持续测试,在多个浏览器测试,确保重构的部分功能正确。 介绍 最近开始刷一些书和题,此系列是介绍在读Web最佳实践的一些收获和体会。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...
摘要:为什么说最佳实践是呢简单来说,就是这类预处理器在提供一定的抽象能力的同时,也不会破坏自身的特性。就语义化这件事情而言,如果你的是基于标准来编写的,意味着你的页面具备更多的可能性。 原文:https://github.com/kuitos/kuitos.github.io/issues/33 15年年末写了篇关于BEM方法论(实践上内容并不是原BEM)的文章,文末给自己挖了个坑说要聊聊w...
阅读 2832·2021-10-14 09:43
阅读 1603·2021-09-29 09:34
阅读 1725·2021-07-28 00:16
阅读 2942·2019-08-30 15:53
阅读 2879·2019-08-30 13:59
阅读 2908·2019-08-30 13:57
阅读 1063·2019-08-26 13:38
阅读 1858·2019-08-26 13:25