自动化测试在软件测试项目团队中发挥着重要的作用,同时合理地开展自动化测试,可以有效降低错误修复成本,提高工作效率。
下面就以web自动化测试为例来说明POM模式:python+Selenium+pytest框架下,完成自动化测试用例的编写,管理,运行和出报告,似乎是一项非常简单的工作过程,随在项目进展,特别是迭代频繁的敏捷项目研发方式下,有些自动化测试人员实现的那些低质量测试脚本往往会引发后期高昂的代码维护成本,随着时间的推移所谓的自动化测试变得好像忘了初衷了。
POM模式中解决测试脚本质量低下的一种很实用的方法。下面我来向大家介绍一下POM分离模式的思维:
pom分离:
POM分离 page- object-module--是一种思维
采用POM目的:为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大
POM思路:把页面元素和业务逻辑和测试脚本分离开到两个不同的类文件。class A只写页面元素定位,和业务逻辑代码操作的封装,class B只写测试脚本,
POM主要有以下优点:
1.把web ui对象仓库从测试脚本分离,业务代码和测试脚本分离。
2.每一个页面对应一个页面类,页面的元素写到这个页面类中。
3.页面类主要包括该页面的元素定位,和和这些元素相关的业务操作代码封装的方法。
4.代码复用,从而减少测试脚本代码量。
5.层次清晰,同时支持多个编写自动化脚本开发,例如每个人写哪几个页面,不影响他人。
6.建议页面类和业务逻辑方法都给一个有意义的名称,方便他人快速编写脚本和维护脚本。
实例如下:
1.测试脚本
2.业务逻辑
3.界面元素
4.再次封装
5.使用最新封装内容
都说良好的开端是成功的一半,自动化测试框架的落地也是如此,在测试框架实现之前,我们需要全方位考滤后才能设计出面对避无可避的UI元素变更的好的框架。有时候我们第一个想到的是如何将那些变更频率不高的功能模块实现自动化,而对那些变更频率高的功能模块有什么方式能够降低我们未来对于代码调整带来的高昂成本呢?要做到“子落而满盘活”,而不是“牵一发而动全身”。我们是否能对变更进行限制,只动一个地方,并且让每个与之相关的测试脚本都能使用它?答案一定是完全一致肯定的-------POM模式可以帮我们实现。
如果该web页面元素发生了变化,我们只需要在其对应的类文件中进行修改就可以了,而不必在多个不同的脚本去搜索查找并一一更新。这种方法就是页面对象模型(POM),它有助于提高代码的可读性、可维护性和可重用性。