理解Page Object

  有关Page Object文章很多,第一次认真的看待Page Object,从自己的角度解释对Page Object的理解。

  不断实践、总结和修改。


  Page Object,页面对象。 -- 我的理解就是页面元素的定位与操作。

  一种设计模式,实施selenium的最佳实践,体现了web应用与页面显示之间的关系。

  为什么需要Page Object,测试代码维护的需要:减少代码的编码量,减少代码的维护量,清晰而明确的业务测试流程。

  Page Obje实现了测试代码的分层:页面元素、元素操作 和 页面业务的分离。

  

  使用Selenium实现业务测试会遇到哪些对像?

    1.页面即Page,用来定位业务实现的位置;

    2.页面元素即element,用来定位业务操作的对像。

  基本的实现逻辑:基于某个页面,操作某个元素,实现某个特定的功能。

  Selenium如何实现

    1)get(url),定位某个页面

    2)findelement(by_XXX),定位某个元素 locator

    3)click/send/set......,操作元素、特定数据实现特定功能

    4)组合不同功能,实现某个特定的业务


  什么影响了测试代码的实现和维护:可能变化的内容。

  如何减少可变化内容对代码的影响:分离可变和不可变内容,独立维护可变代码,减少可变代码对于整体代码的影响。

  如何实现可变内容与不可变内容分离:参数化,分层调用。


  真正的业务实现过程中,我们会发现有这几点是可变的,也会经常变化的:

    1)页面访问地址(url)

    2)元素定位(locator)

    3)业务流程(process) --> 构成功能页面 --> test scenario

  那么就可以采用: 元素定位 --> 元素操作 --> 业务流程 进行分层,进一步细化,元素操作中的数据、异常处理、报告生成可以作为公共部分进行处理。

  即Page Object,元素层,操作层,业务层,公共层


  简单示例,登录

  Locator: UserID, Password, Login

  Operation: input(UserID), Input(Password), Click(Login Button)

  Process: login(input(UserID), Input(Password), Click(Login Button))

  Common: login url, driver, browser 

 ----------------------------------------------------------------------------------

  软件设计的三层架构:界面层/表示层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer),高内聚低耦合,减少层次间的连系,减少变化带来的系统性变化。 

  BDD,Behavior Driven Development,user story(角色+目标+操作) + view(condition+operation+feedback)

你可能感兴趣的:(测试与质量)