UI自动化测试长期面临着”用例脚本编写难度大“,”用例运行稳定性差“,”用例可阅读性与可维护性差“等众多问题。UI自动化测试一直以来收益较低。成方金科作为金融科技类公司,公司有一套自研开发框架,各系统有着相对统一的技术栈。基于公司特性,我们研发的UI自动化测试框架(CFUI)提供了数倍于Selenium的测试用例编写效率,在本次分享中,我们将会介绍成方金科在CFUI建设过程中的一些实用的设计思路和开发实践,并通过具体实例阐述如何通过这些设计思路解决了“脚本编写难度大”,“运行稳定性差”,“用例可阅读性与可维护性差”这些长期困扰功能测试人员的问题。
1. 界面自动化测试目前存在的问题
2. 我们的终极目标 - 像写文字性功能测试用例那样写自动化测试用例
3. 成方金科界面自动化测试框架CFUI应用实例
4. 成方金科界面自动化测试框架CFUI设计思路
a. 设计思路 - 简化组件操作步骤,大幅提升用例编写效率
测试用例脚本编写过程中,elementUI等前端组件的操作通常需要好几个步骤来完成(譬如时间选择控件需要依次点击选择相应年,月,日以及相应的翻页),增加了脚本编写难度。CFUI对elementUI的前端组件进行了封装,基本做到了一行代码即可完成各种组件操作,大幅减少了脚本行数,提升了用例编写效率。为了方便用户记忆,减少框架API数量,对于文本框,下拉,日期控件,时间控件,级联选择器等多个组件的操作提供了统一API。
b. 设计思路 - 优先使用基于文本的查找方式,提供符合直觉的用例编写体验
提供符合直觉的用例编写体验,像写文字性功能测试用例那样写自动化测试用例一直是我们的追求。CFUI提供了基于文本内容进行元素定位,并将其作为推荐首选定位方式。基于文本内容的查找定位方式,不仅可以让测试人员无需打开f12,即可编写测试用例,同时做到了一定程度的测试用例与项目具体实现方式的解耦(css,xpath等定位方式依赖开发具体实现方式,而文本只依赖于需求)。针对页面上可能存在多个相同文本元素的场景,CFUI提供了上下文设置,解决了元素定位时的混淆问题。同时基于文本的定位方式,极大地增加了代码的可阅读性。
c. 设计思路 - 不一样的方法层面的数据驱动模式,减少测试数据冗余
UI自动化测试用例通常需要横跨多个页面,进行多个操作步骤(譬如先查询再编辑)。两个不同的测试用例,可能存在前一个步骤(譬如查询)的测试数据是一样的,按照传统数据驱动模式,绑定在测试用例上面的测试数据会存在一定的冗余。CFUI创建了一种在Page Object Model模型的基础上,将测试数据与页面方法进行绑定的MethodData数据驱动模式,很好地减少了测试数据冗余。
d. 设计思路 - 为元素自动注入id,提供多样元素定位查找方式
页面元素定位是UI自动化测试过程中的一个关键步骤。在元素缺乏css,id,name等唯一性标识时,缺乏一种稳定的定位方式。我们通过编辑器插件,在编辑器层面自动为元素添加了唯一性标识id,方便了元素的定位查找。同时相较于原生Selenium,CFUI还提供了通过placeholder,label,role定位元素等多种方式。
5. 自动化录制脚本实践
听众可以从演讲收获一些实用的、成本较小但有效的UI自动化框架设计思路。根据自己公司具体实际情况,将这些设计思路应用在自身框架设计中,可以提升自动化测试脚本编写效率。