三种自动化测试(接口自动化,UI 自动化,单元测试)保姆级教程

news/2024/9/15 4:57:26/ 标签: 测试, java-ee

自动化测试

自动化测试是指将人为的软件测试转换成自动化,让机器(也就是代码)来进行自动测试。自动化测试包括UI自动化,接口自动化,单元测试自动化。

  • 单元测试:即对项目或者业务中的一段代码进行单元测试,一般以一个类为一个单元进行测试,Java 中的单元测试框架是 Junit,测试方法必须使用 @Test 修饰;
  • 接口测试:即 API 测试,常见的接口自动化测试工具有 JMeter,Postman 等;
  • UI 测试:即对一些界面进行测试测试框架有 Windows客户端测试的 AutoIT,web测试的 Selenium 以及TestPlant, eggPlant,Robot framework,QTP等。

单元测试

Java 单元测试一般在 IDEA 中使用 Junit 框架进行测试目的是为了验证一个类中的方法是否符合预期,代码编写是否正确。在这里介绍 SpringBoot 整合 Junit5 的单元测试,例如当我们需要测试一个类中的方法是否正确时,需要在 test 目录中创建 测试类:
在这里插入图片描述

快捷创建测试类:
通过 Alt + Insert ,选择 Test 创建测试类:
在这里插入图片描述
在这里插入图片描述

测试类中,对于项目/业务中类的方法进行测试时,都需要使用 @Test 注解进行修饰,如下:
在这里插入图片描述

Junit 一些注意事项:

  • 测试方法必须使用 @Test 修饰
  • 测试方法必须使用public void进行修饰(可以是静态方法,即 static 修饰),不能带参数
  • 测试类一般使用Test作为类名的后缀
  • 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖
  • 测试代码的包应该和被测试代码包结构保持一致

常用注解(Junit5):

  1. @Test:将一个普通方法修饰成一个测试方法;
  2. @BeforeEach:会在每一个测试方法被运行前执行一次(有几个测试就执行几次);
  3. @AfterEach:会在每一个测试方法运行后被执行一次(有几个测试就执行几次);
  4. @BeforeAll:表示在所有单元测试之前执行(无论有几个测试都只执行一次);
  5. @AfterAll:表示在所有单元测试之后执行(无论有几个测试都只执行一次);
  6. @Timeout: 表示测试方法如果超过了指定时间将会返回错误。

接口测试

在这里简单介绍如何使用 Postman 进行接口测试(例如测试腾讯视频中的接口)

  1. 先找到接口
    打开页面,按下F12,点击NetWork,再点击Fetch/XHR,刷新一下接口就会显示出来,如下在这里插入图片描述
  2. 将接口导入到 Postman 中
    找到一个接口,右键进行复制,复制框里面4个其中的任意一个都可以在这里插入图片描述
    打开 Postman
    在这里插入图片描述
    没有什么报错的话就导入成功了(若出现报错可以试试复制其它几个),如下:
    在这里插入图片描述
  3. 进行测试
    测试点:
    • http 的请求方式 :get,post,delete 等等;
    • 参数测试:传递所有参数,传递部分参数,不传递参数,传递其它参数等;
      在这里插入图片描述
      在这里插入图片描述

UI 测试

对于 UI 自动化测试本文主要讲如何使用 Selenium 框架对 Web UI 进行自动化测试

什么是 Selenium

Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言
本文将基于 Selenium + Java 开展对自动化测试的学习。
原理:
在这里插入图片描述

搭建环境

从原理图中看出,既然要通过自动化代码操控浏览器就需要一个"媒介",那么首先就需要下载这样的一个媒介,来通过媒介操控浏览器。
在这里我使用的是 Chrome 浏览器(推荐使用),就需要下载一个 Chrome 浏览器的 webdriver 浏览器驱动,在下载的过程中需要注意浏览器的版本号与驱动的版本号相对应。Chrome 浏览器驱动传送门

webdriver 浏览器驱动下载

在这里插入图片描述
上图就是驱动的版本,找到与你的 Chrome 浏览器相对应的版本即可,例如你的浏览器版本是 114.0… 就可以下载以 114.0 开头的驱动。若此页面没有与你浏览器对应的版本号,可以点击可用性信息中心,如下:
在这里插入图片描述
点击之后的界面如下图:
在这里插入图片描述
然后找到相对应的版本下载:
在这里插入图片描述
下载完成后解压即可:
在这里插入图片描述

配置驱动

分为两种,根据实际情况进行配置:
第一种:Java 环境变量已经配置
那么只需要将 chromeddriver.exe 放到你的配置的 Java JDk bin 目录下即可。
例如:
在这里插入图片描述

第二种:没有配置 Java 环境变量
则需要针对刚才下载好的驱动进行配置

  1. 先将 chromeddriver.exe 应用程序放到谷歌浏览器所在的目录中;
    在这里插入图片描述
  2. 复制谷歌浏览器的路径,将该路径配置到环境变量中;
    在这里插入图片描述

自动化测试化项目创建

首先通过 IDEA 创建一个 Maven 项目,在创建好的 Maven 项目 pom.xml 里面配置 Selenium 依赖:
在这里插入图片描述

<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency></dependencies>

然后就只需要正常编写测试代码即可。例如:通过 Selenium 框架打开 Chrome 浏览器进入百度搜索页面,并在输入框中输入指定内容进行搜索

private static void test2() throws InterruptedException {// 创建驱动WebDriver webDriver = new ChromeDriver();// 打开百度webDriver.get("https://www.baidu.com");// 通过 css 选择器找到百度输入框WebElement element = webDriver.findElement(By.cssSelector("#kw"));// 在百度搜索框输入内容element.sendKeys("江边鸟");// 通过 css 选择器找到搜索按钮 并点击搜索sleep(3000);webDriver.findElement(By.cssSelector("#su")).click();//webDriver.findElement(By.cssSelector("#su")).submit();// 在输入框中清除 江边鸟sleep(3000);webDriver.findElement(By.cssSelector("#kw")).clear();}

当执行上述代码后:
程序就会将 Chrome 浏览器自动打开,并在百度搜索引擎当中输入 “江边鸟”,然后进行搜索,最后在将输入框中的内容进行清除
在这里插入图片描述
在这里插入图片描述

上述代码都是 Selenium 框架中的 API ,专门针对 webUI 进行自动化测试,只需要编写自动化代码,剩下的交给程序。对于 Selenium 框架的更多 API 详解,请参考后面的文章。


http://www.ppmy.cn/news/1518810.html

相关文章

浅谈基础的图算法——最短路算法相关例题讲解(c++)

例题讲解 P4667 [BalticOI 2011 Day1] Switch the Lamp On&#xff08;01最短路&#xff09; 题面翻译 题目描述 Casper 正在设计电路。有一种正方形的电路元件&#xff0c;在它的两组相对顶点中&#xff0c;有一组会用导线连接起来&#xff0c;另一组则不会。有 N M N\t…

python从入门到精通:文件操作

目录 1、文件编码 2、文件的读取 open( )打开函数 3、文件的写入 4、文件的追加 5、文件的操作&#xff08;综合案例&#xff09; 1、文件编码 因为计算机只能识别0和1&#xff0c;所以我们是通过编码技术&#xff08;密码本&#xff09;将内容翻译成0和1存入&#xff0…

python-word添加标题,段落,文字块

安装与使用python-docx 要使用必须先安装&#xff0c;要安装python-docx还是在Pycharm的终端&#xff08;Terminal&#xff09;中输入pip install python-docx&#xff0c;如下所示&#xff08;Successfully installed&#xff09;便是表示安装成功了。 新建与保存wor…

【Python基础】字符串类型

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、Python 字符串类型2.1 Python访问字符串中的值2.2 Python 转义字符2.3 Python 字符串运算符2.4 Py…

并发服务器

一、服务器 1.单循环服务器&#xff1a;同一时刻&#xff0c;只能处理一个客户端的任务&#xff1b; 2.并发服务器&#xff1a;同一时刻&#xff0c;可以处理多个客户端的任务&#xff1b; 3.TCP并发服务器&#xff1a; &#xff08;1&#xff09;多进程: &#xff08;2&a…

为什么搜索引擎可以检索到网站?

搜索引擎和爬虫&#xff0c;基于百度举例 为什么搜索引擎可以快速检索到所有对应页面&#xff1f; 搜索引擎能够快速检索到所有对应页面&#xff0c;主要归功于以下几个方面&#xff1a; 爬虫技术&#xff1a;自动遍历互联网上的网页。索引&#xff1a;将爬取的网页内容转换…

游戏出海,燃动全球,“安全”如何通关?

泼天的富贵落在了游戏圈&#xff0c;用事实打脸了男人消费不如狗的谬论。 这几天&#xff0c;无论是游戏圈内人还是圈外人&#xff0c;无人不知晓《黑神话&#xff1a;悟空》。这部头顶「3A国产游戏之光」的作品自6月8日预售以来&#xff0c;全平台销量超过800万份&#xff0c;…

【自动驾驶】控制算法(六)前馈控制与航向误差

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

【最新华为OD机试E卷】空栈压数(200分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

【机器学习】10. 朴素贝叶斯

贝叶斯理论 P ( H ∣ E ) P ( E ∣ H ) P ( H ) P ( E ) P(H|E) \frac{P(E|H)P(H)}{P(E)} P(H∣E)P(E)P(E∣H)P(H)​ 两个假设&#xff1a; 类别之间相互独立每个类别同等重要 P(E1 | yes) E1 个数 / yes 个数 0 频率问题 上述理论会遇到某个类别为0的情况&#xff0c;导致…

【Qt应用】Qt编写简易文件管理系统

目录 引言 一、准备工作 二、设计思路 三、创建项目和基本界面 四、目录浏览功能 实现效果 五、文件操作功能 5.1 设置添加文件与删除文件按钮 5.2 添加文件槽函数 5.3 删除文件槽函数 5.4 实现效果 六、文件搜索功能 6.1 准备工作 6.2 搜索按钮槽函数 6.3 实现…

Java中的注解(Annotation)

Java中的注解&#xff08;Annotation&#xff09;是一种用于在代码中添加元数据的机制。它们可以被用来为类、方法、变量、参数等元素添加额外的信息&#xff0c;这些信息在编译时或运行时可以被读取和使用。注解本身不会直接影响代码的执行&#xff0c;但可以通过反射等机制在…

汽车三元浸出液回收钯铑

汽车三元催化器是减少汽车尾气排放的关键部件&#xff0c;它含有铂、钯、铑等贵金属。这些金属在汽车尾气净化过程中起着重要作用&#xff0c;但使用一段时间后会因中毒、烧结等原因而失活。回收这些贵金属不仅可以减少环境污染&#xff0c;还能节约宝贵的资源。以下是汽车三元…

使用C标准库中的printf输出

1、增加文件系统调用 对系统调用进行了调整&#xff0c;一是将所有的系统调用实现转移 从头文件转移到C文件中&#xff1b; 二是增加几个有关文件打开和关闭的接口 主要是将系统调用做成单独的app库&#xff0c;这个库可以供其它所有的应用程序使用 2、导入newlib库&#xff…

CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版

CleanClip 是一款专为 Mac 用户设计的强大剪贴板历史管理工具。它能够自动保存您复制的内容,让您轻松访问和管理剪贴板历史记录,大大提高工作效率。 下载地址&#xff1a;CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版 主要特点 自动保存剪贴板历史 CleanClip 会自…

基于麻雀SSA优化BP神经网络多输入多输出的数据回归预测Matlab程序SSA-BP 含预测新数据程序

基于麻雀SSA优化BP神经网络多输入多输出的数据回归预测Matlab程序SSA-BP 含预测新数据程序 文章目录 一、基本原理1. SSA&#xff08;麻雀搜索算法&#xff09;2. BP&#xff08;反向传播神经网络&#xff09;3. SSA-BP回归预测的整合 二、实验结果三、核心代码四、代码获取五、…

disk manager操作教程 如何使用Disk Manager组件 Mac如何打开ntfs格式文件

macOS系统有一个特别明显的弱点&#xff0c;即不能对NTFS格式磁盘写入数据。想要适合Mac系统使用来回转换磁盘格式又十分麻烦&#xff0c;这该怎么办呢&#xff1f;Tuxera ntfs for mac作为一款Mac完全读写软件&#xff0c;大家在安装该软件后&#xff0c;能充分使用它的磁盘管…

python自动化脚本:让工作自动化起来

Python是一种流行的编程语言&#xff0c;以其简洁和易读性而闻名。它提供了大量的库和模块&#xff0c;使其成为自动化各种任务的绝佳选择。 我们将探讨9个Python脚本及其代码&#xff0c;可以帮助您自动化各种任务并提高工作效率。无论您是开发人员、数据分析师还是只是想简化…

跨境多账号登录如何防止IP、cookie和设备关联?

在当今数字化时代&#xff0c;拥有某个平台的多个账号是必要的&#xff0c;但如何防止这些账号之间产生关联&#xff0c;进而导致封号&#xff0c;却是一个需要谨慎对待的问题。 一、 多账号关联的主要因素 1. IP地址 2. Cookie和缓存 3. 设备指纹 二、如何防关联&#xff…

Vue——认识day06_class与style绑定

在Vue中&#xff0c;可以使用v-bind指令来将CSS样式动态地绑定到HTML元素上。有两种方式可以实现CSS与style的绑定&#xff1a; 对象语法&#xff1a;可以将一个包含CSS属性和值的对象传递给v-bind&#xff0c;将对象的属性与HTML元素的style属性进行绑定。例如&#xff1a; …