自动化测试框架知识总结(超详细整理)

一、什么是自动化测试框架

在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。 从框架的定义可以了解,框架可以是被重用的基础平台;框架也可以是组织架构类的东西。其实后者更为贴切,因为框和架本来就是组织和归类所用的。所以自动化测试框架的定义为:由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。也可以是一种思想和方法的集合。

框架分类:

  • 按框架的定义来分  自动化测试框架可以分为:基础功能测试框架、管理执行框架。
  • 按不同的测试类型来分  可以分为:功能自动化测试框架、性能自动化测试框架。
  • 按测试阶段来分  可以分为:单元自动化测试框架、接口自动化测试框架、系统自动化测试框架。
  • 按组成结构来分  可以分为:单一自动化测试框架、综合自动化测试框架。
  • 按部署方式来分  可以分为:单机自动化测试框架、分布式自动化测试框架。

二、自动化测试框架

1、模块化思想

就是将一个测试用例中的几个不同的测试点拆分并且将其单个点的测试步骤进行了封装,形成了一个模块。
例如:一个测试用例要对一个登录程序进行测试,其中包括:用户名输入、密码输入、以及确定登录;那么就可以将用户名输入、密码输入、确定登录、取消登录四个操作分别封装在四个不同的模块中。测试时,只需调用其模块即可。这样的话,当一个模块有变化,你只需单独维护那个模块即可,也可以根据模块的不同组合成不同的测试用例。

2、测试库思想

就是模块化思想的升华,其为应用程序的测试创造了库文件(可以是APIs、DLLs等),这些库文件为一系列函数的集合。其与模块化思想不同的是,其拓展了接口思想,即可以通过接口去传递参数,而不是一个封死的模块,可以说是一个多了一个“门”的交互型模块。
例如:还是以上那个测试用例,只是将用户名输入、密码输入、确定登录、取消登录封装成一个库,这个库含有一个函数Login,这个函数Login接收两个参数“用户名、密码”,对输入不同的用户名和密码可以进行不同的测试用例。

3、数据驱动思想

从数据文件读取输入数据,通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例。
关键是其思想能够好的应用到你的框架中。就是变量不变,数据驱动结果,不同的数据导致了不同的结果的产生。而对于数据的导入,可以通过很多方式,例如:EXCLE表、XML(用在WEB中)、数据库(DB)、CSV文件、TXT等都可以。

4、关键字思想

关键字驱动或者一个关键字,对对象的抓取,其测试对象就是一种面向对象的思想,例如:QTP、RFT中,对象可以为一个数据封装为一个关键字(即可以将gui元素封装成了一个个关键字),这样可以对其关键对象进行各种操作了,不同的对象可以驱动不同的测试流向与结果。

关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。 关键字主要包括:被操作对象(Item)、操作(Operation)和值(value),依据不同对象还有其它对应参数。关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。可根据界面的变化更新对应的关键字对象,而不用重新录制脚本。

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

2024年Python自动化测试全套保姆级教程,70个项目实战,3天练完,永久白嫖...

三、自动化框架设计原则

关键字驱动的自动化测试框架是对数据驱动的逻辑扩展,用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化,它的核心思想可以概括为三个分离。

  • 界面元素名与测试内部对象名的分离 

在被测应用程序和录制生成的测试脚本之间增加一个抽象层,它可以将界面上的所有元素映射成相对应的一个逻辑对象,测试针对这些逻辑对象进行,界面元素的改变只会影响映射表,而不会影响测试。

  • 测试描述与具体实现细节的分离

测试描述只说明软件测试要做什么以及期待什么样的结果,而不管怎样执行测试或怎样证实结果。这样做是因为测试的实现细节通常与特定的平台以及特定的测试执行工具有着密切的联系。这种分离使得测试描述对于应用实现细节是不敏感的,而且有利于测试在工具和平台间的移植。

  • 脚本与数据的分离 

最后,可以把测试执行过程中所需的测试数据从脚本中提取出来,在运行时测试脚本再从数据存放处读取预先定制好的数据,这样脚本和数据可以独立维护。

四、Robot Framework+Selenium2框架 

Robot Framework 的架构是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD)。它具有易于使用的表格来组织测试过程和测试数据。

Selenium2 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的工具。拥有简洁的API,WebDriver和WebElement对象,更好的抽象。且支持多中操作系统,多语言,多浏览器。

Robot Framework+Selenium2:基于Selenium2提供的测试库,通过Robot Framework以关键字编写、组织测试用例,执行并收集分析结果,形成一套web应用自动化测试的解决方案(即以关键字驱动的自动化测试框架)。

环境安装

  • python
  • wxpython
  • Robot Framework
  • RIDE
  • Selenium2Library

(为了python良好的兼容性、以及robot framework扩展库的更好支持,推荐使用ubuntu系统)

使用RIDE编写第一个测试用例

1、新建测试项目、测试套件,并引入所用到的库

2、查询提供的关键字及使用方法

3、根据库提供的关键字编写测试用例

4、测试结果查看

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

Java多线程常见的成员方法(线程优先级,守护线程,礼让/插入线程)

目录 1.多线程常见的成员方法2.优先级相关的方法3.守护线程(备胎线程)4.其他线程 1.多线程常见的成员方法 ①如果没有给线程设置名字,线程是有默认名字 的:Thread-X(X序号,从0开始) ②如果要给线程设置名字&#xff0c…

10 分钟了解 nextTick ,并实现简易版的 nextTick

前言 在 Vue.js 中,有一个特殊的方法 nextTick,它在 DOM 更新后执行一段代码,起到等待 DOM 绘制完成的作用。本文会详细介绍 nextTick 的原理和使用方法,并实现一个简易版的 nextTick,加深对它的理解。 一. 什么是 n…

sql优化,内外连接有什么区别

内外连接是啥不必多说,但在做关联查询的时候,二者是有一些区别的: 举例来说,首先是外连接(左外连接为例),当两个表都没有索引,就都是全表扫描 EXPLAIN SELECT SQL_NO_CACHE * FROM …

19个Python语法糖和9个内置装饰器

19 个Sweet的 Python Syntax Sugar,用于改善您的编码体验 文章目录 19 个Sweet的 Python Syntax Sugar,用于改善您的编码体验1. 联合运算符Union Operators:合并 Python 字典的最优雅方式2. 类型提示Type Hints:使您的 Python 程序…

EduChat账号密码登录

内测申请:请邮件dan_yhstu.ecnu.edu.cn,以“EduChat内测申请单位”作为邮件标题,邮件内容中写明用途 先去申请个账号和密码,会有一两天延迟吧,挺快的。 拿到账号之后去官网,点一个 官网传送门 就出来用账号密码登录的…

腾讯云轻量服务器和云服务器CVM该怎么选?区别一览

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

六、Redis 分布式系统

六、Redis 分布式系统 六、Redis 分布式系统6.1 数据分区算法6.1.1 顺序分区6.1.2 哈希分区 6.2 系统搭建与运行6.2.1 系统搭建6.2.2 系统启动与关闭 6.3 集群操作6.3.1 连接集群6.3.2 写入数据6.3.3 集群查询6.3.4 故障转移6.3.5 集群扩容6.3.6 集群收缩 6.4 分布式系统的限制…

幼儿园:人脸识别门禁技术,可以提高工作效率?

随着社会的不断发展和科技的飞速进步,人脸识别技术已经成为各行各业的一项重要工具。 在幼儿园管理中,人脸识别技术的应用不仅提高了安全性,也优化了接送流程,为幼儿园、家长和孩子们带来了更便捷的管理和服务体验。 客户案例一 …

快解析结合用友T+异地访问解决方案

用友T作为一款纯BS架构软件,外网用户只需打开浏览器,输入域名即可访问T服务器。但是由于网络原因,很多客户没有公网IP,使T远程访问无法实现。快解析云解析版结合T使用,无需公网IP、无需在路由器里开放端口,…

C++系列-第3章循环结构-26-认识do-while语句

C系列-第3章循环结构-26-认识do-while语句 在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/ 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 do-while循环…

Vue(一):Vue 入门与 Vue 指令

Vue 01. Vue 快速上手 1.1 Vue 的基本概念 用于 构建用户界面 的 渐进性 框架 构建用户界面:基于数据去渲染用户看到的界面渐进式:不需要学习全部的语法就能完成一些功能,学习是循序渐进的框架:一套完整的项目解决方案&#x…

Redis管道

问题引出 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。 2 服务端…

深入探究Protostuff枚举类型的序列化

背景: 有一天突然被一个群组排查线上问题,说是一个场景划线价和商品原价一模一样。看到问题时,我的内心毫无波澜,因为经常处理线上类似的问题,但了解业务后发现是上个版本经我手对接的新客弹窗商品算价,内心…

案例237:基于微信小程序的医院挂号预约系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

如何学习TS?

文章目录 一. 8种内置基础类型.ts二. void、never、any、unknown类型void类型never类型any类型unknown类型总结:void和any在项目中是比较常见的,never和unknown不常用。 三. 数组和函数类型定义.ts 一. 8种内置基础类型.ts /* eslint-disable typescrip…

vivado 路径分段

路径分段 与其他XDC约束不同,set_max_delay命令和set_min_delay在-from和-to选项的情况下,命令可以接受无效起始点列表或端点。当指定了无效的起始点时,正时发动机停止正时的传播通过该节点,使该节点成为有效的起点。 在以下示例…

65.乐理基础-打拍子-前附点、后附点

内容来源于:三分钟音乐社 上一个内容:前八后十六、前十六后八拍子-CSDN博客 前附点指的是一个附点八分音符加一个十六分音符的节奏型,如图1。 后附点指的是一个十六分音符加一个附点八分音符的节奏型,如图2。 前附点、后附点这两…

QLabelQPushButton和QLineEdit

QLabel 设置文件格式字体颜色背景 源码 设置图片 源码 设置gif 设置文本 源码 富文本 (Rich Text): 格式化选项:富文本支持各种格式化选项,如字体样式(粗体、斜体)、字体大小、颜色、超链接、图片插入、列表、表格等。文件格式&a…

基于ssm的企业在线培训系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装企业在线培训系统软件来发挥其高效地信息处理的作用&#x…

TransNeXt:稳健的注视感知ViT学习笔记

论文地址:https://arxiv.org/pdf/2311.17132.pdf 代码地址: GitHub - DaiShiResearch/TransNeXt: Code release for TransNeXt model 可以直接在ImageNet上训练的分类代码:GitHub - athrunsunny/TransNext-classify 代码中读取数据的部分修改…