2022年全网最全最细最流行的自动化测试工具有哪些?

news2025/1/18 17:04:13

一:前言

随着测试工程师技能和工资待遇的提升,甚至有一部分的开发人员开始转入测试岗位,跨入自动化领域的测试攻城狮越来越多。在自动化测试领域,自动化工具肯定占据了核心的位置。 本文总结了常用的测试自动化工具和框架,这些工具和框架有助于更好地定位自己,以跟上软件测试的发展趋势

二、2022年自动化测试工具(框架)分类统计

1、Selenium
Selenium是一系列基于Web的自动化测试工具。它提供了一系列测试函数,用于支持Web自动化测试。这些函数非常灵活,它们能够通过多种方式定位界面元素,并可以将预期结果与系统实际表现进行比较。

作为一款强大的测试工具,Selenium具有以下几个特性:

(1)可对多浏览器进行测试,如IE、Firefox、Safari、Chrome、Android手机浏览器等。

(2)可支持多种语言,例如Java、C#、Python、Ruby、PHP等。

(3)跨平台,例如Windows、Linux、iOS、Android等。

(4)开源免费。

Selenium工具组

Selenium由以下几个工具组成,每一种都扮演着独特的角色。

  • Selenium IDE。Selenium IDE是一个用于构建脚本的初级工具。它是一个 Firefox 插件,拥有一个易于使用的界面。Selenium IDE 拥有录制功能,能够记录用户执行的操作,并将其导出为可重复使用的脚本(支持多种编程语言),然后用于执行测试。

  • Selenium 1。Selenium 1(Selenium-RC)是 Selenium 最主要的测试工具之一,它所具有的某些功能即使是新版的 Selenium 2 也无法支持。它能够通过多种语言(Java、JavaScript、Ruby、PHP、Python、Perl、和C#)编写测试代码,同时能支持几乎所有浏览器的测试。

  • Selenium 2。Selenium 2(WebDriver)作为新版的 Selenium 工具,代表未来 Selenium 的发展方向。这套全新的自动化测试工具提供了许多功能,包括一套组织性更好、面向对象的 API,并克服了在之前 Selenium 1 版本中测试的局限性。可以通过很少的修改就将Selenium 1的代码移植到 Selenium 2。同时,Selenium 2 也提供了向前兼容Selenium 1的接口。

  • Selenium Grid。Selenium Grid能够让 Selenium 1 的测试在多个不同的环境中运行,也能让测试并行执行。也就是说,各个测试能够在同一时间、不同机器上运行。这有两个好处。首先,如果拥有一套大规模的测试或执行缓慢的测试,可以通过 Selenium Grid 将测试在同一时间、不同机器上运行,从而大幅提高性能;其次,如果测试必须在多个环境中运行,那么 Selenium Grid 具有的“同一时间、不同机器”的特性也能够轻松做到这一点。不管怎么样, Selenium Grid 都能够大幅提高测试的效率。

本文主要介绍 Selenium 2(WebDriver)。

  • Selenium 2 提供了一套友好的、面向对象的 API (与 Selenium 1 的基于方法的 API 不同)。 Selenium 2 完全就是一套类库,不依赖于任何测试框架,不需要启动其他进程或安装其他程序,也不必像 Selenium 1 那样需要先启动服务。另外,二者所采用的技术方案也不同。 Selenium 1 是在浏览器中运行 JavaScript来进行测试,而 Selenium 2 则是通过原生浏览器支持或者浏览器扩展控制浏览器。WebDriver 支持 Firefox(FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)和 Chrome(ChromeDriver)浏览器。

Selenium 2(WebDriver)安装(Windows 环境)

我选择 Python 作为脚本开发语言,因此,需要先安装 Python 及相应工具,然后安装 Selenium 2(Selenium WebDriver)。

  1. 安装Python。前往 Download Python | Python.org 下载Python安装包,点击安装即可。
  2. 安装setuptools。setuptools 是下载、安装、升级、卸载 Python 包的工具。多种方法可以安装 setuptools,本文使用方法:前往 setuptools · PyPI 下载 ez_setup.py 文件,在此文件路径下运行 python 命令:python ez_setup.py,自动下载对应Python版本的 setuptools,自动安装。
  3. 安装pip。前往 pip · PyPI,下载 pip-6.0.8.tar.gz ,解压。cmd 下运行:python setup.py install。再切换到 Python27\Scripts目录,运行 easy_install pip。安装完毕。
  4. 安装Selenium。联网状态下,直接在Python27\Scripts目录输入命令:pip install -U selenium。即可。
  5. 下载、安装各浏览器的Driver。

完成以上步骤,Python环境和Selenium 2 均已安装完毕。下面测试一个简单的脚本:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://seleniumhq.org/')

脚本执行过程:

  1. 打开Firefox浏览器;
  2. 打开网页http://seleniumhq.org/;

上面的每一步的安装过程,均有多种方法(联网、不联网等)。自己在安装时,也可尝试其他方案进行安装。

2、robotframework

Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。

上面一段话是百度百科的简介,最开始是诺基亚团队(没听错)开发并提供支持。为什么是框架呢,因为他功能强大,可以自定义关键字拓展功能。基于python开发,只要会一点Python就可以把robotframework玩的很溜。当然不会编程也不要担心,因为这是一款非常简单易用的自动化测试框架。即便不会编程,也可以慢慢上手。

表格式“编程”,让你不再担忧看不懂代码

为什么第一个就拿出这个来说呢,因为许多测试人员,刚开始接触自动化,其实内心是比较纠结的。(听说要会编码,要是我编码很厉害我就直接开发了对么。)其实不是这样,找一个懂测试的开发人员很难,找一个会编程的测试人员更难。许多开发人员潜心研究技术,无暇去管测试哪些思路,但是测试人员不一样,闲暇之余学学编程,对测试开发自动化测试工具,性能测试的脚本都是有所帮助的。好吧扯远了。

为什么说是表格式编程呢。刚开始我接触robot framework 其实是不屑一顾的,毕竟这东西看起来一点都不高大上,还能支持中文,既比不上QTP 最新版本叫UFT 商业软件那么强大酷炫的UI 。更比不上 java+seleniums那样直接 eclipse 开代码就直接跑case那么酷炫。其实 rf 也有其优点,那就是上手简单,配置容易,很快就能让你感受到自动化测试的魅力。


图是用的人家的。这是在进行浏览器使用百度搜索的过程。大家可以看到,这个就是再进行脚本的开发了。

刚开始看 可能不是很明白,但其实很好理解。简单说一下这个表格传递的信息。

首先代码是一行一行执行的,左至右 上至下。第一行 open browser 浅蓝色。表示其本身是一个关键字。就是我们理解的函数。

open browser 这个函数 可以传参数进去,几个呢。三个,因为后面有三个格子是白色。(最后一行是close browser 后面没参数 所以后面格子灰色)

那么好理解了。第一行就是 打开浏览器(网址,浏览器,最后一个参数为空了,暂且不管,其实第二个也可以默认为空,不填chrome默认就是firefox,这里相相当于函数里有些内容是有初始值的,不传参就默认值。但有的是必须传进来的参数,比如这里的 网址)

第二行,input text 输入文字,同理 这也是个关键字。后面跟的是 文本框的元素的定位 以及 你要输入的文字内容。(不懂id=kw1为什么是定位的 百度)

第三行,click button 点击按钮 点哪个呢,id=su1的,这个参数就是这个百度搜索按钮的定位。(如何定位元素,这是web自动化的基本功,以后再讲)

sleep 2 休息 2秒

最后关闭浏览器。

没错,这就可以跑了。不信咱们可以起搭建环境试试。

3、appium

Appium是一个开源、跨平台的测试工具,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及Windows 平台。Appium使用WebDriver的json wire协议,来驱动IOS系统的UIAutomation库、 Android系统的UIAutomator框架。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性

Appium支持Selenium WebDriver支持的所有语言,如Java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们能用javascript来编写测试用例。同样,如果只使用Google的UIAutomater,我们就能用java来编写测试用例。Appium实现了真正的跨平台自动化测试

appium和selenium的关系

Appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势等。

Appium服务端定义了官方协议的扩展,为Appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载App。当然,Appium客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了Selenium 客户端,所以他们仍然可以用来运行通用的Selenium会话。

Appium相关名词介绍
Appium Server

Appium 的核心是一个web服务器,它提供了一套REST的接口。它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在 HTTP响应中返还给客户端。事实上,这种客户端/服务端的架构给予了许多的可能性:比如我们可以使用任何实现了该客户端的语言来写我们的测试代码。比如我们可以把服务端放在不同的机器上。比如我们可以只写测试代码,然后使用云服务来执行命令。

Appium server就是在命令行用appium命令打开的东西,默认监听4723端口。Appium server可以把请求接收并转义转发给中间件Bootstrap.jar(它是用java写的,安装在手机上)。

Bootstrap 接收appium的命令最终通过调用UiAutomator的命令来实现对手机的操作,最后执行的结果以Json Wire Protocol,由Bootstrap返回给appium server,再返回给Client端,Client会汇总操作结果

Session

自动化始终围绕一个session进行,客户端初始化一个seesion(会话)来与服务端交互,不同的语言有不同的实现方式,但是他们最终都是发送为一个POST请求给服务端,请求中包含一个JSON对象,被称作“desired capabilities”。此时,服务端就会开启一个自动化的 session,然后返回一个 session ID,session ID将会被用户发送后续的命令。

Appium Client

Appium Client 有很多语言库。包括 Java, Ruby, Python, PHP, JavaScript 和 C#,这些库都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的时候,你只需使用这些库代替常规的 WebDriver 库就可以了,我们写脚本的时候用对应的IDE开发工具即可,如java端用eclipse,python端用pycharm。

Appium desktop

我们提供了 GUI 封装的 Appium server端下载,它封装了运行 Appium服务端的所有依赖,而不需要担心怎样安装Node.js。其中还包括一个Inspector工具,可以帮助你检查应用的界面层级让你更方便地编写测试用例。

Bootstrap

实质上是一个jar包,在appium建立和手机端通讯的时候会将此jar包推送到手机中去,负责在手机端和appium server的通讯,将指令下发给UIAutomator。

Bootstrap可以理解为它是一个uiautomator的测试脚本,它的入口类Bootstrap继承于UiAutomatorTestCase,所以UiAututomator可以正常运行它,它也可以正常的使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator的命令的关键。

其次,它是一个socket服务器,它专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理。

最后,它处理的是appium从pc端过来的命令,是一系列的请求。

UIAutomator

Android端真正实现App自动化测试的框架,appium最终会通过Bootstrap.jar将指令发送到UIAutomator,通过UIAutomator来定位元素操作元素。

4.QTP(UFT)

QTP简介

QTP是Quick Test Professional的简称,是一种自动测试工具
使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本
因此在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等

QTP基本功能

HP QuickTest Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例

QTP软件特点

QTP是一个侧重于功能的回归自动化测试工具
QTP支持的脚本语言是VBScript
QTP支持录制和回放的功能
QTP通过三类属性来识别对象:a)Mandatory; b)Assistive; c)Ordinal identifiers
Action是QTP组织测试用例的具体形式,拥有自己的DataTable和Object Repository,支持Input和output参数字

QTP使用步骤

QTP进行功能测试的测试流程
[制定测试计划]——>[创建测试脚本]——>[增强测试脚本功能]——>[运行测试]——>[分析测试结果] 大致五个步骤

5.其他常见的自动化工具汇总

当然除了这些主流的工具之外,市面上也还存在其他的一些【非主流】的工具或框架,这里就不在一 一列举。


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

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

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

相关文章

QT_day2

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为…

rust学习——函数返回值

概念 Rust 中的函数定义以 fn 开始,后跟着函数名和一对圆括号。大括号告诉编译器函数体在哪里开始和结束。 特殊的地方——函数返回值 错误的写法 正解1 去掉分号 fn main() {let x plus_one(5);println!("The value of x is: {}", x); }fn plus_…

c++_learning-进阶部分

文章目录 类:抽象类:类、类作用域:类成员访问权限:使用细节:成员函数的修饰符const、mutable:const在类中的使用:mutable: this:返回自身对象的引用构造函数(…

思科 Packet Tracer实验(一)

思科 Packet Tracer实验(一) ​ Cisco Packet Tracer 是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖曳方法建立网络拓扑&#…

金山终端安全系统V9.0 SQL注入漏洞复现

0x01 产品简介 金山终端安全系统是一款为企业提供终端防护的安全产品,针对恶意软件、病毒和外部攻击提供防范措施,帮助维护企业数据和网络。 0x02 漏洞概述 金山终端安全系统V9.0 /inter/update_software_info_v2.php页面存在sql注入漏洞,该…

李彦宏:我们即将进入一个AI原生的时代|百度世界2023

“大模型带来的智能涌现,这是我们开发AI原生应用的基础。” 10月17日,李彦宏在百度世界2023上表示。当天,李彦宏以《手把手教你做AI原生应用》为主题发表演讲,发布文心大模型4.0版本,并带来新搜索、新地图等十余款AI原…

时间序列预测 Graph-WaveNet:Graph WaveNet for Deep Spatial-Temporal Graph Modeling

Graph-WaveNet Graph WaveNet for Deep Spatial-Temporal Graph Modeling1.概述2.提出问题 & 解决策略 & 模型结构3.实验结果 ** Graph WaveNet for Deep Spatial-Temporal Graph Modeling ** 1.概述 时空图建模是分析系统中各组成部分的空间关系和时间趋势的一项重…

从裸机启动开始运行一个C++程序(十)

前序文章请看: 从裸机启动开始运行一个C程序(九) 从裸机启动开始运行一个C程序(八) 从裸机启动开始运行一个C程序(七) 从裸机启动开始运行一个C程序(六) 从裸机启动开始运…

算法基础学习|二分

二分 模板 整数二分模板 bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid 1, r]时使用&#xff08;即寻找左边界使用&#xff09;&#xff1a; int bsearch_1(int l, int r) {while (l < r){int mid l r >> 1;if (…

最新AI创作系统ChatGPT源码+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

Cocos Creator3.8 项目实战(十)使用 protobuf详细教程

在 Cocos Creator 中使用 protobuf.js 库可以方便地进行协议的序列化和反序列化。 下面是使用 protobuf.js 的详细说明&#xff1a; 一、protobuf环境安装 1、安装 npm protobuf环境安装安装需要使用 npm 命令进行&#xff0c;因此首先需要安装 npm 。 如果你还没安装 npm …

编程小白的自学笔记十六(python办公自动化操作EXCEL表格)

系列文章目录 编程小白的自学笔记十五&#xff08;python办公自动化操作EXCEL表格&#xff09; 编程小白的自学笔记十四&#xff08;python办公自动化创建、复制、移动文件和文件夹 编程小白的自学笔记十三&#xff08;python办公自动化读写文件&#xff09; 编程小白的自学…

网页下拉菜单

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><form action""> <select name"cars"> <option value"vol…

【论文阅读】点云地图动态障碍物去除基准 A Dynamic Points Removal Benchmark in Point Cloud Maps

【论文阅读】点云地图动态障碍物去除基准 A Dynamic Points Removal Benchmark in Point Cloud Maps 终于一次轮到了讲自己的paper了 hahaha&#xff0c;写个中文的解读放在博客方便大家讨论 Title Picture Reference and prenotes paper: https://arxiv.org/abs/2307.07260 …

Win10+MX350+CUDA10.2+Python3.9配置Detectron2

配置步骤: 1. 创建一个新的虚拟环境 `conda create -n 2pcnet python=3.9`(事先安装好Anaconda3) 2. 激活并进入环境: `activate new_env` 3. 安装CUDA 查看电脑显卡型号:控制面板-管理工具-计算机管理-设备管理器-显示适配器(我的是MX350) 确定显卡支持的CUDA版…

【linux】基础IO+系统文件IO+文件描述符分配规则

基础IO系统文件IO文件描述符文件描述符分配规则 1.重新谈论文件2.重谈文件操作&#xff08;C语言&#xff09;2.1C文件接口 3.系统文件IO3.1open3.2close3.3write3.4read3.5lseek3.6总结 4.如何理解文件5.文件描述符&#xff08;fd&#xff09;分配规则 自我名言&#xff1a;只…

【LeetCode刷题(数据结构与算法)】:数据结构中的常用排序实现数组的升序排列

现在我先将各大排序的动图和思路以及代码呈现给大家 插入排序 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a; 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止&#xff0c;得到一个…

“第四十三天”

这个是我自己写的&#xff0c;下面那个是看的别人的&#xff0c;其实大致都是一样的&#xff0c;通过四次循环&#xff0c;挨个求和比较&#xff0c;都很麻烦&#xff0c;但重点在于&#xff0c;对于已知变量的运用&#xff0c;当我需要在最内层循环用变量确定a数组组元时&…

数据库备份与恢复(实战mysqldump+bin-log)

一、为什么要进行数据库备份&#xff1f; 常见数据库备份的应用场景如下&#xff1a; 数据丢失应用场景&#xff1a; 人为操作失误造成某些数据被误操作 软件 BUG 造成部分数据或全部数据丢失 硬件故障造成数据库部分数据或全部数据丢失 安全漏洞被入侵数据恶意破坏 非数据丢…

基于骑手优化优化的BP神经网络(分类应用) - 附代码

基于骑手优化优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于骑手优化优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.骑手优化优化BP神经网络3.1 BP神经网络参数设置3.2 骑手优化算法应用 4.测试结果…