zoukankan      html  css  js  c++  java
  • 为什么需要Page Object?

    为什么需要Page Object?

    Page Object(PO)是界面自动化验收测试中的一个常见模式,要和@槽神刘叫兽探讨一下PO的必要性,顾写这篇小文表达一下我的观点。

    PO的主要价值体现在对界面交互细节的封装,这样可以使测试案例可以更关注与业务而非界面细节,提高测试案例的可读性,这其实都很有利Behavior Driven Development(BDD),Acceptance Test Driven Development(ATDD)或Specification By Example(SbE)的实施。

    举个小例子,例如,我有个身份信息页面,需要输入姓名,年龄,性别,身份证号等信息,如果不用PO,那么我的测试用例可能是这样的(java+selenium):
     driver.findElement(By.name("name_field")).sendKeys("God");
     driver.findElement(By.name("age_field")).sendKeys("99999");
     driver.findElement(By.name("sex_field")).sendKeys("unknown");
     driver.findElement(By.name("social_id_field")).sendKeys("invalid");

    可以看到,上述语句除了业务之外,包含许多实现层面的噪音,即便使用BrowserBot模式对这些噪音进行分装,但是测试案例也会包含四个步骤:
    MySendKeyByName("name_field","God");
    MySendKeyByName("age_field","99999");
    MySendKeyByName("sex_field","Unknown");
    MySendKeyByName("social_id_field","invalid");

    噪音经过使用BrowserBot模式大为降低,但是,还是有一些,如界面id等。如果使用PO模式,测试案例可以得到进一步简化,
    IDPage.InputBasiicInfo(“God”,”99999”,”Unknown”,”invalid”);

    这其实就形成了自己的针对特定应用的测试DSL,封装了大量界面交互细节,提升测试案例的可读性。

    使用PO之后的另外一个大好处,就是有助于降低冗余,如果我需要在10个案例里面都输入身份信息,那么我不需要将这个4个步骤重复写10遍,而是只需要调用InputBasicInfo十次即可,这将极大降低未来的案例维护成本。

    因此,PO的威力在一个测试人员自己写主场景测试案例时是不容易体会到的,因为,他不需要和开发、业务交流案例,他也不会写很多重复动作。但是,我相信,当他真正开始尝试ATDD,BDD或SbE时,当他开始写一些重要的异常分支流程时,当他开始为新需求频繁维护修改案例时,我想他会更意识到PO的作用。

    最后一句,PO不是万灵药,也不是唯一真理,提高测试案例可读性,避免案例步骤冗余才是终极目标。
     
    欢迎大家加入分层自动化测试QQ群20442181一起讨论
  • 相关阅读:
    一个完整的Oracle建表的例子
    【转】oracle 体系结构
    JMeter-Window10系统下设置环境变量
    JMeter 3.0 POST Body Data 中文乱码问题
    JMeter接口测试报错,反馈和postman不一样(二)
    JMeter参数文件的相对路径
    JMeter正则表达式提取器说明
    JMeter接口测试报错,反馈和postman不一样(一)
    协程实现多边同时交互原理
    python 多线程中子线程和主线程相互通信
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3209240.html
Copyright © 2011-2022 走看看