源宝导读:面向平台级功能做UI自动化测试,与其他一般的业务测试不同,场景覆盖的要求更高更复杂。本文将介绍如何通过高度定制的UI测试框架解决平台UI自动化的难点问题。
一、背景
为什么我们有RDC有云测, 还需要自己搭框架写ui自动化?1.1 首先,基于平台的测试需求,不同于ERP,它的测试要满足哪些新的特性呢?如下:- 跨子系统。基于真实不同erp子系统业务场景去验证;
- 一套脚本同时被多套环境执行使用。需验证多种部署方式下的环境都ok;
- 使用不同浏览器,不仅需要在chrome浏览器下验证,对ie浏览器的兼容性也有要求;
1.2 框架写用例,灵活度更高,很多自定义页面很好实现二、 整体框架介绍
提供模拟点击,输入等基本操作的测试工具,是本框架的核心之一。 TestNG就是另一个核心。它作为整个测试层面的基本骨架:b、xml中设置本次要执行的分组和用例 (执行用例文件中符合分组条件的用例)Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案例的可读性。它使得整个框架有了层次感:2.3.1 Page Object的主要思想就是将ui按照页面模块化,方便我们查找吗,更新和维护 。这样做的好处:- 提高测试用例的可维护性,特别是针对 UI 频繁变化的项目;
2.3.2 PageFactory是对PageObject模式的一种补充。将元素‘打标签’,开箱即用。在初始化页面对象的时候,定位到元素信息,在页面方法中可直接使用,无需重新查找定位为了方便问题定位,我们给用例的关键步骤添加说明到报告中。2.4.1 底层封装,这里作为底座公共方法,添加了步骤说明,就会在每一个调用的地方生效2.4.2 逻辑层。也就是我们的片段组合层,这里需要根据实际的操作在写用例的时候按实际情况添加说明
三、 UI自动化痛点处理
比如,新增认购后,要过好久数据才会刷出来,到底等多久了,很受网络环境的影响,使用WebDriverWait的等待会存在不稳定的情况,有时候会卡死,这里直接等待加载图标消失,再进行下一步,大大的提升了稳定性。这里存在普通列表和树列表,我们在断言的时候,都是读取页面数据存放到List<HashMap<>>结构中。普通列表直接读取对比就可以了,但是树列表,如果单纯的读取,没有办法识别树的层级结构关系。这里是做了特殊处理,如果是树列表,根据其html属性规律,正确的给每一行添加id和parentId属性值, 用来确认层级结构关系。这样树列表给每一行存储了id,parentId后,他们它的断言对比就跟普通列表变成一样的了,当然,我们在准备预期值的时候,树列表的预期值也需要加id,parentid这两个属性值列。
四、 执行设置&持续集成
4.1 最终代码将拉到服务器,在服务器中执行,执行参数如:执行环境url, 浏览器等信息在config.properties文件中修改。但是这些配置文件,根据不同的场景可能修改比较频繁,每次通过代码去修改代价太大,这里,我们使用ant去处理,通过ant命令行,传入参数反向修改我们的config文件。
4.2 Jenkins中有ant插件,能够很方便的去配置命令行参数控制执行。4.3 执行是使用的selenoid方式,在服务器docker中起好对应的容器:selenoid, selenoid-ui. 其中selenoid是给用例执行创建执行环境节点,selenoid-ui让我们可以在本地通过访问该服务实时查看用例执行影像 通过jenkins的插件HTML Report配置执行报告总结&展望:
本框架可扩展性比较强,可根据产品特性加以修改。但是一个产品还是需要一个完成的测试报告,后期逐步推动公司主流测试工具能够接入各种类型的专项测试脚本程序,整合完整的报告,展现一个全局的质量状况,更好更准确的分析痛点问题,优化产品质量。作者简介
程同学: 天际自动化测试专家,目前负责天际平台相关测试工作。更多明源云·天际开放平台场景案例与开发小知识,可以关注明源云天际开发者社区公众号: