阿里P6经验分享,这8种不同类型的自动化测试框架,你会吗?

news2024/9/21 0:36:37

以下为作者观点:

在自动化测试中,框架提供了一种组织和执行测试案例的结构化方式。它们提供了一套准则和最佳实践,使测试人员能够编写可重复使用、可维护和可扩展的测试脚本。在这篇文章中,我们将讨论自动化测试中不同类型的框架,这些框架可以与Maven和Selenium TestNG一起使用。

1.模块化测试框架

模块化测试框架(Modular Testing Framework)是自动化测试框架的一种类型,它将大型测试脚本分解为较小的模块化单元,每个模块负责测试应用程序的一个特定功能。

这类框架可以让测试人员根据测试要求,以特定的顺序或次序执行这些模块。这些模块可以在多个测试案例中重复使用,从而加快测试脚本的开发和执行。

模块化测试框架中涉及的基本步骤:

1.确定测试场景,定义执行这些场景所需的模块。

2.创建一个模块库,包含模块及其相关的动作或事件。

3.创建一个测试脚本,使用这些模块来执行测试方案。

4.执行测试脚本并分析测试结果。

5.根据需要更新模块库,重新运行测试脚本。

使用模块化测试框架的好处包括:

 提高测试脚本的可复用性和可维护性

 减少了脚本开发的时间和精力

 更快的测试执行和调试时间

 更好的测试覆盖率和灵活性

2.线性脚本框架

线性脚本框架(Linear Scripting Framework)是一种自动化测试框架,使用step-by-step的方法来执行测试案例。

这类框架可以创建一个用户在应用程序上执行的行动或事件的线性序列,测试脚本按照特定的顺序执行这些动作,在每个步骤中验证预期的结果。这类框架简单易行,成为中小型应用程序的热门选择。

线性脚本框架中涉及的基本步骤:

1.确定测试场景并定义执行这些场景所需的步骤。

2.创建一个测试脚本,以线性方式执行测试步骤。

3.执行测试脚本并分析测试结果。

4.根据需要更新测试脚本并重新运行测试脚本。

使用线性脚本框架的好处包括:

 简单且容易实现

 适合于小型或中型的应用程序

 易于理解和修改测试脚本

3.数据驱动框架

数据驱动框架(Data-Driven Framework)是一种流行的自动化测试框架,它允许测试人员使用各种来源的数据,如Excel表、CSV文件或数据库。

这类框架将测试数据与测试脚本分开,使测试人员能够改变测试数据而不修改测试脚本。在这类框架中,测试人员编写的测试案例可以用不同的数据集多次执行。Maven和Selenium TestNG使用TestNG的DataProvider功能支持数据驱动框架。

数据驱动框架中涉及的基本步骤:

1.确定测试场景和数据要求。

2.以所需格式创建测试数据,如Excel表或数据库。

3.创建测试脚本,可以从文件中读取测试数据,并对每组数据执行测试步骤。

4.用不同的数据集执行测试脚本。

5.分析测试结果并报告缺陷。

使用数据驱动框架的好处包括:

 改善测试覆盖率:数据驱动框架允许测试人员用不同的数据集测试应用程序,从而提高测试覆盖率。

 减少了脚本开发时间和精力:测试人员可以对不同的数据集重复使用相同的测试脚本,这减少了脚本开发所需的时间和精力。

 更好地维护测试数据:将测试数据存储在一个单独的文件中,允许测试人员在不改变测试脚本的情况下轻松修改或更新测试数据。

4.关键词驱动的框架

关键字驱动框架(Keyword-Driven Framework)是一种流行的自动化测试框架,它使用关键字或命令来表示用户在应用程序上执行的特定动作。测试人员编写的测试脚本由一连串的关键词组成,这些关键词被映射到应用程序中的相应功能或方法。

这类框架将测试脚本与应用程序分开,使测试人员能够修改测试脚本,而不需要改变应用程序代码。Maven和Selenium TestNG支持使用TestNG的@DataProvider和@Test注解的关键词驱动框架。

关键字驱动框架涉及的基本步骤:

1.确定测试场景并定义执行这些场景所需的关键字。

2.创建关键词库,其中包含关键词和它们相关的动作或事件。

3.创建测试脚本,使用关键字来执行测试场景。

4.执行测试脚本并分析测试结果。

5.根据需要更新关键词库并重新运行测试脚本。

使用关键字驱动的框架的好处包括:

 易于理解和维护测试脚本:关键词驱动框架使测试脚本易于理解和维护,因为测试人员可以使用一组预先定义的关键词来执行特定的动作或事件。

 减少脚本开发的时间和精力:测试人员可以在不同的测试案例中重复使用关键词,减少脚本开发所需的时间和精力。

 提高测试覆盖率和灵活性:关键词驱动的框架允许测试人员创建具有更好的覆盖率和灵活性的测试案例,因为他们可以在不同的测试案例中重复使用关键词。

5.混合框架

混合框架(Hybrid Framework)是数据驱动和关键字驱动框架的结合,允许测试人员编写使用数据集、关键字和可重用函数的测试案例。测试人员可以使用数据集来为关键字提供输入值,而关键字可以使用函数来执行复杂的操作。

这类框架比较具有灵活性,可以根据测试要求在数据驱动或关键字驱动的方法之间进行选择。Maven和Selenium TestNG使用TestNG的@DataProvider和@Test注解,以及TestNG的配置文件,支持混合框架。

混合框架中涉及的基本步骤:

1.确定测试场景和数据要求。

2.定义执行测试方案所需的关键字。

3.创建测试脚本,使用关键字来执行不同数据集的测试场景。

4.执行测试脚本并分析测试结果。

5.根据需要更新关键词库和测试数据,重新运行测试脚本。

使用混合框架的好处包括:

 改进测试覆盖率:混合框架允许测试人员用不同的数据集和预定义的关键词来测试应用程序,从而提高测试覆盖率。

 更好的灵活性:混合框架通过结合两个或多个框架的优点,在处理复杂的测试场景方面具有更好的灵活性。

 减少脚本开发时间和精力:测试人员可以为不同的数据集和关键词重复使用同一个测试脚本,这就减少了脚本开发所需的时间和精力。

6.行为驱动开发(BDD)框架

BDD(Behavior-Driven Development)是一种测试方法,主要是以自然语言的形式描述应用程序的行为。BDD框架使用Gherkin语法,这是一种结构化的语言,使用关键词如Given、When、Then、And和But来描述应用程序的行为。BDD框架提供了以自然语言格式编写测试用例的能力,使其易于被所有利益相关者理解。Maven和Selenium TestNG使用Cucumber-JVM和TestNG-Cucumber插件支持BDD框架。

行为驱动开发(BDD)框架中涉及的基本步骤:

1.确定应用程序的预期行为,并以自然语言格式创建测试场景。

2.为每个测试场景创建步骤定义。

3.创建描述应用程序行为的特征文件。

4.使用BDD测试工具,如Cucumber或JBehave,执行这些特征文件。

5.分析测试结果并报告缺陷。

使用BDD框架的好处包括:

 改善利益相关者之间的协作:BDD框架通过使用自然语言来描述应用程序的行为,鼓励测试人员、开发人员和其他利益相关者之间的协作。

 改进测试覆盖率:BDD框架允许测试人员根据应用程序的预期行为创建测试用例,从而提高测试覆盖率。

 更快的反馈和调试:BDD框架通过识别失败的原因并在测试用例中使用的自然语言中强调它,提供更快的反馈和调试。

7.页面对象模型(POM)框架

POM(Page Object Model)是一种流行的设计模式,它提供了一种在网页中组织和维护网络元素的结构化方式。POM框架使用面向对象编程的概念来创建可重复使用的页面对象,代表网页的不同元素,如按钮、文本框和下拉框。POM框架将网页代码与测试代码分开,使测试人员能够在不改变网页代码的情况下修改测试代码。Maven和Selenium TestNG使用TestNG的PageFactory类支持POM框架。

页面对象模型(POM)框架中涉及的基本步骤:

1.识别应用程序中的页面,为每个页面创建单独的类。

2.在每个类中定义页面元素和方法。

3.创建测试脚本,使用页面对象与应用程序进行交互。

4.执行测试脚本并分析测试结果。

5.根据需要更新页面对象并重新运行测试脚本。

使用页面对象模型(POM)框架的好处包括:

 提高可维护性:POM框架通过将页面元素和方法分离成独立的类,提高了测试脚本的可维护性。

 减少了脚本的开发。

这里要指出一点,严格意义上来讲,不存在页面对象模型框架,它只是一种设计模式。但你也必须承认,它是最广泛使用的设计模式,人们总是开始称它为框架,这就是为什么我把它包括在内。

8.测试驱动框架(TDF)

测试驱动框架(Test Driven Framework)是另一种类型的自动化测试框架,它涉及在编写实际代码之前创建测试案例。在这种方法中,开发人员编写测试案例,定义应用程序的预期行为,并编写代码以满足这些测试案例。

测试驱动框架中涉及的基本步骤是:

1.写一个失败的测试:首先为你要实现的功能写一个测试用例。测试用例最初应该是失败的,因为该功能还没有实现。

2.编写代码以通过测试:编写通过测试所需的最低数量的代码。编写的代码应该以通过测试为目标,仅此而已。

3.重构代码:一旦测试通过,重构代码以提高其质量和可维护性。这一步包括使代码干净、可读、可维护。

4.重复:对每个新功能或需求的变化重复上述步骤。

使用测试驱动框架的好处包括:

 提高代码质量

 更快的开发周期

 减少了代码的复杂性

 开发人员和测试人员之间更好地协作

总之,测试驱动框架是一种流行的自动化测试方法,包括在编写代码之前创建测试用例。这种方法能确保应用程序符合预期行为,提高代码质量,并缩短开发周期。通过Maven和Selenium TestNG,开发人员和测试人员可以实现测试驱动框架,提高应用程序的整体质量。

 END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最近火起的 Bean Searcher 与 MyBatis Plus 到底有啥区别?

专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程) 福利:taobao扫码赚个零花钱~ Bean Searcher 号称 任…

使用Python爬取给定网页的所有链接(附完整代码)

💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 此脚本从给定的网页中…

C++基础讲解第五期(继承、多继承、虚继承、向上转型、同名函数)

C基础讲解第五期 代码中也有对应知识注释,别忘看,一起学习! 一、继承(接第四期)1. const修饰成员函数2. 同名函数3. 继承中的static关键字4. 继承中类型兼容性原则5. 多继承(使用参数初始化列表)&#xff0…

SDN控制器三平面(软件定义网络、OOB)

又名 软件定义网络 软件定义网络SDN(Software Defined Network)是由美国斯坦福大学CLean Slate研究组提出的一种新型网络创新架构,可通过软件编程的形式定义和控制网络,其控制平面和转发平面分离及开放性可编程的特点,被认为是网络领域的一场革命,为新型互联网体系结…

Gitlab----基于Kubernetes安装Gitlab

【原文链接】Gitlab----基于Kubernetes安装Gitlab (1)创建命名空间gitlba kubectl create namespace gitlab(2)然后创建Gitlab用的PVC,编写yaml配置文件如下 kind: PersistentVolumeClaim apiVersion: v1 metadata:…

002 - STM32固件库GPIO(一)操作LED灯

STM32固件库操作LED灯 1、创建板级支持包文件 在User目录下创建LED文件夹,包含bsp_led.c及头文件bsp_led.h,之后在Keil中将bsp_led.c加入 2、程序代码 bsp_led.c #include ".\LED\bsp_led.h" //相对路径访问,可以在工程配置内…

LeetCode 199. 二叉树的右视图

199. 二叉树的右视图 描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 示例1 输入:[1,2,3,null,5,null,4] 输出:[1,3,4] 示例2 输入&#xf…

【笔试强训选择题】Day14.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

Linux环境搭建与历史

目录 前言 1.操作系统是什么 2. 为什么我们要选择Linux 3.Linux操作系统发展历史 4.企业应用现状 Linux在服务器领域的发展 Linux在桌面领域的发展 Linux在移动嵌入式领域的发展 Linux在云计算/大数据领域的发展 5.发行版本 6. Linux环境配置 6.1 Linux搭建的方式 …

程序员挣够了钱,到中年你还害怕失业吗?

最近一刷知乎全部都是大龄程序员失业危机 真的有这么可怕吗? 程序员35岁就真的到了瓶颈期? 我不这么认为 挣够了钱,当然不可怕,问题是没挣够啊~!!! 按题主的算法是,大城市薪资1…

C++基础STL-map容器

map容器介绍: 作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C基本数据类型(int、double 等&#xff0…

快速入门matlab——变量练习

学习目标:1.掌握matlab编程中最常用的几种变量类型 2.对变量类型的属性有所熟悉,不要求记忆,知道了解即可 3.要求熟练运用这几种变量类型创建自己的变量 clear all; % 清除Workspace中的所有…

服务网格:优化微服务通信与保障系统安全性的架构利器

文章目录 服务网格:优化微服务通信与保障系统安全性的架构利器1. 什么是服务网格?微服务架构概述:服务网格的定义和作用: 2. 服务网格的特点:透明性:无需修改应用代码服务发现与负载均衡:动态发…

GPT3.5 VS GPT-4写领导讲话稿,谁是最强笔杆子?

正文共 1240 字,阅读大约需要 5 分钟 文秘/公务员必备技巧,您将在5分钟后获得以下超能力: 快速生成领导讲话稿 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●…

redis持久化配置

回顾:rpcbind111 nfs2049 redis高可用高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%,99.99%,99.999%等) 还要考虑提供主从分离,快速容灾技术&#…

在 React 中使用 highlight.js 和 Clipboard.js 实现代码块和复制功能

参考链接:https://blog.csdn.net/huangjuan0229/article/details/130319050 在前端开发中,代码块高亮和复制功能是十分常见的需求。而在 React 中,常用的代码高亮库是 highlight.js,常用的复制库是 Clipboard.js。本篇文章将介绍…

新版 钥证书模式加签模式支付宝官方支付对接·错误代码 missing-signature 错误原因: 缺少签名参数 解决方案

新版密钥证书加签模式支付宝官方支付对接错误代码 missing-signature 错误原因: 缺少签名参数 解决方案 大家好我是优雅草伊凡,最近处理的问题特别多每天忙得不可开交,但是我相信后续要写的内容和记录下的问题是越来越多了,其他同事忙着开发…

10-02 单元化架构核心问题与概念

单元化架构产生的原因 应对增长 传统架构无法处理日益增长的互联网用户需求扩容 需要新架构更近一部提升了系统的扩展能力系统稳定性 新架构需要高可用、相对独立和故障隔离使整体系统更稳定灰度发布 系统和组件都纳入版本管理,按需部署进行灰度发布 核心问题 应…

成都待慕电商:抖音百亿现金扶持商家

新京报贝壳财经讯5月16日,抖音电商在广州举办第三届生态大会。抖音电商总裁魏雯雯透露,过去一年,抖音电商GMV(商品交易总额)同比增长80%,其中,货架场景GMV占比达30%,平台售出超300亿…

公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......

5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…