金融项目实战 04|JMeter实现自动化脚本接口测试及持续集成

目录

一、⾃动化测试理论

二、自动化脚本

1、添加断言

1️⃣注册、登录

2️⃣认证、充值、开户、投资

2、可重复执行:清除测试数据+脚本按指定顺序执行

1️⃣如何可以做到可重复执⾏?

2️⃣清除测试数据:连接数据库+setup线程组

        ①明确清除那些数据?

        ②这些数据在那个库、那个表?

        ③分析sql语句

        ④查询sql(确认sql语句是否正确)

        ⑤删除sql

        ⑥使用jmeter连接数据库,执行sql语句

         ⑦脚本按指定顺序执行

三、持续集成

1、持续集成理论

2、脚本管理:脚本上传到gitee

1️⃣方式一:pycharm

2️⃣方式二:命令行

3、配置


一、⾃动化测试理论

🔴什么是⾃动化测试?

  • 让程序或⼯具代替⼈为执⾏测试⽤例

🔴什么样的项⽬适合做⾃动化?

  • 1、项⽬周期⻓ --多⻓算⻓?(⾃⼰公司运营项⽬)
  • 2、需求稳定(更多指具体功能/模块)
  • 3、需要回归测试(电商、⾦融、部队、对外运营的项⽬)

 🔴⾃动化测试⽤例覆盖率?

  • 上限:全部的功能⽤例执⾏⾃动化。-- 基本不可能。
    • 1、有些⽤例能去做,⽽不去做(配置功能,不常⽤)
    • 2、有些⽤例都不能做⾃动化(如:图⽚上的⽂字)
  • 公司:
    • 1、如果⾃动化⽤例只覆盖业务线,覆盖率10~20%
    • 2、好点的公司,⾃动化覆盖40%~60%

🔴 ⾃动化测试与功能测试区别--脚本执⾏层⾯?

  • 1、⾃动化脚本可重复执⾏
  • 2、功能脚本是靠⼈眼睛进⾏断⾔,⾃动化是靠⼯具或程序进⾏断⾔。

🔴⾃动化测试归属什么测试?

  • 归属:功能测试(原因:⾃动化测试使⽤的⽤例都是功能的⽤例)

🔴⾃动化测试实现⽅式?

  • 1、⼯具
  • 2、代码

🔴⾃动化测试分类

  • ui⾃动化(web、app、win32)
  • 接⼝⾃动化

二、自动化脚本

如何设置⾃动化脚本?

  • 1、使⽤程序或⼯具断⾔
  • 2、可重复运⾏

1、添加断言

 只用到了断言中 响应断言 和响应代码两个功能,对响应体和响应代码进行断言。 

1️⃣注册、登录
注册接口
登录接口,这里开发返回错别字,这里为了断言通过,只判断了部分字

提示:

        1、图⽚验证码使⽤响应断⾔→断⾔状态码

        2、其他全部使⽤响应断⾔判断响应体的描述信息,因为JSON断言会对结果的判断过于标准,健壮性差。

        3、依赖接⼝不⽤断⾔,只需断⾔被测接⼝。(如:注册接口依赖图⽚验证码、短信验证码,只需要断⾔注册即可。)

2️⃣认证、充值、开户、投资

提示:

        1、断⾔内容来源预期结果,预期结果⼀般情况与实际结果⼀致。⽂字偏差看⼤概意思是否⼀样,如果不 ⼀样,那就是缺陷。

        2、看实际结果是否有明确提示错误原因和引导信息。如果有就通过,否则就是失败。

2、可重复执行:清除测试数据+脚本按指定顺序执行

1️⃣如何可以做到可重复执⾏?
  • 1、清除测试数据(已注册数据、造借款数据(因为投资业务执行需要已经有借款的信息))
  • 2、脚本按指定顺序执⾏
2️⃣清除测试数据:连接数据库+setup线程组
        ①明确清除那些数据?

                1、删除已注册的⼿机号(因此注册过的手机再跑注册接口会报错)

                2、造数据(因为投资业务依赖已经存在借款标)

                提示:在⼯作中找开发确认涉及那些表。

        ②这些数据在那个库、那个表?

                库:czbk_member

                表:

                        mb_member(会员主表)

                        mb_member_info(会员信息表)

                        mb_member_login_log(会员登录⽇志)
                        mb_member_register_log(会员注册⽇志)

                        提示:以上表找开发获取。

        ③分析sql语句

1、mb_member、mb_member_register_log直接使⽤phone字段进⾏过滤删除

2、mb_member_info、mb_member_login_log必须配合mb_member表的id进⾏关联查询,再删除。

【总结】删除手机号,不仅要删除有phone字段的信息,还要删除其他有主键外键关联的表信息

        ④查询sql(确认sql语句是否正确)

        ⑤删除sql
delete没有直接后面跟from的原因:联合查询时要删除记录,需要指明要删除那张表的记录

        ⑥使用jmeter连接数据库,执行sql语句

        性能测试04|JMeter:连接数据库、逻辑控制器、定时器-CSDN博客 

                 首先,添加数据库连接池并配置。

jdbc:mysql://121.43.169.97/czbk_member?allowMultiQueries=true

allowMultiQueries=true:开启批量执⾏sql语句。(因为默认只执行一条sql语句)

                然后,添加一个setup线程组,命名为“清除测试数据”,在该线程组下添加 jdbc请求执⾏sql语句。

删除已注册的手机号
构造借款数据;
具体sql语句看: 金融项目实战 03|JMeter脚本实现手工接口测试-CSDN博客中二、4

注意:

        1、因为要添加多条sql语句,所以每个sql语句结尾需要使⽤分号。如果一条则加不加分号都无所谓。

        2、Query Type:选择Callable Statement

         ⑦脚本按指定顺序执行

【总结】到此,实现了批量运行该测试计划,无需为测试数据的一次性特性而每次改数据。

三、持续集成

结合这篇文章看: 

持续集成 02|Jenkins介绍与安装、Postman集成Jenkins、代码集成Jenkins-CSDN博客 

1、持续集成理论

🔴什么持续集成?

  •  通过⼀款⼯具(jenkins)持续⾃动集成代码。

🔴持续集成(CI)⼯具最常⽤啥?

  • Jenkins

🔴通过jenkins⼯具运⾏脚本的本质什么?

  • 运⾏脚本的命令
  • jmeter -n -t 脚本.jmx -l 结果.txt -e -o ⽬录

🔴持续集成所依赖的环境是什么?

  • 1、jenkins环境:jdk、jenkin.war
  • 2、运⾏脚本本环境:newman 、jmeter、jkd、python、pytest,具体用哪个环境,要看写脚本用的什么工具或语言。

🔴持续集成运⾏脚本的⽅式有哪些?--脚本在哪⾥放?

  • 1、项⽬托管平台(github、gitee、gitlabe)
  • 2、jenkins服务器(将脚本从托管平台下载到jenkins服务器本地,调⽤命令去执⾏)

2、脚本管理:脚本上传到gitee

1️⃣方式一:pycharm
  • 通过pycharm⼯具以可视化方式将脚本上传托管平台gitee

                首先新建空项目,把脚本文件.jmx上传到该项目中。

                然后把该项目上传到gitee中。

                (实现此步骤需要先配置好账号,可查询其他博客看详细步骤)

2️⃣方式二:命令行
  • 通过命令将jmeter脚本上传到gitee仓库

 (建议看其他人写的详细博客)

3、配置

  • 执⾏脚本

配置:

        1、源码管理(将脚本下载到jenkins服务器)

        2、构建(在jenkins本地服务器执⾏脚本的命令)

                ①执⾏删除报告⽬录和结果⽬录命令 mac/linux:rm -rf re* windows: del result.txt rmdir /Q/S report

                 ②x:/xx/apache-jmeter-5.1.1/bin/jmeter.bat -n -t 02-auto_script.jmx -l resut.txt -e -o report

  • 测试报告

报告⽆内容或⽆样式:
jenkins管理->执⾏命令

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

  •  发送邮件

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ ——— 内部类

目录 内部类的概念 内部类的特征 sizeof(外部类) 的大小 内部类的实例化 内部类就是外部类的友元 内部类的概念 如果一个类定义在另一个类的内部,这个内部类就叫做内部类,内部类是一个独立的类,它不属于外部类,更不能通过外…

ubuntu22.4 ROS2 安装gazebo(环境变量配置)

ubuntu版本:ubuntu22.4 最近在学习ROS2 视频教程古月居的入门课: 视频教程 文字笔记 问题 在学到关于Gazebo的时候,遇到下面问题: 运行 $ ros2 launch gazebo_ros gazebo.launch.py在这里卡住,不弹出gazebo 解决…

QT Quick QML 实例之椭圆投影,旋转

文章目录 一、前言二、演示三、部分代码与分析 QML 其它文章请点击这里: QT QUICK QML 学习笔记 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 一、前言 此 Demo 主要用于无人机吊舱视角的模拟&#xf…

Java-数据结构-栈与队列(常考面试题与单调栈)

在上一篇的学习中,我们学习了栈和队列的基本知识,以及它们对应都有哪些方法,在什么应用场景下如何使用,并且还对它们进行了模拟实现,而其实对于栈和队列的相关知识还远不止于此,而今天我们就对栈与队列进行…

【Docker】Docker部署多种容器

关于docker,Windows上使用Powershell/CMD执行指令,Linux系统直接使用终端执行指令。 docker安装MySQL 拉取MySQL 也可以跳过拉取步骤,直接run,这样本地容器不存在的话,会自动拉取最新/指定的版本。 # 默认拉取最新…

Apache Hop从入门到精通 第二课 Apache Hop 核心概念/术语

1、apache hop核心概念思维导图 虽然apache hop是kettle的一个分支,但是它的概念和kettle还是有一些区别的,下图是我根据官方文档梳理的appache hop的核心概念思维导图。 2、Tools(工具) 1)Hop Conf Hop Conf 是一个…

不同音频振幅dBFS计算方法

1. 振幅的基本概念 振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值,幅度越大,声音听起来就越响。为了更好地理解和处理音频信号,通常会将振幅转换为分贝(dB)单位。分贝是一个对数单位,能…

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…

在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)

在 Safari 浏览器中,没有一个专门的快捷键可以将页面恢复到默认的缩放比例。 但是,你可以使用以下两种方法快速将页面恢复到 100% 缩放(也就是默认尺寸): 方法一:使用快捷键 (最常用) Command (⌘) 0 (零…

Android Dex VMP 动态加载加密指令流

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 上一篇【详解如何自定义 Android Dex VMP 保护壳】实现了 VMP 保护壳。 为了进一步加强对 dex 指令的保护,实现指令流加密和动态加载,…

RabbitMQ故障全解析:消费、消息及日常报错处理与集群修复

文章目录 前言:1 消费慢2 消息丢失3 消息重复消费4 日常报错及解决4.1 报错“error in config file “/etc/rabbitmq/rabbitmq.config” (none): no ending found”4.2 生产者发送消息报错4.3 浏览器打开IP地址,无法访问 RabbitMQ(白屏没有结…

Windows图形界面(GUI)-QT-C/C++ - QT控件创建管理初始化

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 控件创建 包含对应控件类型头文件 实例化控件类对象 控件设置 设置父控件 设置窗口标题 设置控件大小 设置控件坐标 设置文本颜色和背景颜色 控件排版 垂直布局 QVBoxLayout …

Java Web开发进阶——错误处理与日志管理

错误处理和日志管理是任何生产环境中不可或缺的一部分。在 Spring Boot 中,合理的错误处理机制不仅能够提升用户体验,还能帮助开发者快速定位问题;而有效的日志管理能够帮助团队监控应用运行状态,及时发现和解决问题。 1. 常见错误…

B+树的原理及实现

文章目录 B树的原理及实现一、引言二、B树的特性1、结构特点2、节点类型3、阶数 三、B树的Java实现1、节点实现2、B树操作2.1、搜索2.2、插入2.3、删除2.4、遍历 3、B树的Java实现示例 四、总结 B树的原理及实现 一、引言 B树是一种基于B树的树形数据结构,它在数据…

基于springboot的疫情网课管理系统

作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

android framework.jar 在应用中使用

在开发APP中&#xff0c;有时会使用系统提供的framework.jar 来替代 android.jar, 在gradle中配置如下&#xff1a; 放置framework.jar 依赖配置 3 优先级配置 gradle.projectsEvaluated {tasks.withType(JavaCompile) {Set<File> fileSet options.bootstrapClasspat…

如何将 sqlserver 数据迁移到 mysql

文章目录 前言一、导出SQL Server 数据二、转换数据格式为MySQL兼容格式三、导入数据到MySQL数据库五、使用ETL工具六、通过 navicat 工具七、总结 前言 将 SQL Server 数据迁移到 MySQL 是一个常见的数据库迁移任务&#xff0c;通常涉及以下几个关键步骤&#xff1a;导出 SQL…

GitLab CI/CD使用runner实现自动化部署前端Vue2 后端.Net 7 Zr.Admin项目

1、查看gitlab版本 建议安装的runner版本和gitlab保持一致 2、查找runner 执行 yum list gitlab-runner --showduplicates | sort -r 找到符合gitlab版本的runner&#xff0c;我这里选择 14.9.1版本 如果执行出现找不到下载源&#xff0c;添加官方仓库 执行 curl -L &quo…

56_多级缓存实现

1.查询Tomcat 拿到商品id后,本应去缓存中查询商品信息,不过目前我们还未建立Nginx、Redis缓存。因此,这里我们先根据商品id去Tomcat查询商品信息。此时商品查询功能的架构如下图所示。 需要注意的是,我们的OpenResty是在虚拟机,Tomcat是在macOS系统(或Windows系统)上,…

【STM32-学习笔记-9-】SPI通信

文章目录 SPI通信Ⅰ、SPI通信概述1、SPI技术规格2、SPI应用 3、硬件电路移位示意图 Ⅱ、SPI时序基本单元①、起始条件②、终止条件③、交换一个字节&#xff08;模式0&#xff09;④、交换一个字节&#xff08;模式1&#xff09;⑤、交换一个字节&#xff08;模式2&#xff09;…