• 前言:自动化框架的设计模式


    1、UI自动化框架的设计模式

    自动化测试框架有很多种,常见的自动化框架分类如下:

    image.png

    在使用上面的自动化框架时,通常会结合使用分层思想,也就是一些自动化框架设计模式,今天重点分享一下UI自动化框架设计使用比较多的一种设计模式:Page Object设计模式。

    一、什么是PO模式?

    PO模式,全称为Page Object Model ,简称POM,是页面对象模式。
    对页面进行抽象或建模的过程,把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法。把页面的元素设计为页面对象的属性,把页面上的操作(如点击、输入等)设计为页面对象的行为。
    在自动化测试当中,主要用来实现对页面操作和测试逻辑的一个分离,目的是达到业务和实现分开,使自动化测试脚本具备更高的可维护性。

    二、PO模式的做法:

    • 以页面为单位独立建模
    • 隐藏实现细节
    • 本质是面向接口编程

    三、PO模式的优点:

    • 减少重复find click样板代码
    • 提高易读性
    • 页面修改不影响测试用例

    四、PO模式六大设计原则:

    1. 用公共方法代表UI所提供的功能,比如把登录封装成一个 login 方法,把搜索方法封装成一个设施方法,把注册操作封装成一个 register 的方法
    2. 方法应该返回其他的Page Object或者返回用于断言的数据
    3. 同样的行为不同的结果可以建模为不同的方法,比如说登录成功有跳转,登录失败有报错,还有一种登陆授权的状况,那么可以封装成三个单独的方法:login success、login error、login invalid
    4. 不在方法内加断言,做到页面逻辑和测试逻辑的分离
    5. 不暴露页面的内部元素给外部,比如一个HTML的页面还有一个页面的上下结构
    6. 不需要建模UI内的所有元素,用到什么逻辑就封装什么

    五、UI自动化测试用例如何设计

    UI自动化测试用例是从手工测试用例中提取出来的,跟手工测试用例相比,自动化测试用例更加注重用例的严谨性,选择用例的时候遵循以下原则:

    • 优先选取覆盖产品核心功能的用例;
    • 从成本考量,不要选择流程过于复杂的用例;
    • 选取的用例可以是重复执行,繁琐的部分,比如字段验证、提示信息验证;
    • 优先实现正向的测试用例,反向用例一般情况复杂、数量多;

    六、怎么提高UI自动化脚本的稳定性

    • 尽量用相对路径的xpath表达式
    • 查找元素优先用显示等待
    • 用例与用例之间尽量避免产生依赖,用例可以独立执行
    • 用例执行结束后对测试场景进行还原,避免影响其他用例的执行
    • 脚本执行失败后加入重试机制,提升用例的稳定性
    • 尽量保证单独的测试环境,避免其他的测试同步进行

    2、数据驱动

    1、概念

    数据驱动:是以数据来驱动整个测试用例的执行,也就是测试数据决定测试结果。

    2、特点

    • 数据驱动本身不是一个工业级标准的概念,因此在不同的公司都会有不同的解释
    • 可以把数据驱动理解为一种模式或者一种思想
    • 数据驱动技术可以将用户把关注点放在对测试数据的构建和维护上,而不是直接维护脚本,可以利用同样的过程对不同的数据输入进行测试
    • 数据驱动的实现要依赖参数化的技术

    3、传入数据的方式

    • 直接定义在测试脚本中(简单直观、但数据和代码未实现分离,不方便后期维护)
    • 从文件中读取数据,如JSON、excel、xml、txt等格式文件(重点)
    • 从数据库中读取数据
    • 直接调用接口获取数据源
    • 本地封装一些生成数据的方法

    4、传入数据的操作(以JSON为例)

    4.1 JSON介绍

    JSON的全称是”JavaScript Object Notation”,是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。

    4.2 JSON特点

    • JSON是纯文本
    • JSON具有良好的自我描述性,便于阅读和编写
    • JSON具有清晰的层级结构
    • 有效地提升网络传输效率

    4.3 JSON语法规则

    • 大括号保存对象
    • 中括号保存数组
    • 对象数组可以相互嵌套
    • 数据采用键值对表示
    • 多个数据由逗号分隔

    4.4 JSON的值

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在中括号中)
    • 对象(在大括号中)
    • null

    3、基于PO和单例设计模式用python+selenium进行ui自动化框架设计

    po设计

    image.png

    关键字驱动
    image.png
    基于PO和单例设计模式用python+selenium进行ui自动化框架设计【多测师_王sir】_多测师_王sir的技术博客_51CTO博客

    接口自动化框架模型设计 - 爱好者zz - 博客园

  • 相关阅读:
    Python学习记录 类相关
    Prometheus的部署
    linux进程管理,一个进程的一生(喂饭级教学)
    给女生说一些关于软件测试职场的一些真实的建议~
    「网络编程」数据链路层协议_ 以太网协议学习
    变更审核时我们审什么
    uniapp+node.js前后端做帖子模块:帖子的点赞/取消点赞(社区管理平台的小程序)
    Springboot毕设项目个性化健康饮食推荐平台79no0(java+VUE+Mybatis+Maven+Mysql)
    鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
    FFmpeg源代码简单分析-编码-av_write_frame()
  • 原文地址:https://blog.csdn.net/Leoon123/article/details/133955354