UI自动化页面对象(Page Object)模型
PO模型简介:
1、面对象(Page Object)模型是一种设计模式,用来管理UI测试中web元素对象
2、通常在UI自动化测试脚本中吧一个页面封装成一个对应的Page class
3、每一个Page class中有对该web页面元素定位于操作的方法
4、通常Page class的方法命名最好根据业务场景进行设计,如:“XXXPage.YYYComponent.ZZZOperation”。
传统的UI自动化脚本存在的问题:
1、脚本逻辑不清晰,既有页面元素的查找,也有元素的操作
2、自动化测试脚本的可读性及维护性比较差
3、测试步骤中存在大量的测试数据重复出现进一步加大脚本的维护成本
页面对象(Page Object)模型的优点:
1、PO提供了一种业务流程与页面元素操作分离的模式,解决脚本可读性差的问题,使得脚本的逻辑清晰
2、页面对象与用例分离,使得我们更好的复用对象,解决脚本中大量测试数据重复出现的问题
3、可复用的页面方法代码会变得更加优化
页面对象(Page Object)模型设计理念:
页面对象模型的核心理念是,以页面(Web Page 或者 Native App Page)为单位来封装页面上的控件以及控件的部分操作。而测试用例,更确切地说是操作函数,基于页面封装对象来完成具体的界面操作,最典型的模式是“XXXPage.YYYComponent.ZZZOperation”。
脚本与测试数据分离思想:
传统UI自动化测试存在问题
1、传统UI自动化测试脚本直接将代码与测试数据硬编码在一起,测试脚本的可读性以及可维护性就十分差,当页面元素发生变化时,需要修改所有使用该元素的代码
2、直接硬编码脚本与测试数据导致脚本十分冗余,维护起来成本太高
测试数据和测试脚本分离
测试数据和测试脚本分离就是将测试脚本与测试数据分开存放,测试脚本通过一定的规则读取数据文件中的数据,并赋值给相应的变量,执行测试用例。
1、数据分离+数据驱动的能够解决大量重复脚本的问题,并且脚本的逻辑更加清晰
2、数据驱动测试数据文件中可以描述测试过程,使得测试用例的管理变动更加容易
3、数据驱动不仅可以在UI自动化测试中,也适用于接口、单元测试中 。