自动化测试、压力测试、持续集成

news2024/12/26 1:15:12

因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家,希望对需要的人有所帮助。

SoapUI 是什么?

SoapUI 是一个开源测试工具,通过 soap/http 来检查、调用、实现 Web Service 的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到 Eclipse,maven2.X,Netbeans 和 intellij 中使用。

SoapUI 的安装

下载地址,最好下载最新版本安装包,因为 SoapUI 是基于 java 开发的测试工具,3.0 以前版本的安装包没有集成 JRE,这样就得自己安装和配置 java 运行环境了。

SoapUI 的使用

1. 在主界面 File 菜单,点击“New REST Project”,填写你想要测试的url,根据我们的项目 Teacher Site 中的 url 举例:https://teacher-test.grapecitydev.com:

 

参照下图需要在 Resource 输入框输入 /Login/Login 路由,并在 Params 中输入登录时需要的查询参数 accountName 和 password。

2. 点击绿色按钮,SoapUI 发送登录请求,可以在右侧框中看到登录请求返回的结果。

根据 Teacher site 项目的业务需求,发送 Login 请求完成后还得发送 SchoolItemChange 接口才会返回用户登录成功后认证的 Token,如下图中 Set-Cookie 的值将会在下一个 GetOverview 接口的请求头中 Cookie 属性使用:

3. 接下来的第三个请求 GetOverview 如下图,在 Header 框中添加 Cookie 属性,值就是上一个请求 SchoolItemChange 返回的 Set-Cookie 值:

自动化测试

其实以上三个接口的调用,只是简单的测试接口是否调用正常,如果想要对三个接口的调用进行自动化测试,请看下面的分解:

1. 右键每一个接口下的 Request 请求,如图所示,选择”Add TestCase”项,依次为以上三个接口设置 Test Case,在 TestSteps 下分别有 Login,SchoolItemChange,GetOverview 三个 TestCases。

2. 大家有没有发现,在 Test Steps 下多了个 Set Cookie 项,这是干什么的呢?

这是通过 Groovy Script 语法,获取上一个请求的返回值(此处是获取 SchoolItemChange 接口的返回值”Set-Cookie”),并将”Set-Cookie”属性值赋予下一个请求 GetOverview 的请求头 Cookie 中,是不是和第2,3条很应景啊?!这样就很好的解决了接口自动化测试,不用复制粘贴请求之间依赖的返回值。

3. 接下来,就要为测试的接口添加 Assertion 断言,点击左下角的,弹出 Add Assertion 对话框,根据断言注解,选择需要的测试点,例如 Response SLA 表示请求发送后期望的响应时间:

 

Contains Assertion 则表示请求返回的字符串中包含指定的字符串。此断言适用对比的内容不超过65535个字符,因为 Soapui 基于 java 语言编写,这是 jvm 支持的最大字符个数:

4. 为解决上述不能超过65535个字符的问题,则需要为接口添加 Script Assertion,如下代码,表示将本地文件 GetOverview 01.txt 中的内容与请求返回中 HtmlOfPartialView 属性的值进行对比,判断两者内容是否相等:

5. 双击 Test Case,出现如下图,点击按钮,或者选中 Login 右键选择”Run from here”,则依次执行 Test Steps 步骤,如图所示,出现红色背景 Failed 字样,查看右下角 TestCase Log 框,可以看出是由于 Step 4 GetOverview 接口请求的响应时间 1272ms 大于断言中设置的时间 500ms:

发送邮件功能

当你希望某个接口请求的结果以邮件方式通知给你时,如下图所示,右键 Test Steps -> Add Step -> Groovy Script,添加 Send Email 脚本,其中 Username 和 Password 分别是公司邮件服务器的账户和密码,Internet Address 即为接收的邮箱地址。

”${teacher-test#TestCase#Getoverview#Response}”的顺序依次为

Test Suite name # Test Case name # Test Step name # Response:

压力测试

以上是功能性测试,接下来是压力测试,右键 Load Tests 创建测试用例,

Limit:60 即为压力测试的时间 60s,Thread 表示多线程,可以同时运行5个线程,Test Delay * Radom,表示随机延迟的时间数。

min 表示最小响应时间,max 表示最大响应时间,avg 为平均响应时间,last 表示上一次请求响应时间,cnt 表示请求数,tps 表示每秒处理请求数,bps 表示吞吐率,rat 表示错误率。

右键可以为请求添加断言,Max Errors 设置最大的错误数,Step Average 设置期望的平均时间,其他的依次类推:

如下图,可以选择不同策略的负载和性能测试:

最常用的是简单策略(Simple),如果你想运行功能测试,并想在10秒内延迟5个线程,则 Threads 设置为5,延迟 1000s,随机延迟比率0.5(即将导致延误5至10秒)。

方差策略(Variance),Threads 为方差的线程数量,Interval 为间隔设置所需的值。例如设置20个线程,间隔60和方差0.8,线程的数量将在第一个15秒从20增加到36,然后又减少到20,45秒后继续减少到4个线程,最后等到60秒时返回到初始值20。在统计图中我们很容易遵循这个方差:

线性策略(Thread),从一个线程到另一个线程的数量的运行。它的主要功能是确定某些统计数据变化或事件发生时的水平,例如设置开始和结束线程值(例如1 - 10),并设置持续时间(此例中每个线程至少30秒)获得准确的测量数据:

持续集成

在UI界面进行持续集成:右键项目名称 REST Project 1 -> 选择 Launch TestRunner,出现如下图,在 Basic Tab 页选择 TestRunner 安装路径:

在 Reports Tab 页选择报告输出文件夹:

点击 Launch 按钮,自动执行测试项目。

通过执行命令进行持续集成,以管理员身份打开 Command Prompt 对话框,执行如下命令:

testrunner.bat -s'teacher-test' -cLogin -r -j -f'D:\Trivals\SoapUI\Logs' D:\Trivals\SoapUI\REST-Project-1-project.xml

该命令行的各个参数含义如下:

  • s : The TestSuite to run, used to narrow down the tests to run
  • c : The TestCase to run, used to narrow down the tests to run
  • r : Turns on printing of a small summary report (see below)
  • j : Turns on exporting of JUnit-compatible reports, see below
  • f : Specifies the root folder to which test results should be exported

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

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

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

相关文章

github想传至远程仓库显示fatal: remote origin already exists. (远程来源已经存在 解决办法)

参考:https://blog.csdn.net/qq_40428678/article/details/84074207 在当我们输入git remote add origin https://gitee.com/(github/码云账号)/(github/码云项目名).git 就会报如下的错 fatal: remote origin already exists. 翻译过来就是:致命:远程…

zabbix自定义监控、钉钉、邮箱报警 (五十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、实验准备 二、安装 三、添加监控对象 四、添加自定义监控项 五、监控mariadb 1、添加模版查看要求 2、安装mariadb、创建用户 3、创建用户文件 4、修改监控模版 5、…

新版Chromedriver在哪下载(Chromedriver 116.0.5845.188的寻找之旅)

不知道什么时候Chrome自动升级到116.0.5845.188了,害得我原来的Chromedriver 114无法使用了,无奈之下只好重新去下载。 可寻遍网络,都没找到Chromedriver116的版本。网上大多网友给的下载网址是chromedriver.storage.googleapis.com/index.ht…

数据结构与算法之时间复杂度和空间复杂度(C语言版)

1. 时间复杂度 1.1 概念 简而言之,算法中的基本操作的执行次数,叫做算法的时间复杂度。也就是说,我这个程序执行了多少次,时间复杂度就是多少。 比如下面这段代码的执行次数: void Func1(int N) {int count 0;for…

Ubuntu 20.04 安装MySQL 8.0.34

MySQL安装 sudo wget https://cdn.mysql.com/archives/mysql-8.0/mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar下载MySQL文件。 sudo mkdir /mysql8创建目录。 sudo tar -xf mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar -C /mysql8进行解压。 需…

结构体基础知识——(OneNote笔记本)

结构体基础知识——&#xff08;OneNote笔记本&#xff09; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>//struct Stu //{ // //学生的相关属性 // char name[20]; // int age; // char sex[5]; // char tele[12]; //} s3, s4; //s3&#x…

RISC-V 基础指令汇总

加载指令 存储指令 PC寻址指令 auipc rd, imm这条指令把 imm &#xff08;立即数&#xff09;左移12位并带符号扩展到64位后&#xff0c;得到一个新的立即数&#xff0c;这个新的立即数是一个有符号的立即数&#xff0c;再加上当前 PC 值&#xff0c;然后存储到 rd 寄存器中。…

【面试经典150 | 滑动窗口】无重复字符的最长子串

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;滑动窗口 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等…

用git给github私有仓库上传文件

创建私有仓库可以参考这篇文章的前面7步&#xff1a; 关于Github私有仓库的创建 然后我想在私有仓库上传文件该怎么办呢&#xff1f; 在你的文件夹右键git bash 初始化git git init添加本地文件 git add .上传本地 git commit -m "first commit"设置branch&am…

NetSuite BOM成本查询

这是个23.2的新功能&#xff0c;如题所示是对BOM成本的一个查询工具&#xff0c;是对之前版本那个无用的“Costed Bill of Materials Inquiry”的一次救赎。 其重要的功能是&#xff1a; •基于BOM所使用的版本、工艺路线和成本模板&#xff0c;通过Break Down的方式计算一个装…

Spring学习笔记5 GoF之工厂模式

Spring学习笔记4 Bean的作用域_biubiubiu0706的博客-CSDN博客 出了GoF23种设计模式.还有javaee的设计模式(DAO模式,MVC模式) 设计模式:是一种可以被重复利用的解决方案 GoF23种设计模式可分为三大类: 创建型(5个):解决对象创建问题. 单例模式&#xff0c;工厂方法模式&#x…

18795-2012 茶叶标准样品制备技术条件

声明 本文是学习GB-T 18795-2012 茶叶标准样品制备技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了各类茶叶(除再加工茶)标准样品的制备、包装、标签、标识、证书和有效期。 本标准适用于各类茶叶(除再加工茶)感官品质…

2023 “华为杯” 中国研究生数学建模竞赛(E题)深度剖析|数学建模完整代码+建模过程全解全析

​ 问题一 血肿扩张风险相关因素探索建模 思路&#xff1a; 根据题目要求,首先需要判断每个患者是否发生了血肿扩张事件。根据定义,如果后续检查的血肿体积比首次检查增加≥6 mL或≥33%,则判断为发生了血肿扩张。 具体判断步骤: (1) 从表1中提取每个患者的入院首次影像检查…

机器学习之监督学习,无监督学习,强化学习相关概念

文章目录 1. 监督学习&#xff08;Supervised Learning&#xff09;2. 无监督学习&#xff08;Unsupervised Learning&#xff09;3. 强化学习&#xff08;Reinforcement Learning&#xff09;总结 机器学习可以按照模型使用情况分为三大类&#xff1a;监督学习、无监督学习和强…

如何在电脑上配置多个JDK环境

一、说明 在项目开发过程中&#xff0c;可能会使用到多个JDK。那么如何让一台电脑上的配置JDK版本&#xff0c;并实现版本之间的切换&#xff0c;这就是今天要达到的目的。 二、配置过程 1、环境变量的配置 这里以JDK8和JDK17为例&#xff0c;来演示多个JDK版本之间的切换。安…

Spring面试题21:说一说Spring的@Required注解和@Qualifier注解

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说Spring的@Required注解 @Required ,用于标记在注入的属性上。它表示被注解的属性在配置 Bean 的时候是必需的,如果没有正确配置,则会抛出…

【owt】构建m79的owt-client-native:使用vs2017

家里电脑换成了台式机,拷贝代码发现了三年前的owt客户端mfc工程。 不用下载第三方库,试着构建下: owt-client-native 我这里有3年前的代码,思索了下还是用vs2017构建吧: 重新构建一下 选用x86 的 vs2017 vs的命令行控制台 cls可以清理屏幕 之前构建过vs2022的webrtc原版 …

Java基础常考知识点(基础、集合、异常、JVM)

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有需要我的支持&#xff0c;请私信或评论留言&#xff01; Java基础常考知识点…

算法-堆、队列、分治法-合并 K 个升序链表

算法-堆、队列、分治法-合并 K 个升序链表 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/merge-k-sorted-lists 1.2 题目描述 2 题解 2.1 队列 2.1.1 解题思路 将各个有序子链表放入队列&#xff0c;两两合并&#xff0c;最后队列中剩的最后的子链表就是合并后…

【湖科大教书匠】计算机网络随堂笔记第3章(计算机网络数据链路层)

目录 3.1、数据链路层概述 概述 网络中的主机、路由器等都必须实现数据链路层 局域网中的主机、交换机等都必须实现数据链路层 从层次上来看数据的流动 仅从数据链路层观察帧的流动 数据链路层使用的信道 三个重要问题 封装成帧 差错控制 ​编辑可靠传输 3.2、封装成帧 介绍…