1、什么是po模型?文章源自玩技e族-https://www.playezu.com/172111.html
所谓po就是指page object,可以理解为把每一个页面当成一个,然后给这些页面写一个类,完成主要的元素定位和业务操作。文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
因此它的设计原则包括如下几点:文章源自玩技e族-https://www.playezu.com/172111.html
①对每一个页面进行抽象文章源自玩技e族-https://www.playezu.com/172111.html
②页面中没有繁琐的继承关系文章源自玩技e族-https://www.playezu.com/172111.html
③页面中只需涉及到主要业务元素文章源自玩技e族-https://www.playezu.com/172111.html
④将页面划分功能并将其在page中实现文章源自玩技e族-https://www.playezu.com/172111.html
根据上述设计原则,我们便可以对代码进行分层,对定位、page层、handle层以及business层进行封装,从而更好地管理测试代码。具体结构如下图:文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
2、为什么使用po模型?文章源自玩技e族-https://www.playezu.com/172111.html
在上述概念中,我们知晓了po模型的设计原则能让我们更好管理测试代码,那么它具体的优势是什么,能从什么方面提高我们的效率呢?话不多说,我们先上图。文章源自玩技e族-https://www.playezu.com/172111.html
一个简单的登录操作,我们一开始可能会这样写代码:文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
从这段代码中我们只需要在每一行代码里对元素进行定位,然后进行键盘输入或鼠标动作即可。这样看起来代码维护并不难。但是如果随着时间迁移,脚本和页面变得越来越多时,如果我们想对某个元素或者某个操作的值进行更改就得十分困难,代码可维护性很低。文章源自玩技e族-https://www.playezu.com/172111.html
然而在使用了po模型后,代码一下子就变得整齐清晰起来:文章源自玩技e族-https://www.playezu.com/172111.html
元素层:文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
逻辑层:文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
业务层:文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
如下图,大多数的登录页面元素包含了用账号框、密码框、登录按钮、注册按钮、忘记密码按钮和记住账号按钮等几个主要功能元素。因此,对于登录页面来说,元素层基本上无需太大改动,就可以复用在多个app测试中。文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
同样的,对于这些元素的操作也是一样的,账号框和密码框是输入,登录、注册、忘记密码、记住账号按钮是操作。因此,逻辑层我们也无需改动便可复用。我们只需要修改业务层的输入值便可实现多用例、多app测试覆盖,这样看来效率是不是提高了不少呢?文章源自玩技e族-https://www.playezu.com/172111.html
综上,我们可以总结出po模型的三大优点:文章源自玩技e族-https://www.playezu.com/172111.html
- 提高代码可维护性
po模型为我们提供了一种业务流程与页面元素操作分离的模式,这使得测试代码更加清晰整洁。特别是针对ui频繁变化的,代码的可维护性得到了提升。文章源自玩技e族-https://www.playezu.com/172111.html
- 提高代码可读性
po模型对代码进行分层,提高了代码间的可读性。此外也会集中管理一个页面内的公共方法,便于测试用例的编写,从而提高测试用例的可读性。文章源自玩技e族-https://www.playezu.com/172111.html
- 提高代码复用性
在po模型里,页面和测试用例之间也是相互分离的,这提高了代码的复用性,使得我们集中管理元素,便于应对元素的变化而减少代码重复。文章源自玩技e族-https://www.playezu.com/172111.html
3、po模型的——数据文章源自玩技e族-https://www.playezu.com/172111.html
在使用po模型前,我们的数据都是在代码内被固定写死的,这使得代码的可维护性很差。数据测试框架则可以帮助我们更好地po模型,那数据又是什么呢?文章源自玩技e族-https://www.playezu.com/172111.html
数据其实就是一种通过改变数据从而驱动自动化测试执行,最终引起测试结果改变的一种驱动模型。装载数据的方式有多种,可以是列表、字典或者是外部文件,无论以何种方式装载数据,它们的目的只有一个——实现数据和脚本间的分离。文章源自玩技e族-https://www.playezu.com/172111.html
实施数据驱动的步骤主要分为以下几点:文章源自玩技e族-https://www.playezu.com/172111.html
①编写测试脚本,脚本需要支持从程序、文件或者数据库读入测试数据文章源自玩技e族-https://www.playezu.com/172111.html
②将测试脚本使用的测试数据存入程序、文件或者数据库等外部介质中文章源自玩技e族-https://www.playezu.com/172111.html
③运行脚本过程中,循环调用存储在外部介质中的测试数据文章源自玩技e族-https://www.playezu.com/172111.html
④验证所有的测试结果是否符合预期结果文章源自玩技e族-https://www.playezu.com/172111.html
举个简单的例子,还是最常见的登录操作。在测试时,除了测试登陆成功的场景,我们往往也需要测到各种登录异常的场景。文章源自玩技e族-https://www.playezu.com/172111.html
文章源自玩技e族-https://www.playezu.com/172111.html
如果数据与脚本不分离,那么我们就要编写6条自动化测试脚本。然而这些脚本的操作都是一样的,只是输入的数据不一样罢了。这时候,数据分离就起到了很大作用。我们完全可以把数据存储在一个程序对象、文件或者是数据库等外部介质中,通过循环读取其中的数据从而实现一条脚本执行多条数据。这样的操作,不仅能使得逻辑清晰,还使得代码更加清晰整洁,方便后期维护。文章源自玩技e族-https://www.playezu.com/172111.html
总结文章源自玩技e族-https://www.playezu.com/172111.html
以上便是对po模型从概念、优势、优化等方面进行的一些简要阐述,具体的当然是要根据业务场景来进行发挥。po模型是一种被自动化测试领域所最为公认的设计模式之一,实现方法也较简单,但能让你的自动化测试变得更加优雅。文章源自玩技e族-https://www.playezu.com/172111.html
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。
评论