从零开始的软件测试学习之旅(九)jmeter直连数据库及jmeter断言,关联

本文主要是介绍从零开始的软件测试学习之旅(九)jmeter直连数据库及jmeter断言,关联,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jmeter直连数据库及断言,关联

    • jmeter直连数据库步骤
    • jmeter断言
    • jmeter逻辑控制器
      • if控制器
      • ForEach控制器
      • 循环控制器
    • Jmeter关联
      • Jmeter关联XPath提取器
      • Jmeter关联正则表达式提取器
      • 二者比较
      • 跨线程组关联
    • 每日复习

jmeter直连数据库
概念
这不叫直连:Jmeter -> java/python 提供的接口 -> 访问数据库
这才叫直连:Jmeter -> 直接访问数据库
作用:获取数据 (用于判断结果(断言))
实现
第一步:直连数据库, 获取所有 area_name 区域名称的值
第二步:取出第一个值, 并在百度上进行搜索

jmeter直连数据库步骤

1 编写脚本 并 导入第三方包因为 jmeter不具备连接数据库的能力

在这里插入图片描述
在这里插入图片描述

2 配置数据库连接信息
添加配置元件 -> JDBC Connection Configuration 配置数据库的连接信息
连接名称 mysql
dbc:mysql://localhost:3306/test
driver: 选择 com.mysql.jdbc.Driver
登录名: root
登录密码: 123456
在这里插入图片描述
在这里插入图片描述
接受多个值在这里插入图片描述

3 向数据库发送 sql 语句 并接受响应结果
线程组右键添加 -> 取样器 -> JDBC Request
选择 连接名称
输入sql语句
输入接收的变量名
在这里插入图片描述
在这里插入图片描述

4 处理接收到的响应结果 (如, 在百度上搜索)
在这里插入图片描述
注意:非浏览器访问百度会进行拦截,我们需要获取百度端口ID输入cookie的值中在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jmeter断言

概念:程序驱动代替人工驱动, 判断响应结果是否符合预期

分类
1.响应断言 判断状态码和响应体
在这里插入图片描述

2.大小断言 判断相应内容的字节长度是否符合预期

作用 高效 安全

实现: 需求 直连数据库,获取 相应内容中包含脚本中的测试文本内容

jmeter逻辑控制器

应用场景

比如要下订单, 需要先登录:

  • 登录成功, 则可以继续下订单
  • 登录失败, 则不能下订单
if 登录接口, 执行结果为 成功:执行下订单请求的接口, 预期下订单成功
else:执行再次登录的接口, 预期结果为登录成功

此时, 就需要通过逻辑控制器实现

概念
控制接口(取样器)执行顺序的组件

  • 顺序执行
  • 分支执行 == if 语句 == 如果(if)控制器
  • 循环执行 == for/ while 语句 == ForEach控制器 / 循环控制器

作用

控制执行逻辑

if控制器

步骤

  1. 搭框架: 测试计划/ 线程组/ 查看结果数/ 添加一个用户定义的变量
  2. 核心: 以分支方式控制取样器的执行(逻辑控制器和取样器是父子级关系)
  3. 运行并查看结果

设置if条件

在这里插入图片描述

ForEach控制器

步骤

  1. 搭框架: 测试计划/ 线程组/ 查看结果数/ 添加一个用户定义的变量

  2. 核心: 以循环的方式控制取样器的执行(逻辑控制器和取样器是父子级关系)

  3. 运行并查看结果

    定义用户值
    在这里插入图片描述

设置输出变量
在这里插入图片描述

在http请求中设置请求参数
在这里插入图片描述

循环控制器

步骤

  1. 搭框架: 测试计划/ 线程组/ 查看结果数

  2. 核心: 以循环的方式控制取样器的执行(逻辑控制器和取样器是父子级关系)

  3. 运行并查看结果

    在这里插入图片描述

线程组和循环控制器的循环控制的区别

二者作用域不同, 相对来说循环控制器更灵活一点,线程组循环代表外循环,循环控制器为内部请求循环

Jmeter关联

应用场景: 测试考试交卷的接口, 需要学生先登录, 再进行交卷操作

概念:上一个请求的响应结果作为下一个请求的参数

作用:在接口测试中所涉及的不同接口间传递数据

需求 访问京东(请求A), 提取页面源码中的 title 标签的值, 传递给百度搜索(请求B)

Jmeter关联XPath提取器

步骤

  1. 搭框架
  2. 从响应结果中提取
    • 右键 http请求 -> 添加 -> 后置处理器 -> XPath提取器
  3. 调用提取到的数据, ${变量名}

在这里插入图片描述

在这里插入图片描述

Jmeter关联正则表达式提取器

步骤

  1. 搭框架
  2. 从响应结果中提取
    • 右键 http请求 -> 添加 -> 后置处理器 -> 正则表达式提取器
  3. 调用提取到的数据, ${变量名}

在这里插入图片描述
在这里插入图片描述

扩展

正则表达式(通过特殊符号来指定一定的匹配规则)

(.*?)  一般来说,使用这个规则可以解决大部分问题
() 表示截取区间
.  表示任意字符
*  表示出现任意次
.* 表示任意字符串
?  表示截取到第一个结束标记

二者比较

相同点

  • 二者实现流程一致
  • 都可以从响应结果提取数据

不同点

  • XPath提取器 只能从标签文档(如, html 或 xml)提取数据, 一般文本数据无法使用
  • 正则表达式提取器 既适用于标签文档又适用于一般文本文档, 作用范围更广

推荐大家重点掌握正则表达式提取器

跨线程组关联

需求

在前一个需求的基础上, 把请求A和B放到不同的线程组中, 并且设置了线程的执行顺序, 先A后B, 但是关联失败, 通过跨线组关联让它关联成功

原因: 变量作用域不对

解决: 将局部变量转换成全局变量

步骤

  1. 搭框架
  2. 把局部变量转换成全局变量
    1. 建立局部变量和全局变量的对应关系 (通过函数 __setProperty)
    2. 导出为全局变量 (通过 Bean Shell 取样器)
  3. 调用全局变量 (通过 __Property)

在这里插入图片描述

建立局部变量和全局变量的对应关系

在这里插入图片描述

在这里插入图片描述

放入BeanShell取样器,导出为全局变量
在这里插入图片描述

调用全局变量,放入http请求中使用

在这里插入图片描述
在这里插入图片描述

每日复习

Jmeter断言的概念是什么?
Jmeter最常用的断言类型是什么?

这篇关于从零开始的软件测试学习之旅(九)jmeter直连数据库及jmeter断言,关联的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973937

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom