四种常用的自动化测试框架
一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译文章,觉得很是不错,写了一点学习心得,有不正确之处,请指出。
中文原文地址:http://www.cnblogs.com/nckiki/articles/244202.html
英文原文地址:http://www.ibm.com/developerworks/rational/library/591.html
原文对自动化测试架构做了如下四种分类:
- 数据驱动测试框架(The Data-Driven Testing Framework)
说明:
仅仅是将测试数据从测试脚本中分离出来,开始了非混沌状态的第一步,这也是所有测试架构中最简单的一种
优点:
至少测试数据可以单独维护了
缺点:
任何被测试程序的变更所导致的工作量是所有架构中最多的,因此维护成本非常高
- 测试脚本模块化框架(The Test Script Modularity Framework)
说明:
l 箭头方向代表的是被调用和调用关系
l 测试脚本中包含了各功能点中涉及到的控件识别和业务逻辑操作,其中包含了外部测试数据的调用
l 测试脚本的维护由自动化测试开发工程师负责,要求必须懂自动化编程和业务逻辑
l 测试数据的维护由测试工程师负责
优点:
控件和业务逻辑一旦发生变化,要进行修改和维护的是底层的测试脚本(比无任何抽象封装的自动化测试程序稍好一些)
缺点:
l 几乎所有大的变更引起的工作量都由自动化测试开发工程师完成
l 控件识别和业务逻辑本身属于不同的领域,没有很好进行抽象封装
- 测试库构架框架(The Test Library Architecture Framework)
说明:
l 箭头方向代表的是被调用和调用关系
l 将所有的针对测试系统本身的控件识别和控件支持的操作封装在测试库中
l 测试脚本调用测试库的同时传递外部的测试数据
l 测试库的编写由自动化测试开发工程编写(可以不懂业务),负责控件的变更和维护
l 测试脚本的编写可由对业务比较掌握的自动化测试开发工程编写,负责业务逻辑的变更和维护
l 测试数据由测试工程师维护(可以不懂自动化开发)
优点:
l 被测试系统无论是哪层发生变化,只需要相应的人员进行变更维护即可
l 完成了控件识别操作和业务逻辑的抽象分离
缺点:
变更引起的工作量还是附加在自动化测试开发工程师身上
- 关键字驱动或表驱动测试框架(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和测试数据
缺点:
框架的抽象程度比较高,对自动化测试工程师的开发能力比较高
总结:个人认为以上的四种架构是存在递进关系的,至少前三个是肯定的,原文中最后总结的图认为还是需要多种框架特点组合在一起的,还是有很好的借鉴意义的,这里一并附上

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战
相关文章:
四种常用的自动化测试框架
一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译文章&…...
Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
Fuxploider:一款针对文件上传漏洞的安全检测与研究工具 1.概述2. 工具使用1.概述 Fuxploider是一款功能强大的开源渗透测试工具,该工具专门针对文件上传漏洞而设计,可以帮助广大研究人员以自动化的方式检测和利用目标站点文件上传表单中的安全问题 由于该工具基于Python 3…...
Unity 安装及运行MLAgents
1、下载ML-Agents 下载地址 GitHub - Unity-Technologies/ml-agents: The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinfo…...
LightDB-A 兼容oracle支持mod操作符
LightDB-A 兼容oracle支持mod操作符 LightDB-A 为了兼容oracle,从23.3版本开始支持mod操作符,其语义同 ‘%’ 操作符,使用案例如下: select 5 mod 2;?column? ----------1 (1 row)select 0 % 0; ERROR: division by zerosel…...
SpringMVC之自定义注解
目录 一、Java注解 1.1 注解简介 1.2 注解分类 1.3 JDK基本注解 1.4 JDK元注解 1.5 自定义注解 1.5.1 标记注解 1.5.2 元数据注解 1.6 如何自定义注解 二、自定义注解的基本案例 2.1 案例一(获取类、方法以及属性上的注解) 2.1.1 Ingerited的…...
QT:使用普通按钮、网格布局管理器、标签、行编辑器、水平布局管理器、垂直布局管理器做一个小项目
widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //普通按钮 #include <QGridLayout> //网格布局管理器 #include <QLabel> //标签 #include <QLineEdit> //行编辑器 #include <QHBoxLayo…...
【小沐学写作】程序员必备技能:在线协作文档汇总
文章目录 1、简介2、微软Office在线文档2.1 功能简介2.2 使用费用2.3 用户体验 3、石墨文档3.1 功能简介3.2 使用费用 4、腾讯文档4.1 功能简介4.2 使用费用 5、语雀5.1 功能简介5.2 使用费用 6、飞书6.1 功能简介6.2 使用费用 7、印象笔记7.1 功能简介7.2 使用费用 结语 1、简…...
「工具|数据接口」免费公开的REST API 如何借助github搭建自己的fake API接口
本文主要介绍日常开发、测试、教学或者分享中,可能遇到的模拟数据问题。分享免费开发的测试数据接口,以及如何利用github快速搭建定制化的接口数据,避免使用真实数据的风险以及自己现编数据的麻烦。 文章目录 一、场景说明二、免费公开的Fak…...
leetcode 18. 四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 < a,…...
树上背包问题动态规划
目录 树状动态规划概述 示例 求解思路 树状动态规划概述 树状动态规划(Tree DP)是一种在树结构上进行动态规划的方法。在树状DP中,我们利用树的特殊结构性质,通过递归地向下更新子节点的状态,最终得到整个树的最…...
linux查看进程对应的线程(数)
首先,top或ps查看进程列表,确定要查看的进程pid,如下面40698 查看进程的线程情况 查看进程:top -p 40698 查看线程:top -p 40698 -d 3 -H 其中-d是刷新频率 可看到此进程共211个线程,运行中的是211个。…...
Python中的桌面应用开发库有哪些?
Python中有几个受欢迎的桌面应用开发库。以下是其中一些: Tkinter:这是Python的标准GUI库,它提供了构建简单的桌面应用程序的基本组件和功能。 PyQt:这是一个成熟的、功能强大的跨平台图形用户界面框架,它是Python绑定…...
【大数据】Neo4j 图数据库使用详解
目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域 二、图数据库Neo4j简介 2.1 Neo4j特性 2.2 Neo4j优点 三、Neo4j数据模型 3.1 图论基础 3.2 属性图模型 3.3 Neo4j的构建元素 3.3.1 节点 3.3.2 属性 3.3.3 关系 3.3.4 标…...
Windows11系统C盘用户文件夹下用户文件夹为中文,解决方案
说明: 1. 博主电脑为Windows11操作系统,亲测有效,修改后无任何影响,软件都可以正常运行! 2. Windows10系统还不知道可不可行,因为Windows11的计算机管理中没有本地用户和组,博主在csdn上看到很…...
Python正则表达式(re)
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为…...
【PyTorch 08】如果要手动安装对应的包
例如有时候我们要下载 PyG ,但是需要手动下载,需要进行以下步骤: 网站链接:https://data.pyg.org/whl/ 首先查看当前安装好的Pytorch版本和对应的cuda版本 1. pip list:查看torch版本 2. torch.version.cuda…...
黑马JVM总结(十二)
(1)五种引用_强软弱 实线箭头表示强引用,虚心线表示软弱虚终结器引用 在平时我们用的引用,基本都为强引用 ,比如说创建一个对象通过运算符赋值给了一个变量,那么这个变量呢就强引用了刚刚的对象 强引用的…...
彻底搞懂线程池原理以及创建方式
1. 为什么要使用线程池 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗。通过复用…...
FreeSWITCH 1.10.10 简单图形化界面9 - 鼎兴FXO网关SIP中继内网IPPBX落地
FreeSWITCH 1.10.10 简单图形化界面9 - 鼎兴FXO网关SIP中继内网IPPBX落地 0、 界面预览1、创建一个话务台2、创建PBX SIP中继并设置呼入权限3、设置呼出规则4、设置分机呼出权限5、设置FXO 网关相关信息6、设置FXO网关端口组呼入号码7、设置FXO网关的SIP中继8、设置FXO网关呼叫…...
Oracle数据如何迁移导入到MySQL
使用Navicat工具建立数据连接,进行数据传输 1、打开Navicat工具,分别连接Oracle数据库和MySQL数据库。 2、连接源选择你的oracle数据,目标选mysql 即可成功导入...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
