四种常用的自动化测试框架

2023-11-07

一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译文章,觉得很是不错,写了一点学习心得,有不正确之处,请指出。

中文原文地址:http://www.cnblogs.com/nckiki/articles/244202.html

英文原文地址:http://www.ibm.com/developerworks/rational/library/591.html

原文对自动化测试架构做了如下四种分类:

1.       数据驱动测试框架(The Data-Driven Testing Framework)

说明:

仅仅是将测试数据从测试脚本中分离出来,开始了非混沌状态的第一步,这也是所有测试架构中最简单的一种

 

优点:

至少测试数据可以单独维护了

 

缺点:

任何被测试程序的变更所导致的工作量是所有架构中最多的,因此维护成本非常高

 

2.       测试脚本模块化框架(The Test Script Modularity Framework)

   测试脚本模块化框架

 

说明:

l  箭头方向代表的是被调用和调用关系

l  测试脚本中包含了各功能点中涉及到的控件识别和业务逻辑操作,其中包含了外部测试数据的调用

l  测试脚本的维护由自动化测试开发工程师负责,要求必须懂自动化编程和业务逻辑

l  测试数据的维护由测试工程师负责

 

优点:

控件和业务逻辑一旦发生变化,要进行修改和维护的是底层的测试脚本(比无任何抽象封装的自动化测试程序稍好一些)

 

缺点:

l  几乎所有大的变更引起的工作量都由自动化测试开发工程师完成

l  控件识别和业务逻辑本身属于不同的领域,没有很好进行抽象封装

 

3.       测试库构架框架(The Test Library Architecture Framework)

    测试库构架框架

 

说明:

l  箭头方向代表的是被调用和调用关系

l  将所有的针对测试系统本身的控件识别和控件支持的操作封装在测试库中

l  测试脚本调用测试库的同时传递外部的测试数据

l  测试库的编写由自动化测试开发工程编写(可以不懂业务),负责控件的变更和维护

l  测试脚本的编写可由对业务比较掌握的自动化测试开发工程编写,负责业务逻辑的变更和维护

l  测试数据由测试工程师维护(可以不懂自动化开发)

优点:

l  被测试系统无论是哪层发生变化,只需要相应的人员进行变更维护即可

l  完成了控件识别操作和业务逻辑的抽象分离

缺点:
变更引起的工作量还是附加在自动化测试开发工程师身上

 

4.       关键字驱动或表驱动测试框架(The Keyword-Driven or Table-Driven Testing Framework)

说明:

 

l  说到关键字驱动,当然得说QTP。确实当对象库(很类似测试库架构中的测试库)添加完成后,测试case步骤的组织就相当于是在关键字试图中选择控件对象(Control),动作(Action),参数(Parameters)。

l  仔细想想,当QTP在完成对被测试程序的录制后,完成了对象库的记录,关键字驱动测试case的步骤设置,如果再在table中存放一些测试数据,在测试步骤中进行调用的话,似乎以上三种架构所涉及的内容都得到了很好的运用,但再仔细一想,就QTP录制的测试程序来讲,其实什么架构都没有做,因为录制下来的脚本的维护成本是非常高昂的,因为从测试数据的维护,对象库的维护,业务逻辑的维护等等都必须要求维护者懂的QTP的使用,而且是具备一定水平的。这违背了架构的本身理念。所以得基于QTP做更上层次的对象抽象,最终QTP仅仅是个识别对象和运行VBScript脚本的工具,这一层次的架构设计就体现在VBScript的脚本组织上了。

l  换个角度,框架到底用来做什么,最终的目的无非是将不同层次的对象和逻辑进行抽象和分离封装,从而使得被测试程序的变更所导致的测试脚本框架的变更维护工作量减少到最少,更进一步,如果不懂自动化编程的普通测试工程师能不需要了解测试工具和框架本身的知识就能维护控件对象和业务逻辑,这样就可以将自动化测试工程的工作量进行很好的分摊。具体实施就是将控件对象,动作,参数等等从框架或工具本身剥离出来放在普通Excel表格中,组织成如下形式:

 

Window

Control

Action

Arguments

Calculator

Menu

 

View, Standard

Calculator

Pushbutton

Click

1

Calculator

Pushbutton

Click

+

Calculator

Pushbutton

Click

3

Calculator

Pushbutton

Click

=

Calculator

 

Verify Result

4

Calculator

 

Clear

 

Calculator

Pushbutton

Click

6

Calculator

Pushbutton

Click

-

Calculator

Pushbutton

Click

3

Calculator

Pushbutton

Click

=

Calculator

 

Verify Result

3

框架本身所要做的就是识别Excel表格中的这些控件对象以及Action

注:以上表格中还可以将数据剥离出去,以单独的数据Excel表格进行维护

 

优点:

极大的减少了自动化开发工程师维护量,毕竟在测试团队中,自动化开发工程师占的比较少

普通测试工程师,可以很好的维护自身负责的模块中涉及的测试case和测试数据

 

缺点:

框架的抽象程度比较高,对自动化测试工程师的开发能力比较高

 

总结:个人认为以上的四种架构是存在递进关系的,至少前三个是肯定的,原文中最后总结的图认为还是需要多种框架特点组合在一起的,还是有很好的借鉴意义的,这里一并附上

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

四种常用的自动化测试框架 的相关文章

  • 双轮平衡车实现自平衡功能

    1 功能说明 在双轮小车上安装一个六轴陀螺仪传感器 本文示例将实现双轮小车自主平衡功能 2 电子硬件 在这个示例中 我们采用了以下硬件 请大家参考 主控板 Basra主控板 兼容Arduino Uno 扩展板 Bigfish2 1扩展板 传
  • 【Java】Java中的“引用类型”和C中的“指针”区别

    文章目录 前言 1 Java中 基本数据类型 和 引用数据类型 变量在内存分配时的不同 2 C中 指针 的特点 3 Java中 引用 的特点 4 Java的参数传递 5 参考 前言 在学习Java中变量的数据类型时 发现其分为2大类 基本数
  • spring加载流程之ConfigurationClassPostProcessor

    spring加载流程之ConfigurationClassPostProcessor ConfigurationClassPostProcessor postProcessBeanDefinitionRegistry processConf
  • FPGA面试真题解析

    FPGA面试真题解析 1 1 十进制46 25对应的二进制表达式为 硬件逻辑实习岗 A 101110 11 B 101101 01 C 101110 1 D 101110 01 解析 这个问题看上去很简单 那是因为我们平时可以打开电脑上的计
  • 若依-了解头像(文件)上传流程

    周知 本文主要记录本人关于自主学习若依框架的部分心得经验 必定有许多不足甚至理解有误的部分 如果对你有帮助我也不胜欢喜 如果发现有错误的地方也希望能够分享指出 一起加油 需求原因 客户内部系统 一般不对外开放 因此不适合将文件 如图片 存放
  • 常用的函数接口

    常用的函数接口 FunctionalInterface public interface Function
  • R语言 if else 语句

    R语言中if else语句的编写格式 因为R是解释语言 如果else单独起一行 无法解释执行 所以else不能单独一行 最好这样写 if a print hello else print Hi 转载于 https www cnblogs c
  • 基于vue+element-ui实现Cascader级联选择器+Table树形数据

    开发进度提前50 啊 真香 下面 看图说话 Table树形数据 Cascader级联选择器 功能实现 详细代码 Cascader级联选择器 options属性指定选项数组即可渲染出一个级联选择器 所以后端接口返回的数据结构要保持一一致性 这
  • 记一次Redis批量删除Key问题

    记一次Redis批量删除Key问题 前言 最近在项目中使用redis时发现一个问题 批量删除的时候删除不了 代码如下 redis配置 Bean public RedisTemplate redisTemplate RedisConnecti
  • C/C++中关于位域的一些总结

    转载自 http blog csdn net xkjcf article details 7688528 由于信息存储时 可能只占一位或者几位二进制位 比如开关量 只需要占据一位即可 为了节省存储空间 并且处理简单 C语言提供了一种数据结构
  • 点云地图三维表面重建

    通过对点云进行表面三角化mesh重建 可以使得点云地图更加轻量化 同时针对地面 红色 和非地面 蓝色 使用不同采样率的三角面片顶点 可以进一步减少地图数据量
  • 面试准备:Java常见面试题汇总(二)

    面试准备 Java常见面试题汇总 一 面试准备 Java常见面试题汇总 二 面试准备 Java常见面试题汇总 三 文章目录 43 java 中的 Math round 1 5 等于多少 44 String str abc 与 String
  • CAP简述-一致性、可用性、分区容忍性

    一致性 Consistency 是指在同一时刻 分布式系统中的所有数据备份为相同值 可用性 Availability 指集群中的某一个节点故障宕机后 集群还能响应客户端请求 即假设一个节点挂 另一个备份节点要顶上 分区容忍性 Partiti
  • 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 搞了一下 Vim IDE for Python Go 我将整个搭建的过程整理成本篇文章分享出来 本篇是 Python 版本的保姆级教程 实际上我还写了 Go 版本的 有想看的可以本篇文章点个赞 我下篇就发 一说到 I
  • Linux环境安装Jenkins(详细,亲测可行)

    1 基础环境 Linux java环境 linux安装java1 8 拒绝 emo的博客 CSDN博客 rpm下载 Index of jenkins redhat stable 清华大学开源软件镜像站 Tsinghua Open Sourc
  • 总结一些小细节 ---- Android

    1 Null pointer dereference of parent getItemAtPosition where null comes from constant This error always happened in the
  • Vue注册全局方法,全局组件,全局过滤器,全局自定义指令的方法

    1 添加全局方法 1 使用Vue prototype 在main js中写 Vue prototype getData params gt 2 使用install Vue prototype 在你的全局函数文件fun js中写 export
  • 邻接矩阵的存储方式实现图的广度和深度优先遍历

    在做图的邻接矩阵之前 先做好准备工作 定义存储类型 声明队列的操作 在广度优先遍历中使用 include
  • CSS之定位属性

    一定位介绍 定位的基本思想很简单 它允许你定义元素出现在页面的任何位置 是通过position属性配合left right 等来实 现的 二定位类别 1 相对定位 相对定位就是相对于自己以前在标准流中的位置来移动 语法 position r

随机推荐

  • 初识 TVM

    如有图像或公式显示错误 可以访问我的个人博客 https www wanglichun tech 2019 11 15 tvm 笔者也是最近偶然的机会才开始接触TVM 使用过后发现 经过auto tuning后的TVM模型在速度是竟然超过了
  • 知识图谱02

    知识图谱2 一 引言 二 运行环境 三 搭建知识图谱 四 启动问答测试 五 踩坑 1 关于路径 2 报错 一 引言 主要将项目跑起来 对项目有一个宏观的认识 搭建知识图谱 启动问答测试 构建一个简单的基于知识图谱的对话系统 二 运行环境 p
  • table标签-移动端适配

    封装一个组件 该组件需要根据不同设备屏幕宽度自适应调整展示方式 对于 PC 端 以类似 el table 的形式展示数据 而移动端则以一个类似 item 的形式展示每行数据 可以先在组件中判断设备类型 如以下示例代码所示
  • 杀linux进程的几种命令详解

    之前只知道kill killall命令 能杀死进程就行 有些进程杀不死的也不知道为何 今天看书发现出来kill killall命令 还有一个pkill命令 详细看了下他们的介绍和使用 kill杀进程的工作原理 首先了解下kill为何能杀死进
  • STM32学习笔记:ESP8266模块(1)

    由于项目要求要涉及到物联网 公司要采用wifi 于是就采购了一块串口wifi模块 ESP8266 开始拿到后首先应该掌握的就是测试 熟悉AT指令 因为串口wifi通信是采用AT指令进行通信的 在这里需要注意一点的就是 在编写程序的时候 一个
  • 数字图像处理-基于opencv和kreas的手势(手语)识别

    基于opencv和kreas的手势 手语 识别 代码为实验需要 具体使用需要修改 tensorflow教程 推荐看这个 内容一 裁剪视频 获取手势 import cv2 import numpy as np import os import
  • 华为Verilog入门教程

    对于初学者 可大致了解Verolog HDL所提供的能力 掌握Verilog HDL语言的核心子集 1 Verilog HDL语言具有 设计的行为特性 设计的数据流特性 设计的结构组成以及包括响应监控和设计验证方面的时延和波形产生机制 2
  • Linux常用命令--文件搜索命令:用户管理命令

    1 命令名称 useradd 命令所在路径 usr sbin useradd 执行权限 root 语法 useradd 用户名 功能描述 添加新用户 范例 useradd shenchao 2 命令名称 passwd 命令所在路径 usr
  • SpringBoot 如何使用 JProfiler 进行性能测试

    SpringBoot 如何使用 JProfiler 进行性能测试 在 SpringBoot 应用程序中 我们可以使用 JProfiler 进行性能测试 JProfiler 是一款专业的 Java 性能分析工具 可以帮助我们识别和解决应用程序
  • 01 认识数据分析

    数据分析全貌 分析数据的目的是什么 及时发现异常 找到数据之间的因果关系 观测 采集数据 解析系统日志 埋点获取新数据 通过传感器采集 爬虫 API 存储数据 各种类型的数据库 展示数据 可视化高效传达信息 研究关系 可视化 建模 实验 提
  • 在Linux/Ubuntu18.04上给VSCode配置C++调试环境

    本文参考Get Started with C on Linux in Visual Studio Code 来源微软官方教程 为了便于大家快速上手掌握VSCode配置C 的过程 用中文展开来具体说说 在使用C 之前 需要先配置C 调试环境
  • 记一次CentOS+Docker+Nginx+uWSGI+MongoDB的单机并发量提升过程

    无人机拍的广州南站 最近在做小程序后端开发 使用Docker Nginx uWSGI MongoDB的架构 最终部署图如下 最开始在对新增订单的接口进行压测时出现100并发就有大量失败的情况 日志显示 WriteConflict error
  • STM32 USB接口 一键下载电路详解与过程分析

    要想了解一键下载电路的工作过程 首先要了解STM32的几种启动模式 STM32的几种启动模式如下表所示 从表中可知 我们想用串口下载代码 就要配置BOOT0为1 BOOT1为0 但是如果想让STM32一复位就运行代码 就要配置BOOT0为0
  • IT项目管理作业6

    练习 教材练习题6 教材练习题7 收集网上资料 总结看板在软件项目中的使用 约2 3页 练习题6 表6 4显示的是一个小项目网络图中的数据 所有的工期和时间以天来计算 该网络图共有9个节点 活动 起始节点 终止节点 估计的工期 A 1 2
  • RecyclerView 显示不全问题

    按道理ItemCount的数量应该是跟onCreateViewHolder调用次数一致的 但在实际开发中遇到不一致的情况 可能出现的问题 某一个item的高度太高 导致其他的item无法在可显示的范围内 RecyclerView只有在显示范
  • c++类模板案例

    案例要求 创建一个数组类模板 可以对内置数据类型以及自定义数据类型的数据进行存储 将数组中的数据存储到堆区 构造函数中可以传入数组的容量 提供对应的拷贝构造函数以及operator 防止浅拷贝问题 提供尾插法和尾删法对数组中的数据进行增加和
  • JS/jq 实现复选框默认选中

    div div
  • Java-方法的重写(Overriding)和重载(Overloading)

    方法的重载 Overloading 方法的重载是指一个类中定义多个同名的方法 但方法的参数类型 参数个数或参数顺序不同 重载的规则 相同的方法名 参数列表不同 类型 个数 顺序的不同 最好相同的返回值类型 可以不同 可以抛出不同的异常 可以
  • 网页三剑客之 HTML

    本章开始我们来介绍一下网页前端部分 我们只是简单的介绍一些常用的各种标签 其目的在于为我们后面的项目做准备 我们并不要求能完全掌握前端的语法 但是在见到以后能够认识这些代码就可以了 想走后端开发的 前端不需要多么熟悉 毕竟在各个企业中前后端
  • 四种常用的自动化测试框架

    一直想仔细研究框架 写个流水账似的测试程序不难 写个低维护成本的测试框架就很难了 所以研究多种测试框架还是很有必要的 知道孰优孰劣 才能在开始编写框架的时候打好基础 今天读到了KiKi Zhao的翻译文章 觉得很是不错 写了一点学习心得 有