自动化测试框架指南

目录

定义测试自动化

不同类型的框架

以工具为中心的框架

面向项目的框架

关键字驱动的框架

完美测试自动化框架的主要组件

测试库

单元测试

集成和端到端测试

行为驱动开发

测试数据管理

mock,Stubs和虚拟化

实施模式的通用机制

测试结果报告

CI平台

源代码管理

创建依赖关系管理器

建立和实施框架的过程

对测试自动化框架的必然需求

结论


任何成功的自动化测试过程的关键组成部分都是测试自动化框架。降低维护成本,测试工作效率提升和提高质量保证团队的投资回报率ROI是优化敏捷流程时所提供的主要优势之一。

出于以下原因,自动化对于高效的测试过程至关重要:

  • 提高测试效率
  • 降低维护成本
  • 尽可能的人工干预
  • 尽可能大测试范围
  • 代码的可重用性

软件开发领域的管理人员对实现自动化框架如何使他们的业务受益有了广泛的了解,并且在这个领域的许多人已经开始经常使用框架一词,它是成为软件自动化项目成功的关键。

但是对于许多人来说,问题仍然存在:测试自动化框架和自动化脚本到底是什么?它是如何相互协助工作的,框架可以为测试过程带来哪些优势?

定义测试自动化

在任何行业中,自动化通常被解释为自动处理流程,而这些流程几乎不需要人工干预。在软件行业,测试自动化意味着使用许可版本或开源的自动化工具对软件应用程序执行各种测试。用技术术语来说,测试自动化框架是一组定制的交互式组件,它们有助于执行脚本化测试和全面报告测试的结果。

为了成功构建自动化框架,必须考虑软件质量保证专家的建议,这些建议将帮助控制和监视整个测试过程并提高结果的准确性。经过仔细改进的自动化框架允许测试人员以实用、简化的方式执行自动化测试。

不同类型的框架

根据团队要如何创建框架和目标自动化需求,可能会想到各种可能的答案。

以工具为中心的框架

商业自动化工具和开源自动化工具都具有自己的系统基础结构,可帮助在其测试环境中生成报告,测试套件和分布式测试执行。一个示例是Selenium自动化框架,该框架具有主要组件WebDriver,该组件充当基于Web浏览器的插件,以在Web浏览器中控制和操作应用程序的DOM模型。Selenium测试自动化框架还另外具有有用的编码库和记录回放工具。

另一个特定于工具的重要框架示例是Serenity,它围绕Selenium Webdriver构建并且是加速器。在这种情况下,为了加快测试自动化实施过程的速度,社区将特定组件组合在一起。

当涉及到诸如QTP、RF之类的工具专用框架时,很难做出明确的决定,因为它们都是由带有模拟操作,报告和脚本IDE的基础架构预先构建的。

面向项目的框架

定制了此类自动化框架,以实现特定应用程序项目的自动化。特定于项目的框架支持某些目标应用程序测试自动化要求,并由从开源库构建的组件驱动。它创建了一个测试友好的环境,以运行某些基本功能。这些包括部署开发的应用程序,运行该应用程序,执行测试用例,直接测试结果报告以及简化编码的包装程序控制。专注于特定项目的框架还应该具有一个组件,以支持在不同的OS和浏览器上的各种云环境中进行测试运行。此类测试框架常见于跨浏览器测试。

关键字驱动的框架

关键字驱动的框架是那些旨在以较少的编码量吸引开发人员和测试人员的框架。它们可能是特定于工具或针对项目的框架,使技能不足的员工可以编写和理解自动化脚本。用于编码的关键字集(例如LoginNavigateToPageClickTypeText)被安装为代码库中的关键字存储库。测试人员根据提供的关键字引用编写脚本的电子表格将传递到关键字解释器,并执行测试。

完美测试自动化框架的主要组件

如果您希望实现功能强大且性能卓越的测试自动化框架(无论是开源还是商业的),则必须考虑包括构成其核心的某些成分。不必在每个框架中都包含下面提到的所有组件。

基于各种测试的理想测试自动化框架的主要组成部分是:

测试库

单元测试

单元测试库可用于塑造任何测试自动化框架的重要组成部分。您需要它用于:

  • 通过特定的形式注释(如@Test等)定义使用的测试方法
  • 执行影响自动化测试最终结果的断言
  • 运行简单明了的测试

无论您是从命令行IDE专用工具还是CI(连续集成)系统运行测试,以确保单元测试都以直观的方式运行,单元测试库可提供测试运行程序。

集成和端到端测试

在执行集成和端到端测试自动化时,通常建议保证现有测试库提供的功能是健康的。由应用程序的UI驱动的API级别的测试需要使与被测应用程序进行交互变得更加容易的组件,因为它消除了不必要的编码负担。因此,尽量不专注于以下方面的编码工作:

  • 连接到应用程序
  • 发送请求
  • 接收结果回应

行为驱动开发

专用于BDD的库以行为规范为目标,以可执行代码的形式创建可执行规范。在这里,可以将不同的功能和预期行为场景转换为代码,尽管它们不能像测试工具直接与被测应用程序进行交互那样工作。它们可作为BDD流程的支持,以创建与自动化测试的范围和意图一致的实时文档。一组BDD库的典型示例为:

测试数据管理

在软件测试自动化和测试创建过程中,最大的挑战是利用测试数据管理系统。随着自动化测试数量的增加,始终存在确保执行特定测试所需的某些测试数据可用或创建的问题。面临的挑战是,没有针对此问题的万无一失的解决方案,这需要一种可靠的测试数据管理方法来使自动化工作取得成功。

解决此问题的一种方法是拥有合适的moco工具,以使数据更加简化,清晰和易于消化。

mock,Stubs和虚拟化

在探索和研究自动化测试的许多想法时,可能会遇到以下情况:

  • 想将模块与通常在单元测试中经历过的连接组件隔离开
  • 需要处理应用程序的集成或端到端测试中常见的繁琐和关键的依赖关系

在这种情况下,您会觉得创建反映所连接组件行为模式的mockStubs以及虚拟化至关重要。处理这些内容是一项艰巨的任务,在开发自动化测试框架的过程中选择有用的虚拟化工具至关重要。

实施模式的通用机制

除了上面讨论的自动化框架组件之外,还有一些有用的机制可帮助创建,使用和维护自动化测试,例如:

  • 包装器方法:使用Selenium Webdriver组件时,创建自定义包装器可使错误处理更加容易,可以更好地处理超时,异常处理和故障报告。
  • 抽象方法:抽象机制代表提高可读性和掩盖多余的实现细节。例如,在创建Selenium WebDriver测试时使用页面对象的目的是在网页上公开用户输入操作,包括输入凭据或单击页面上的某处。目标是通过超越或绕过探索页面特定元素的需求来实现高级测试方法。此方法适用于许多类似的应用程序和自动化测试。

测试结果报告

在选择用于将测试结果报告到自动化框架中的库或机制时,应该主要关注将要阅读或查看所生成报告的目标受众。在这方面,我们可以提出几个注意事项:

  • 诸如JUnitTestNG之类的单元测试框架生成的报告主要针对诸如CI(持续集成)服务器之类的接收系统,这些系统最终会对其进行解释并以其他软件可使用的XML格式进行呈现。
  • 当我们寻求具有人类最易理解的语言的报告功能的工具时,需要考虑使用与单元测试框架兼容的商业工具,例如用于JunitUFT ProNUnitTestNG
  • 另一种选择是利用诸如ExtentReports之类的第三方库,该库以人类易于理解的格式创建测试结果报告,包括通过饼图,图形或图像进行的视觉解释。

CI平台

为了以更快,更统一进行应用程序测试,持续集成平台可以帮助团队构建软件并定期为新版本运行各种测试。当开发和部署新功能以及更新现有功能时,此方法使开发人员和利益相关者有机会就应用程序质量获得定期反馈和更快的响应。

源代码管理

与手动测试一样,自动化测试也涉及编写和存储源代码和测试用例版本。每个开发公司都有一个精选的源代码和版本控制系统来保存和保护源代码。自动化测试需要完善的源代码管理系统,该系统在处理生产代码时会派上用场。任何开发人员都会给出的一些典型的源代码管理示例是GitMercurialSubversionTFS

创建依赖关系管理器

依赖关系管理器的主要目的是协助收集和管理在自动化软件解决方案的功能中使用的现有依赖关系和库的过程。某些工具(例如MavenGradle)同时充当依赖项管理器并帮助构建工具。构建工具旨在帮助您从源代码和支持库开发自动化软件,并运行测试。其他依赖工具包括AntNPMNuGet

建立和实施框架的过程

有几种方法可以计划实现自动化测试解决方案的方法。

  • 从用户的角度探讨自动化的实际适用性。从各个角度检查它是否如PPT中所讲,在使用中的技术上对其进行测试。
  • 密切关注被测系统的技术,以找到能够完美模拟用户行为的最合适的测试自动化工具,这一点至关重要。
  • 建议采用基于阶段的实现方法,其中每个阶段都具有交付自动化测试脚本的优先级,同时添加框架功能以实现预期的脚本执行。
  • 在启动软件测试自动化之前,为确保正确执行自动化决策,必须首先计算和估算实施后的投资回报率,运行手动回归或冒烟测试的时间以及每个版本的运行周期。

对测试自动化框架的必然需求

描述和说明软件测试自动化框架和脚本如何完善测试过程,这并不总是意味着它可以成功地为所有致力于自动化的人工作。但是,无可否认的是,如果详细地计划和正确执行测试自动化框架,则会为软件开发和测试公司带来以下好处:

  • 最少的时间,最大的收益:构建任何可行的测试自动化框架和自动化脚本都是为了最大程度地减少编写和运行测试所需的时间,从而在短时间内提供最大的输出。有了出色的自动化框架,您就可以摆脱通常的担忧,例如同步,错误管理,本地配置,报告生成,解释和许多其他挑战。
  • 可重用和可读的自动化代码:使用现有组件库中提到的代码时,它会在未来一段时间保持可读性和可重用性,并且所有相关任务(如报告,同步和故障排除)将变得更易于访问。
  • 资源优化:从创建自动化测试中获得的效率取决于其采用的灵活性。如果自动化系统是灵活的,并且与从事不同组件的不同团队兼容,则在资源优化和知识共享方面可以提供巨大的收益。

结论

在当今快节奏,残酷的软件开发生态系统中,自动化测试和脚本在维持软件测试周期的速度,效率和明晰度中起着不可或缺的作用。随着自动化测试技术被灌输到软件测试中,考虑采用测试自动化框架的组织必须深入研究最终框架的设计,然后才能涉足这一领域。精心设计的框架设计和要使用的组件策略将为最终测试自动化框架奠定基础。

塑造测试自动化框架成熟,成熟,灵活的体系结构的最佳方法是从小处着手,频繁进行测试和审查,然后逐步提高以构建扩展版本。在实现自动化测试框架时,一种推荐的方法是找到一种可以快速轻松地适应流程和工作流程的工具。寻找一种不仅灵活而且可以支持多种应用程序和语言的工具,因为这将使QA团队无论其背景或技能如何都能做出有效的贡献。


 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

Java系列 | 如何讲自己的JAR包上传至阿里云maven私有仓库【云效制品仓库】

什么是云效 云效是云原生时代一站式 BizDevOps 平台,产研数字化同行者,支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现产研数字化,打造“双敏”组织&…

mysql——面试题初体验

查询环境 1、student(学生表) 2、课程表(course) 3、教师表(teacher) 4、成绩表(score) 问题 (1) 查询所有学生的学号、姓名、选课数、总成绩 mysql> select s.s_id as 学号,s.s_name as 姓名 from student as s; ---------------- | 学号 | 姓名…

对称(镜像)二叉树

之前写的比较两棵树是否相等,是左子树和左子树比,右子树和右子树比——利用这个思想镜像二叉树就是从第二层的两个节点作为两棵树的根,然后比较,这里的比较是左子树和右子树比,右子树和左子树比 ——也就是利用比较两个…

解决 MyBatis 一对多查询中,出现每组元素只有一个,总组数与元素数总数相等的问题

文章目录 问题简述场景描述问题描述问题原因解决办法 问题简述 笔者在使用 MyBatis 进行一对多查询的时候遇到一个奇怪的问题。对于笔者的一对多的查询结果,出现了这样的一个现象:原来每个组里有多个元素,查询目标是查询所查的组,…

搭建Atlas2.2.0 集成CDH6.3.2 生产环境+kerberos

首先确保环境的干净,如果之前有安装过清理掉相关残留 确保安装atlas的服务器有足够的内存(至少16G),有必要的hadoop角色 HDFS客户端 — 检索和更新Hadoop使用的用户组信息(UGI)中帐户成员资格的信息。对调…

Day2力扣打卡

打卡记录 无限数组的最短子数组&#xff08;滑动窗口&#xff09; 链接 思路&#xff1a;先求单个数组的总和&#xff0c;再对两个重复数组所组成的新数组上使用 不定长的滑动窗口 来求得满足目标的最小长度。 class Solution { public:int minSizeSubarray(vector<int>…

项目经理每天,每周,每月的工作清单

很多不懂项目管理的伙伴问&#xff0c;项目经理每天每周每个月的工作是什么呢&#xff1f; 仿佛他们什么都管&#xff0c;但是又没有具体的产出&#xff0c;但是每天看他们比谁都忙&#xff0c;其实很简单&#xff0c;项目中的每个环节负责具体的事情&#xff0c;但是每个环节…

Python---if选择判断结构、嵌套结构(if elif else)

1、if选择判断结构作用 if 英 /ɪf/ conj. &#xff08;表条件&#xff09;如果&#xff1b;&#xff08;表假设&#xff09;要是&#xff0c;假如&#xff1b;无论何时&#xff1b;虽然&#xff0c;即使&#xff1b;&#xff08;用于间接疑问&#xff09;是否&#xff1b…

uniapp-vue3-微信小程序-标签选择器wo-tag

采用uniapp-vue3实现, 是一款支持高度自定义的标签选择器组件&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id14960 使用示例 <template>&…

System.exit()方法参数

说明文档&#xff1a;System (Java Platform SE 8 ) 终止当前正在运行的Java虚拟机。该参数用作状态代码&#xff1b;按照惯例&#xff0c;非零状态码表示异常终止。 此方法调用类Runtime中的exit方法。此方法从不正常返回。 调用System.exit&#xff08;n&#xff09;实际上等…

Android MediaCodec将h264实时视频流数据解码为yuv,并转换yuv的颜色格式为nv21

初始化mediacodec //宽高根据摄像头分辨率设置private int Width 1280;private int Height 720;private MediaCodec mediaCodec;private ByteBuffer[] inputBuffers;private void initMediaCodec(Surface surface) {try {Log.d(TAG, "onGetNetVideoData: ");//创建…

牛客:FZ12 牛牛的顺时针遍历

FZ12 牛牛的顺时针遍历 文章目录 FZ12 牛牛的顺时针遍历题目描述题解思路题解代码 题目描述 题解思路 通过一个变量来记录当前方向&#xff0c;遍历矩阵&#xff0c;每次遍历一条边&#xff0c;将该边的信息加入到结果中 题解代码 func spiralOrder(matrix [][]int) []int {…

Docker安装ES7.14和Kibana7.14(无账号密码)

一、Docker安装ES7.14.0 1、下载镜像 docker pull elasticsearch:7.14.0 2、docker安装7.14.0 mkdir -p /usr/local/elasticsearch/config mkdir -p /usr/local/elasticsearch/data chmod 777 -R /usr/local/elasticsearch/ echo "http.host: 0.0.0.0" >> /u…

IDEA中点击New没有Java Class

解决办法&#xff1a;右键src&#xff0c;也可以是其他文件名&#xff0c;点击Mark Directory as 点击Sources Root即可

【Java 进阶篇】JavaScript DOM Element 对象详解

JavaScript是一门广泛用于网页开发的脚本语言&#xff0c;而DOM&#xff08;文档对象模型&#xff09;是JavaScript在网页中操作HTML和XML文档的核心。DOM以树状结构表示文档&#xff0c;允许开发者以编程方式访问、操作和修改文档的内容和结构。在DOM中&#xff0c;Element对象…

海洋CMS仿爱美剧影视电影视频网站模版源码/自适应手机端

海洋CMS仿爱美剧网站模板&#xff0c;自适应手机端&#xff0c;内含视频、资讯、留言模块。 下载地址&#xff1a;https://bbs.csdn.net/topics/617419787

Postman简单使用

文章目录 一.接口测试流程二、Postman接口测试工具三、接口关联四、全局变量和环境变量 一.接口测试流程 拿到API接口文档&#xff08;从开发拿或者抓包获取&#xff09;&#xff0c;熟悉接口业务&#xff0c;接口地址&#xff0c;错误码等等 编写接口的测试用例以及评审 编写…

docker中使用GPU+rocksdb

配置环境 delldell-Precision-3630-Tower  ~  lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower  ~  nvcc --version nvcc: NVIDIA (R) Cuda comp…

【数据结构】排序--快速排序

目录 一 概念 二 快速排序的实现 1. hoare版本 (1)代码实现 (2)单趟排序图解 (3) 递归实现图解 (4)细节控制 (5)时间复杂度 (6)三数取中优化 2 挖坑法 (1)代码实现 (2)单趟图解 3 前后指针法 (1) 代码实现 (2) 单趟图解 ​编辑4 优化子区间 5 非递归快速排…

FPGA project : flash_write

本实验重点学习了&#xff1a; flash的页编程指令pp。 在写之前要先进行擦除&#xff08;全擦除和页擦除&#xff09;&#xff1b; 本实验&#xff1a;先传写指令&#xff0c;然后进入写锁存周期&#xff0c;然后传页编程指令&#xff0c;3个地址&#xff1b; 然后传数据&a…