7个超好用的测试框架(总有一款适合你)

2023-11-02

昨天吃饭的时候和同事聊到测试框架,于是决定根据自己的实战工作经验总结一波好用的测试框架。本来文章里一共11个的,最后想想还是剔除掉了Maxim、Cypress、Gauge和ZTF(Zentao Testing Framework)。

工具在精而不在多,毕竟还是得以我们测试工程师平常用的最多的为基准。

另外,当你学习一个新的工具时,建议你直接看官方文档。(以下工具的官网链接,我都帮大家列出来了)

虽然官网常常是英文的,但是它也是最权威、最官方的。百度直接查的话,有的文章常常有错误,或者说文中所说内容已经过时了,小白很容易被误导。而且程序员难免要接触英文,当你习惯看官方文档后,你会发现自己的英文水平也在不知不觉间提高了。

好了,不说废话直接进入正文:

目录如下:

1、Junit
2、Selenium
3、TestNG
4、Cucumber
5、pytest
6、Appium
7、ATX

我们一个个来说:

一、Junit(白盒测试、API自动化、UI自动化)

【官网】

https://junit.org/junit5/

【简介】

Junit是一个面向Java编程语言的单元测试框架。

单元测试:针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,对Java编程语言进行单元测试,说白了就是对Java的方法进行测试。

用 Junit 编写单元测试的好处有:

非常简单地组织测试代码,并随时运行它们。
可以自动生成测试报告,收集成功的测试用例和失败的测试用例,统计测试成功率和代码覆盖率。
几乎所有的IDE工具都集成了Junit。
任何Java开发者都应当学习并使用Junit编写单元测试;同时,Java 技术栈的测试或者测试开发工程师,也可以学习 Junit 来作为自动化测试底层框架。

Junit目前最新版本是5。

【使用场景】

常用于单元测试(白盒测试)
自动化测试的用例管理和用例执行框架(API自动化、UI自动化)。
在这里插入图片描述

二、Selenium(Web自动化、爬虫)

【官网】

https://www.selenium.dev/

【简介】

Selenium 是使用最为广泛的 Web 自动化测试(UI自动化)框架之一。

Selenium 可以完全模拟用户对主流浏览器进行操作,主要包括鼠标事件和键盘事件。

鼠标事件:右击、双击、拖动、悬停。
键盘事件:Keys()类提供了键盘上几乎所有按键的方法,可以模拟各种键盘输入。
Selenium 支持八种元素定位方式:

id定位: find_element_by_id()
name定位: find_element_by_name()
class定位:find_element_by_class_name()
tag定位:find_element_by_tag_name()
link定位:find_element_by_link_text()
partial_link定位:find_element_by_partial_link_text()
xpath定位:find_element_by_xpath()
CSS定位:find_element_by_css_selector()
兼容性方面,Selenium 支持 Chrome、FireFox、Safari 等主流浏览器;

并且 Selenium 对 Java 和 Python 都提供了便捷的API调用。

【使用场景】

UI 自动化

爬虫
在这里插入图片描述

三、TestNG(白盒测试、API自动化、UI自动化)

【官网】

https://testng.org/doc/index.html

【简介】

TestNG 是 Java中一个很流行实用的单元测试框架。

它的灵感来源于 Junit ( java 的单元测试框架) 和 Nunit ( .net 的单元测试框架)。

但是它又在此基础上引入了新的东西,使得它更加强大。

关于注解特性方面,可以参考下表:
在这里插入图片描述
TestNG 和 JUnit 还有两个比较明显的区别:

在Junit 4 中,如果我们需要在方法前面使用 @BeforeClass 和 @AfterClass ,那么该测试方法则必须是静态方法。TestNG 在方法定义部分则更加的灵活,它不需要类似的约束。
TestNG 中子类不会运行父类中的 @BeforeClass 和 @AfterClass, 而在Junit中会先运行父类的@BeforeClass,再运行自己的 @BeforeClass;而 @AfterClass 是先运行自己的,再运行父类的。
经过一番对比之后,TestNG 在参数化测试、依赖测试以及套件测试(组)方面功能比 Junit 更加强大,并且包含了几乎 Junit 的所有功能,所以建议优先选择 TestNG。

【使用场景】

常用于单元测试(白盒测试)

自动化测试的用例管理和用例执行框架(API自动化、UI自动化)
在这里插入图片描述

四、Cucumber(API自动化、UI自动化)

【官网】

https://cucumber.io/

【简介】

自动化测试用例越写越多,也越来越难维护。

开发看不懂测试写的代码,测试也看不懂测试写的代码,那是因为代码不讲人话。

如何才能做到面向“注释”编程?BDD给出了答案。

BDD:Behavior-Driven Development ,也就是行为驱动开发。

BDD使用的叫做Gherkin的语言,它的理念是使用自然语言来描述功能,而且强调的是使用例子来说明需求功能。是不是跟敏捷开发中的用户故事(User Story)很像?嗯,因为它们都是一个妈生的。

使用这种方法可以让非技术人员、客户可以参与到需求的确认与验收当中。

以下是用 Cucumber 写出的 BDD 风格的测试用例 Demo :

// Given 前置(预置)条件。(一般用于定义一个变量等)
@Given("today is Sunday")  
public void today_is_Sunday() {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}

// When 当xxx的时候(相当于 if )
@When("I ask whether it's Friday yet") 
public void i_ask_whether_it_s_Friday_yet() {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}

// Then 那么将要做xxx操作。
@Then("I should be told {string}")
public void i_should_be_told(String string) {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}

就像讲故事一样,来梳理代码逻辑。

【使用场景】

自动化测试用例管理和用例执行(API自动化、UI自动化)。
在这里插入图片描述

五、pytest(白盒测试、API自动化、UI自动化)

【官网】

https://docs.pytest.org/en/6.2.x/

【简介】

pytest 是 python 语言中一款强大的单元测试框架(也是最好用的单元测试框架,不服来战),用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。

当然,如果你是个 pythoner 的话,你可能也多多少少听说过 unittest。

其实论用途而言,pytest 和 unittest 用途不多,都是优秀的单元测试框架。

但是 pytest 在 unittest 的基础上,丰富了不少功能,而且比 unittest 更简洁高效,pytest + allure 还可以输出更加美观的测试报告,pytest在数据驱动上的支持,也是略优于unittest。

所以还是可以优先选择 pytest。

【使用场景】

常用于单元测试(白盒测试)
自动化测试的用例管理和用例执行框架(API自动化、UI自动化)。
在这里插入图片描述

六、Appium(移动端的UI自动化测试)

【官网】

http://appium.io/

【简介】

在移动端的 UI自动化 测试领域,带头大哥当属 Appium。

Appium 是基于 Nodejs 的一款 UI自动化 测试框架。

支持多平台(Android、iOS等)

支持多语言(python、java、ruby、js、c#等)

Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
在这里插入图片描述
之前曾看过一则新闻,Appium 已经进军 AI 测试(基于AI查找控件)的领域了,不愧是龙头大哥。

【使用场景】

移动端的UI自动化测试
一般会结合单元测试框架去开发UI自动化测试框架。

Java:TestNG + Appium + Jenkins

Python:Pytest + Appium + Allure + Jenkins
在这里插入图片描述

七、ATX(移动端的UI自动化测试)

【官网】

https://github.com/NetEaseGame/ATX

【简介】

ATX(AutomatorX) 是一款(网易)开源的自动化测试工具,支持测试iOS平台和Android平台的原生应用、游戏、Web应用。

使用Python来编写测试用例,混合使用图像识别,控件定位技术来完成游戏的自动化。

附加专用的IDE来完成脚本的快速编写。

ATX的生态圈:

[底层驱动]

安卓(Android) https://github.com/openatx/uiautomator2 简称u2
苹果(iOS) https://github.com/openatx/facebook-wda
[元素定位]

Weditor https://github.com/openatx/weditor
[设备管理]

atxserver2 https://github.com/openatx/atxserver2

[测试框架]

ATX-Test pengchenglin/ATX-Test

【使用场景】

移动端的UI自动化测试
一般会结合单元测试框架去开发UI自动化测试框架。

Python:Pytest + uiautomator2/wda + Allure + Jenkins
在这里插入图片描述
以上7个测试框架,都是臻叔实际工作中最常用到的。如果你是刚入门测试的同学,可能看到这里会一头雾水。

没关系,你可以先大概了解下这些最常用的测试框架,之后臻叔也会陆续把我之前学习这些工具的笔记整理好,发出来供大家参考。

最后再小结一下:

1)Java的白盒测试、API自动化、UI自动化:

Junit(对Java的方法进行测试);
TestNG(相比Junit,参数化测试、依赖测试以及套件测试更好用,建议优先选这个);
2)python的白盒测试、API自动化、UI自动化:

pytest(功能更多,更简洁高效,优于unittest )。

3)API自动化、UI自动化:

Cucumber(面向“注释”编程)。

4)移动端的UI自动化测试:

Appium(基于 Nodejs,多平台多语言,OSX、Win和Linux上也能用 )
ATX(只支持iOS、Android)
5)UI自动化、爬虫:

Selenium(兼容性好,Web自动化必选)。

学习安排上

如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

在这里插入图片描述

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片进群即可自行领取

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

7个超好用的测试框架(总有一款适合你) 的相关文章

  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • msyql 异常,别干着急,70%的问题都在这里!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • 微信小程序 组件间关系

    完整微信小程序 Java后端 技术贴目录清单页面 必看 定义和使用组件间关系 有时需要实现这样的组件
  • Linux 压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    Linux 压缩 解压文件的 4 种方式 tar gzip gunzip zip unzip 7z命令使用方法 文章目录 Linux 压缩 解压文件的 4 种方式 tar gzip gunzip zip unzip 7z命令使用方法 1 t
  • JS 读写文件

    用js不能直接读取文件 但是可以利用浏览器提供的activex来实现读写文件的方法 只在IE下测试过 其他浏览器下的activex对象不太清楚 可以网上搜一下 具体读写文件的代码如下 function createAndReadFile v
  • UE4 - 海洋材质水下效果的修改

    屏幕前的污渍MASK修改位置如下 水下扭曲效果 强度修改位置如下 这里改0 1是无效的 只有0和1的区别 如果要调整波纹强度 需要到材质里修改 500的强度改为200 或者100 就很弱了 镜头光晕增加的地方
  • ThreadLocal与InheritableThreadLocal的实现原理

    文章目录 ThreadLocal介绍 使用方式 set 问题 InheritableThreadLocal介绍 源码 方案 ThreadLocal介绍 threadLocal的特点就是与线程绑定 一般通过这种隐式传参的方式来传递上下文 比如
  • vue实现高德地图点聚合功能

    效果截图展示 高德地图点聚合功能 1 创建地图 new AMap Map 示例 this map new AMap Map container resizeEnable true 是否监控地图容器尺寸变化 center 105 34 初始化
  • 终于来了!耗时268天,7大模块、2983页58万字,Android开发核心知识笔记!对标阿里P7!

    版权声明 本文为博主原创文章 未经博主允许不得转载 https www jianshu com u 3348b92f77a4 前言 转眼就快到 金九银十 又是个面试求职的黄金期 近来许多网友都在求一份完整 系统的学习资料和最新的大厂面试真题
  • Objective-C中的@dynamic

    Objective C中的 dynamic 一 dynamic与 synthesize的区别 property有两个对应的词 一个是 synthesize 一个是 dynamic 如果 synthesize和 dynamic都没写 那么默认
  • 【Linux】线程池

    文章目录 1 线程池概念 2 线程池的优点 3 线程池的应用场景 4 线程池的实现 5 STL和智能指针和线程安全 5 1其他常见锁 5 2读写锁 1 线程池概念 线程池是一种线程使用模式 线程过多会带来调度开销 进而影响缓存局部性和整体性
  • Linux UDP编程流程

    文章目录 UDP编程流程 UDP协议无连接的特点 UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接 不可靠的 数据报服务 服务器端和客户端没有什么本质上的区别 编程流程如下 socket 用来创建套接字 使用 udp 协议时
  • 友盟埋点详解

    数据埋点让产品或运营等相关人员能按照具体的需求 定制性地统计较为复杂的用户数据 例如想要追踪用户的行为 观察页面相关点击数据 关键路径转化率 分析某个事件活动效果时 就需要事先进行数据埋点 关于友盟的初始化配置不是此文的重点 网上一搜一堆的
  • Pycharm配置——解释器(interpreter)

    今天打开pycharm运行一段代码 结果遇到了这个问题 以上应该是没有配置解释器的问题 那我是怎么解决这个问题的呢 1 打开文件 File 2 打开设置 Setting 3 打开新project的默认设置 4点击project Interp
  • vue3使用高德地图api,海量点,多边形围栏,热力图,轨迹线(二)

    五 MassMarks海量点标记 let mass 此处我定义了6种海量点图标 此处url我用的是项目中本地引入的图片 也可以填在线url链接 props infoList是项目后端返回的所有点的信息数组 其中每个点对象有个style字段
  • ArcGIS Pro 一打开Notebook笔记本工具软件就崩溃(停止运行)

    先说结论 如果对于ArcGIS Pro的笔记本工具 包括新建 添加 打开等一切操作 只要一点开 ArcGIS Pro就停止运行 一个可能的原因是Temp文件夹或者是其他文件的路径中有中文 可以尝试将路径修改为全英文 再次运行 其实这个问题是
  • 程序员的自我修养--链接、装载与库笔记:可执行文件的装载与进程

    可执行文件只有装载到内存以后才能被CPU执行 1 进程虚拟地址空间 程序和进程有什么区别 程序 或者狭义上讲可执行文件 是一个静态的概念 它就是一些预先编译好的指令和数据集合的一个文件 进程则是一个动态的概念 它是程序运行时的一个过程 很多
  • centos开放端口号的常用命令

    1 开放端口 firewall cmd zone public add port 5672 tcp permanent 开放5672端口 firewall cmd zone public remove port 5672 tcp perma
  • spring cloud项目升级spring boot 2.0爬过的坑

    注 升级后spring boot为2 0版本 spring cloud为Finchley M8版本 2 0官方文档地址 https docs spring io spring boot docs current reference html
  • 活动报名丨LLaMA一作:如何构建开源高效的基础语言模型(智源Live 38期)

    4月26日 星期三 下午16 00 17 30 智源LIVE 第38期 线上活动上 Meta AI研究科学家 LLaMA一作Hugo Touvron将分享 LLaMA Open and Efficient Foundation Langua
  • DOM4J对SOAP的返回信息解析

    用DOM4J的XML解析式拿不到节点的 所以网上利用DOM4J提供的VisitorSupport解决此问题 不废话 直接看代码 package com starhub util import org dom4j Document impor
  • 7个超好用的测试框架(总有一款适合你)

    昨天吃饭的时候和同事聊到测试框架 于是决定根据自己的实战工作经验总结一波好用的测试框架 本来文章里一共11个的 最后想想还是剔除掉了Maxim Cypress Gauge和ZTF Zentao Testing Framework 工具在精而