软件测试学习笔记

测试学习

  • 1. 测试流程
  • 2. Bug的提出
    • 什么是bug
    • bug 的描述
    • bug 级别
  • 3. 测试用例的设计
    • 什么是测试用例
    • 测试用例应如何设计
    • 基于需求的设计方法
    • 等价类
    • 边界值
    • 场景法
    • 正交表法
    • 判定表法
    • 错误猜测法
  • 4. 自动化测试
    • 回归测试
    • 自动化分类
  • 5. 安装 webdriver-manager 和 selenium
    • 第一个web自动化测试脚本
  • 6. web端自动化测试常用函数
    • 查找元素
    • 操作元素
      • 点击
      • 模拟按键输入
      • 清除输入内容
      • 获取文本信息
      • 获取页面标题和URL
    • 窗口
      • 切换窗口
      • 窗口大小设置
      • 屏幕截图
      • 关闭窗口
    • 弹窗
      • 警告弹窗 + 确认弹窗
      • 提示弹窗
    • 等待
      • 强制等待
      • 隐式等待
      • 显式等待
    • 浏览器导航
      • 打开 刷新 前进 后退
    • 文件上传
    • 浏览器参数设置
      • 设置无头模式
      • 页面加载策略
  • 7. 性能测试
    • 常见性能测试指标
    • 性能测试工具JMeter
      • JMeter的下载和配置
      • JMeter的基本使用流程
      • JMeter元件作用域和执行顺序
    • JMeter的重点组件
      • 线程组
      • HTTP取样器
      • 查看结果树
      • HTTP Cookie管理器
      • HTTP 请求默认值
      • 用户自定义变量
      • CSV数据文件设置
      • JSON提取器
      • JSON断言
      • 同步定时器
      • 事务控制器
      • Jmeter插件
      • 梯度压测线程组
      • 常见监听器
    • 性能测试报告

1. 测试流程

测试人员是要非常懂用户需求是什么,从而才能检测出一个产品是否为用户所需要的合格的产品 , 而测试贯穿于软件的整个生命周期,一般是以下流程:

需求分析 -> 测试计划 -> 测试设计,测试开发 -> 测试执行 -> 测试评估 -> 上线 -> 运行维护

2. Bug的提出

什么是bug

  1. 当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。
  2. 当需求规格说明书没有提到的功能,判断标准以最终⽤⼾为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。

bug 的描述

描述bug的基本要素(包括但不限):问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果

bug 级别

bug级别⼀般分为:崩溃、严重、⼀般、次要
根据公司规定的标准来制定bug 等级,大多数的bug都是一般和次要级别的

3. 测试用例的设计

什么是测试用例

测试用例(Test Case) 是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境,操作步骤,测试数据,预期结果等

测试用例应如何设计

常规思考 + 逆向思维 + 发散性思维

  1. 测试用例不仅要根据有效和预料到的输⼊情况,⽽且也应该根据⽆效和未预料到的输⼊情况。
  2. 检查程序是否“未做其应该做的”仅是成功的⼀半,测试的另⼀半是检查程序是否“做了其不应该做的”。(是上⼀条原则的必然结果)
  3. 计划测试⼯作时不应默许假定不会发现错误。

功能测试+界⾯测试+性能测试+兼容性测试+易⽤性测试+安全测试
除此之外还有: 弱网测试 , 安装卸载测试等

基于需求的设计方法

基于需求的设计方法也是总的设计测试用例的方法,在工作中,我们需要参考需求文档/产品规格说明书来设计测试用例。
测试人员接到需求之后,要对需求进行分析和验证,从合理的需求中进⼀步分析细化需求,从细化的需求中找出测试点,根据这些测试点再去设计测试用例。

等价类

依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出⼀个测试用例,如果 这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的 功能覆盖,解决了不能穷举测试的问题。

等价类分类:
• 有效等价类:对于程序的规格说明书是合理的、有意义的输⼊数据构成的集合,利⽤有效等价类验
证程序是否实现了规格说明中所规定的功能和性能
• ⽆效等价类:根据需求说明书,不满⾜需求的集合。

根据等价类设计测试⽤例的⽅式:
1.确定有效等价类和⽆效等价类
2.编写测试⽤例,设计具体测试数据

边界值

边界值分析法就是对输⼊或输出的边界值进⾏测试的⼀种⿊盒测试⽅法。通常边界值分析法是作为对等 价类划分法的补充,这种情况下,其测试⽤例来⾃等价类的边界。

边界值包含:边界值+次边界值

场景法

每个需求都存在一个基本的流程, 在主流程里每个阶段都有可能发生其他的情况,导致流程出现异常
因此要对每个场景下是否会有别的阶段发生变化进行测试

正交表法

正交表发是为了减少用例数目。用尽量少的用例覆盖输入的两两组合
因此可以使用allpairs工具
第一步打开cmd:
在这里插入图片描述

第二步切换到allpairs目录下:
在这里插入图片描述
第三步打开微软自带的excel并输入用例内容:
在这里插入图片描述
第四步在pairs目录下创建一个.txt文件并将excel中的内容复制上去后保存
在这里插入图片描述
在这里插入图片描述
最后一步输入命令将结果保存到ret-test01.txt文件中:
在这里插入图片描述
此时pair目录下就会出现ret-test01.txt , 完成:
在这里插入图片描述

在这里插入图片描述

判定表法

判定表是⼀种表达逻辑判断的⼯具,形如:
在这里插入图片描述

根据判定表法设计测试用例的步骤:

  1. 确认需求中输入条件和输出条件
  2. 找出输入条件和输出条件之间的关系
  3. 画判定表
  4. 根据判定表编写测试用例

错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个⼈的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投⼊产出比很高,被⼴泛应用于测试。

4. 自动化测试

自动化测试是通过测试人员来编写测试脚本来代替人工测试一些机械简单的测试,但是并不能取代人工测试

自动化的主要目的是用来进行回归测试

回归测试

软件有多个版本需要进行功能的整体回归
新版本的软件相对旧版本会更改一些功能或内容,因此新版本发布可能会对旧版本的软件产生影响,所以旧版本的软件也要进行测试,这就是回归测试

自动化分类

  1. 接口自动化测试
  2. 前端自动化测试(web前端,客户端)

5. 安装 webdriver-manager 和 selenium

前提:有python环境和PyCharm

webdriver-manager是一个web驱动管理程序
selenium是常用的自动化测试脚本编写库(本次安装版本为selenium4.0.0)
只要安装了python换进,就可以直接在命令行进行安装:

pip install webdriver-manager
pip install selenium==4.0.0

第一个web自动化测试脚本

编写一个python脚本,使用谷歌浏览器进入百度并搜索"蔡徐坤",完成后关闭

脚本代码:

#编写自动化脚本
import timefrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager# 1. 打开浏览器
##创建谷歌驱动路径
ChromeIns = ChromeDriverManager().install()
##创建谷歌浏览器驱动对象
driver=webdriver.Chrome(service=Service(ChromeIns))
time.sleep(2)
# 2. 输入网址,要写完整
driver.get("https://www.baidu.com")
time.sleep(2)
# 3. 找到输入框,输入关键词蔡徐坤
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("蔡徐坤")
time.sleep(2)
# 4. 点击"百度一下"按钮
driver.find_element(By.CSS_SELECTOR,"#su").click();
time.sleep(2)
# 5. 关闭浏览器
driver.quit()

运行:
在这里插入图片描述
在这里插入图片描述

注意: 创建驱动等记得引入对应的方法

6. web端自动化测试常用函数

selenium库中有很多常用的自动化测试函数,下面举出几个常见的函数

查找元素

find_element(方式,“元素定位”) //查找一个元素
find_elements(方式,“元素定位”) //查找多个元素

元素定位的方式有很多,常用的主要是cssSelector 和 xpath
  • cssSelector
    选择器的功能就是选中页面中指定的元素,一般是用id选择器对元素进行定位
  • xpath
    xml路径语言,不仅可以在xml文件中查找信息,还可以在html中选取节点,下面是一些详细用法,可能会需要手动输入:
    1. 获取HTML页面所有的节点
      //*
    2. 获取HTML页面指定的节点
      //[指定节点]
      //ul :获取HTML页面所有的ul节点
      //input:获取HTML页面所有的input节点
    3. 获取⼀个节点中的直接子节点
      /
      //span/input
    4. 获取一个节点的父节点

      //input/… 获取input节点的父节点
    5. 实现节点属性的匹配
      [@…]
      //*[@id=‘kw’] 匹配HTML页面中id属性为kw的节点

操作元素

获取到元素后,就可以对元素进行操作了,常见的有:点击,提交,输入,清除,获取文本

点击

click()

操作方式有两种,一种是查找+点击,一种是先查找后点击:

	#查找+点击driver.find_element(By,CSS_SELECTOR,"#su").click()#先查找,后点击ele = driver.find_element(By,CSS_SELECTOR,"#su")ele.click()

模拟按键输入

send_keys("")   //模拟键盘对网页中可输入的元素进行输入信息操作
	driver.find_element(By,CSS_SELECTOR,"#su").send_keys("蔡徐坤")

如果连续的send_keys()只会对文本进行拼接,并不会清空后重新输入

清除输入内容

clear()  //清除刚才输入的文本内容
driver.find_element(By,CSS_SELECTOR,"#su").clear()

获取文本信息

text() 
print(driver.find_element(By.CSS_SELECTOR,"#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title").text)

在这里插入图片描述

注意:文本和属性值不要混淆了,比如"百度一下"的文本就无法通过文本获取。 获取属性值需要使用方法 get_attribute(“属性名称”) ;

	attribute=driver.find_element(By.CSS_SELECTOR,"#su").get_attribute("v alue")print(attribute)

在这里插入图片描述

获取页面标题和URL

title
current_url
	title=driver.titleprint(title)url=driver.current_urlprint(url)

在这里插入图片描述

窗口

切换窗口

  • 获取当前⻚⾯句柄:
    driver.current_window_handle
  • 获取所有⻚⾯句柄:
    driver.window_handles
  • 切换当前句柄为最新⻚⾯
curWindow = driver.current_window_handle
allWindows = driver.window_handles
for window in allWindows:if window != curWindow:driver.switch_to.window(window)

举例:

#点击百度图片
print("before:"+driver.title)
print("before:"+driver.current_url)
driver.find_element(By.CSS_SELECTOR,"#s-top-left > a:nth-child(6)").click()
#获取当前页面句柄
curWindow=driver.current_window_handle
#获取所有页面句柄
allWindow=driver.window_handles
for window in allWindow:if window != curWindow: #切换句柄driver.switch_to.window(window)
print("after:"+driver.title)
print("after:"+driver.current_url)

在这里插入图片描述

窗口大小设置

#窗口最大化
driver.maximize_window()
#窗口最小化
driver.minimize_window()
#窗口全屏
driver.fullscreen_window()
#手动设置窗口大小
driver.set_window_size(1024,768)

屏幕截图

我们的自动化脚本⼀般部署在机器上自动的去运行,如果出现了报错,我们是不知道的,可以通过抓拍来记录当时的错误场景

driver.save_screenshot('./images/image.png')
#简单版本
driver.save_screenshot('路径+图片名称.png')  //不加路径则保存在脚本文件所在路径#但是因为图片名称是固定的,因此多次运行时将被覆盖,因此需要使用下面的方法#⾼阶版本
filename = "autotest-"+datetime.datetime.now().strftime('%Y-%m-%d-
%H%M%S')+'.png'
driver.save_screenshot('./images/'+filename)

关闭窗口

close()

关闭窗口和关闭浏览器驱动quit不同,关闭窗口仅仅只是关闭当前驱动窗口,若有多个窗口,则关闭完成后需要对driver重新定义

弹窗

弹窗的页面是找不到元素的,因此需要用到selenium的Alert接口

警告弹窗 + 确认弹窗

1.切换到弹窗
2.点击确认/取消

alert = driver.switch_to.alert
//确认
alert.accept()
//取消
alert.dismiss()

提示弹窗

1.切换到弹窗
2.输入信息
3.点击确认

alert = driver.switch_to.alert
//输入文本
alert.send_keys("haha")
//确认
alert.accept()
//取消
alert.dismiss()

等待

通常代码执行的速度比页面渲染的速度要快,这样就会出现因为渲染过慢出现的自动化误报的问题,使用selenium中提供的三种等待方法可以解决问题

强制等待

time.sleep()  //单位为秒

优点:使用简单,调试的时候比较有效
缺点:影响运行效率,浪费大量的时间

隐式等待

隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执行,直到超时没找到元素才会报错.

driver.implicitly_wait()   //单位为秒

隐式等待作用域是整个脚本的所有元素。
即只要driver对象没有被释放掉( driver.quit() ),隐式等待就⼀直生效。这样的话无论查找什么元素,都会等待到规定时间内,若隐式等待规定时间内还是没有找到对应元素,则会报错
优点:智能等待,作用于全局

显式等待

显式等待也是⼀种智能等待,在指定超时时间范围内只要满足操作的条件就会继续执行后续代码

WebDriverWait(driver,sec).until(functions)

functions :涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类
ExpectedConditions下涉及到的方法

下面是一个显式等待百度搜索蔡徐坤后是否title为"蔡徐坤_百度搜索"的例子

import time
import datetime
import osfrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC  #太长了命别名为EC
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManagerChromeInt = ChromeDriverManager().install()
driver = webdriver.Chrome(service=Service(ChromeInt))
driver.get("https://www.baidu.com")#隐式等待
#driver.implicitly_wait(2)#显示等待
#创建显示等待类对象
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("蔡徐坤")
driver.find_element(By.CSS_SELECTOR,"#su").click()
curr=driver.current_window_handle
allwindow = driver.window_handles
for window in allwindow:if window != curr:driver=window
time.sleep(2)
wait = WebDriverWait(driver,3)
wait.until(EC.title_is("蔡徐坤_百度搜索"))
time.sleep(2)
driver.close()driver.quit()

ExpectedConditions 预定义方法的一些示例:

title_is(title)  //检查页面标题的期望值
title_contains(title) 检查标题是否包含区分⼤⼩写的⼦字符串的期望值
visibility_of_element_located(locator, str])检查元素是否存在于⻚⾯的DOM上并且可⻅的期望值。
presence_of_element_located(locator,str])⽤于检查元素是否存在于⻚⾯的DOM上的期望值
visibility_of(element) 检查已知存在于⻚⾯DOM上的元素是否可⻅的期望
alert_is_present() 检查是否出现弹窗

优点:显式等待是智能等待,可以自定义显式等待的条件,操作灵活
缺点:写法复杂

注意:不要混合隐式和显式等待,可能会导致不可预测的等待时间。

浏览器导航

打开 刷新 前进 后退

driver.get("https://www.baidu.com")  //打开百度
driver.refresh()  //刷新页面
driver.forward()  //页面前进
driver.back()  //页面后退

文件上传

点击文件上传的场景下会弹窗系统窗口,进行文件的选择。
selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素但是可以使用send_keys来上传指定路径的文件,达到的效果是⼀样的

例如:

driver.get("需要上传文件的url")
ele = driver.find_element(By.CSS_SELECTOR,"上传文件的元素").click()
ele.send_keys("D:\\file\\test.txt") #在这里上传文件路径即可
driver.find_element(By.CWW_SELECT,"点击上传按钮").click()

浏览器参数设置

自动化打开浏览器默认是有头模式

设置无头模式

无头模式:程序在后台运行,看不到界面表现

#安装驱动类
ChromeInt = ChromeDriverManager().install()
#设置浏览器参数
options = webdriver.ChromeOptions()
#将浏览器参数设置为无头模式
options.add_argument("-headless")
#添加到驱动类中
driver = webdriver.Chrome(service=Service(ChromeInt),options=options)

页面加载策略

driver.get()方法是等待所有资源加载完成的
但是我们可以更改一页面的加载方式,但这需要用到对浏览器参数的设置

options.page_load_strategy = '加载⽅式'

页面加载方式有三种

normal    # 默认值, 等待所有资源下载
eager    # 最常用的方式 : DOM 访问已准备就绪, 但诸如图像的其他资源可能仍在加载  
none  #  基本不用的方式:完全不会阻塞WebDriver ,这样可能会大量报错

7. 性能测试

为了发现系统性能问题或获取系统性能相关指标而进行的测试。

常见性能测试指标

  1. 并发数
  2. 吞吐量 (1.请求数量 2. 网络数据包 :KB)
  3. 响应时间
  4. 资源利用率

性能测试工具JMeter

性能测试中我们需要重点关注接口的性能问题,此时需要用到性能测试工具JMeter

JMeter的下载和配置

Jmeter使用前提是有java8以上的环境,下载前需要先配置java环境

下载链接(Windows环境下载.zip文件的就行)

下载完成后无需安装,直接解压即可使用,找到jmeter的bin目录,打开Jmeter.bat即可使用,但是最好还是配置环境变量使用cmd唤起更方便

在bin目录下的jmeter.properties文件中编辑language=zh_CN即可改为简体中文,配置完成后就可以开始使用了
在这里插入图片描述

JMeter的基本使用流程

1.打开jmeter
2.在测试计划下添加线程组
在这里插入图片描述
在这里插入图片描述
3.在线程组下添加HTTP请求
在这里插入图片描述
4.填写HTTP相关内容
5.在 线程组 下添加 查看结果树 监听器
在这里插入图片描述
6.点击 启动 即可查看接口测试结果

JMeter元件作用域和执行顺序

作用域:JMeter元件的作用域主要由测试计划的树形结构中的元件父子关系来确定。

执行顺序:

  • 取样器(sampler)元件内组件不依赖其他元件就可执行,因此取样器不存在作用问题
  • 元件作用域只对它的子节点有作用,
  • 其他作用域默认根据测试计划中树形结构来定;

JMeter的重点组件

线程组

控制JMeter将用于执行测试的线程数,也可以把一个线程理解为⼀个测试用户。
在这里插入图片描述
线程数:一个线程即一个测试用户,设置发送的请求次数
Ramp-up时间(秒):设置性能测试运行时间,单位为秒
循环次数:

  1. 配置指定次数:控制脚本循环执行的次数
  2. 配置循环永远
    ▪ 需要调度器配置使用
    ▪ 运行时间:脚本执行时间
    ▪ 延迟启动时间:脚本等待指定时间才能运行

HTTP取样器

加必需的配置:
http协议
http主机名/IP
端口
◦ http协议端口号80
◦ https端口号443
请求方法
路径(目录+参数)
内容编码(默认的ISO国际标准,但对中文支持不友好,可以使⽤utf-8)
参数
◦ 参数可以拼在路径里,也可以卸载参数中
◦ POST参数要放到消息体数据中{wd:test}
在这里插入图片描述

查看结果树

查看测试结果的元件
取样器结果:统计请求相关的信息

1 Thread Name:线程组名称
2 Sample time:发送请求时间
3 load time:响应时间
4 Response code :接口响应状态码

HTTP Cookie管理器

作用:自动保存cookie,不用重复配置
线程组->添加->配置元件->HTTP Cookie管理器
在这里插入图片描述

HTTP Cookie管理器像Web浏览器一样存储和发送Cookie。如果HTTP请求并且响应包含cookie,则Cookie管理器会自动存储该cookie,并将其用于将来对该特定用站的所有请求。每个JMeter线程都有自己的"cookie存储区"。因此,正在测试使用cookie存储会话信息的网站,则每个JMeter线程都将拥有自己的会话。此类Cookie不会显示在Cookie管理器显示屏上,可以使⽤"查看结果树监听器"查看。
缓存配置可选择standard(标准)或compatibility(兼容的),当然也可以手工添加⼀些cookie.

HTTP 请求默认值

作用:配置http信息,避免重复填写
在这里插入图片描述

在这里插入图片描述

用户自定义变量

作用:设置自定义变量
线程组->添加->配置元件->用户自定义变量
在这里插入图片描述
比如添加了一个studentId的变量
在这里插入图片描述

使用:在HTTP请求的取样器中引入定义的变量。${参数名}
例如: ${studentId}

CSV数据文件设置

作用:从外部CSV(逗号分隔值)文件中读取数据,并在测试过程中使用这些数据,使得数据的管理和更新更加方便
线程组->添加->配置元件->CSV Data Set Config
在这里插入图片描述
在这里插入图片描述
说明:

文件名:填写csv文件的路径。建议使用绝对路径
• 文件编码:UTF-8
• 变量名称:从csv数据文件中读起的数据需要保存到的变量名。有多个变量时用逗号分隔(英文符号)
• 是否忽略首行:是否从csv数据⽂件第一行开始读取。
• 分隔符:要求与csv数据文件中多列的分隔符⼀致
• 遇到文件结束符再次循环:若选择为True当数据不够的时候会从头取。若选择False,则需要勾选
下⾯的配置,遇到⽂件结束符停⽌线程,这⾥如果不勾选,请求将会报错。
可以导入csv文件

配置如下:
在这里插入图片描述

创建csv文件步骤:
创建一个文本文件,并改名后缀为.csv,
在这里插入图片描述

然后用excel打开
在这里插入图片描述

输入信息:
在这里插入图片描述
完成后保存

然后在http请求里添加参数(需要使用 ${变量名} ):
在这里插入图片描述

然后修改线程组和线程数,使得每次取到的数据不一样,配置完成后进行测试每次测试的数据就会不一样
在这里插入图片描述

JSON提取器

作用:接口响应成功后,通过提取返回值对应字段,可用于其他接⼝的参数配置,可以针对某一个HTTP请求接口添加JSON提取器

添加->后置处理器,JSON提取器
在这里插入图片描述

JSON操作符参考:

$ 表⽰根元素
@ 当前元素
* 通配符。所有节点
.. 选择所有符合条件的节点
.<name> ⼦元素
['<name>' (, '<name>')] 括号表⽰⼦元素或⼦元素列表
[<number> (, <number>)] 数组索引或索引列表
[start:end] 数组切⽚操作符
[?(<expression>)] 过滤器表达式。表达式必须评估为布尔值。

比如 $…studentId 就是提取所有的studentId
$.[0]studentId 就是提取列表中第一个studentIdId

在这里插入图片描述
可以在查看结果树中查看json表达式
在这里插入图片描述

在这里插入图片描述

JSON断言

在JSON断言中填写相应变量和期望的值,若不相同,则会发生断言
添加->断言->JSON断言
在这里插入图片描述

在添加JSON断言的时候最好添加在HTTP请求的子节点上,否则会断言该作用域下所有的HTTP请求

在这里插入图片描述

同步定时器

作用:使得每个测试线程并发,从而模拟真实的多数量用户并发

线程组->添加->定时器-> Synchronizing Timer

在这里插入图片描述

在这里插入图片描述

官方说明
在这里插入图片描述

在这里插入图片描述

事务控制器

作用:可以对多个事务进行统一管理,使之成为一个事务集合体
线程组->添加->逻辑控制器->事务控制器

在这里插入图片描述
添加完成后,将需要管理的事务拖动到事务控制器内即可

Jmeter插件

下载链接

下载完成并放在对应路径下
在这里插入图片描述
然后打开jmeter,右上角就会出现插件管理的标志,点击就可以下载插件

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

下载监听器插件和线程组相关插件
在这里插入图片描述
在这里插入图片描述

梯度压测线程组

作用:梯度增加线程数并发测试

线程组->添加->线程->Stepping Thread Group

在这里插入图片描述

在这里插入图片描述

说明:
This group will start:启动多少个线程,同线程组中的线程数
First, wait for:等待多少秒才开始压测,般默认为0
Then start:⼀开始有多少个线程数,⼀般默认为0
Next,add:下⼀次增加多少个线程数
threads every:当前运⾏多⻓时间后再次启动线程,即每⼀次线程启动完成之后的的持续时间;
using ramp-up:启动线程的时间;若设置为5秒,表⽰每次启动线程都持续5秒
thenhold loadfor:线程全部启动完之后持续运⾏多⻓时间
finally,stop/threadsevery:多⻓时间释放多少个线程;若设置为5个和1秒,表⽰持续负载结	束之后每1秒钟释放5个线程

常见监听器

在这里插入图片描述

1.聚合报告
聚合报告可以看到性能测试过程中整体的数据变化
响应时间均为毫秒

在这里插入图片描述
2.Respons Times Over Time
作用:监听整个事务运行期间的响应时间。
3.Transactions per Second
作用:于分析每秒事务通过率,即系统吞吐量的重要工具.
TPS,即每秒事务数,表示一个客⼾机向服务器发送请求后服务器做出反应的过程。这个指标反映了系统在同一时间内处理业务的最大能力。TPS值越高,说明系统的处理能力越强。

性能测试报告

只能在命令行运行

Jmeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录

说明:

-n : ⽆图形化运⾏
-t : 被运⾏的脚本
-l : 将运⾏信息写⼊⽇志⽂件,后缀为jtl的⽇志⽂件
-e : ⽣成测试报告
-o : 指定报告输出⽬录

注意:日志文件和目录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误!
例如:
在这里插入图片描述

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

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

相关文章

链表List

简介 STL中的List与顺序表vector类似&#xff0c;同样是一种序列式容器&#xff0c;其原型是带头节点的双向循环链表。 List的使用 list中的接口比较多&#xff0c;此处类似&#xff0c;只需要掌握如何正确的使用&#xff0c;然后再去深入研究背后的原理&#xff0c;已达到可…

基于R语言生物信息学大数据分析与绘图

随着高通量测序以及生物信息学的发展&#xff0c;R语言在生物大数据分析以及数据挖掘中发挥着越来越重要的作用。想要成为一名优秀的生物数据分析者与科研团队不可或缺的人才&#xff0c;除了掌握对生物大数据挖掘与分析技能之外&#xff0c;还要具备一定的统计分析能力与SCI论…

CSDN 僵尸粉 机器人

CSDN 僵尸粉 机器人 1. 前言 不知道什么时候开始每天创作2篇就有1500流量爆光&#xff0c;每次都能收获一些关注和收藏&#xff0c;感觉还是挻开心的感觉CSDN人气还是挻可以的以前各把月一个收藏和关注都没有写的动力了。 2. 正文 后面又连接做了2天的每日创建2篇任务&…

JVM(九)深入解析Java字节码技术与执行模型

这篇文章深入探讨了Java字节码技术&#xff0c;包括字节码的简介、获取字节码清单的方法、解读字节码清单、查看class文件中的常量池信息、查看方法信息、线程栈与字节码执行模型、方法体中的字节码解读、对象初始化指令、栈内存操作指令、局部变量表、流程控制指令、算术运算指…

简单的docker学习 第3章 docker镜像

第3章 Docker 镜像 3.1镜像基础 3.1.1 镜像简介 ​ 镜像是一种轻量级、可执行的独立软件包&#xff0c;也可以说是一个精简的操作系统。镜像中包含应用软件及应用软件的运行环境。具体来说镜像包含运行某个软件所需的所有内容&#xff0c;包括代码、库、环境变量和配置文件等…

加密软件中的RSA和ECC的主要区别是什么

在加密软件中&#xff0c;RSA&#xff08;Rivest-Shamir-Adleman&#xff09;和ECC&#xff08;Elliptic Curve Cryptography&#xff0c;椭圆曲线密码学&#xff09;是两种广泛使用的非对称加密算法&#xff0c;它们之间存在多个关键区别。 1. 算法基础 RSA&#xff1a;基于大…

汽车网络安全 -- MAC介绍:CMAC与CBC-MAC不能混为一谈

目录 1.什么是MAC 2.CMAC 3.HMAC 4.小结 1.什么是MAC MAC全称Message authentication code&#xff0c;是经过特定算法后产生的一小段数据信息&#xff0c;用于校验某数据的完整性和真实性。在数据传递过程中&#xff0c;可检查其内容是否被更改过&#xff0c;不管更改的原…

Webpack入门基础知识及案例

webpack相信大家都已经不陌生了&#xff0c;应用程序的静态模块打包工具。前面我们总结了vue&#xff0c;react入门基础知识&#xff0c;也分别做了vue3的实战小案例&#xff0c;react的实战案例&#xff0c;那么我们如何使用webpack对项目进行模块化打包呢&#xff1f; 话不多…

路由器IP互联无线对讲系统解决方案

一、项目概况 随着信息化的全面深入发展&#xff0c;各行各业的通信需求日益增长&#xff0c;传统的通信方式无法满足跨网络、跨系统、跨媒介的通信互联互通&#xff0c;打破信息孤岛、提高协同效率&#xff0c;成为当前各行业融合通信的首要任务。尤其大型企业、学校、医院等…

模型优化学习笔记—对比各种梯度下降算法

import mathimport numpy as np from opt_utils import * import matplotlib.pyplot as plt# 标准梯度下降 def update_parameters_with_gd(parameters, grads, learning_rate):L len(parameters) // 2for l in range(1, L 1):parameters[f"W{l}"] parameters[f&q…

自己动手实现scikit库中的fit和transform方法

文本分析第一步要解决的是如何将文本非结构化信息转化为结构化信息&#xff0c;其中最关键的是特征抽取&#xff0c;我们使用scikit-learn库fit和tranform方法实现了文本数据的特征抽取。 但是对于fit和transform&#xff0c;大家可能还是有点迷糊。最近又将《Applied Text An…

如何用一个以太网回环短接器激活以太网接口:以太网短接口制作

在非常特殊的情况下&#xff0c;我们需要在没有接以太网的情况下&#xff0c;使用本地的以太网&#xff08;有些程序、代码必须上网才能运行&#xff09;。这时候需要插上一个以太网短接口&#xff0c;骗系统已经插上网线。 制作以太网短接口 以太网短接口的制作非常简单&…

Linux OS:基于阻塞队列的生产者消费者模型

Linux OS&#xff1a;基于阻塞队列的生产者消费者模型 前言一、阻塞队列的大致框架二、生产者向阻塞队列中生产数据三、消费者获取阻塞队列中数据四、总体生产和消费思路及测试代码4.1 单生产单消费4.2 多生产多消费 五、所以代码 前言 阻塞队列是一种常用于实现生产者消费者模…

低代码: 系统开发准备之确定一般开发流程,需求分析,复杂度分析,标准开发流程

概述 低代码系统开发之前&#xff0c;我们首先要进行一些准备我们首先知道我们软件开发的一般流程同时&#xff0c;我们还要知道&#xff0c;我们整个系统平台的需求如何之后&#xff0c;我们要基于需求进行设计&#xff0c;包含UI设计与系统架构设计 一般开发流程 系统开发…

电路中电阻,电容和电感作用总结

电阻作用 1&#xff0c;上拉电阻 电阻的连接一般是一端接上拉的电源&#xff08;一般与芯片信号的电压值相匹配&#xff09;&#xff0c;另一端连接芯片引脚所对应的信号大概如下图 功能&#xff1a;一、预置某些引脚的功能&#xff0c;例如复位信号拉高&#xff08;失能&…

在 VueJS 中使用事件委托处理点击事件(事件委托,vue事件委托,什么是事件委托,什么是vue的事件委托)

前言 在开发 Vue 项目时&#xff0c;我们经常需要处理大量的点击事件。为每个可点击的元素单独添加事件监听器不仅会增加代码的复杂度&#xff0c;还会降低性能。事件委托是一种有效的优化方式&#xff0c;它可以显著减少事件监听器的数量&#xff0c;提高代码的可维护性和执行…

用Python+selenium实现一个自动化测试脚本

一,安装Python. python官方下载地址&#xff1a;Download Python | Python.org 安装后点击开始菜单,在菜单最上面能找到IDLE. IDLE是python自带的shell, 点击打开, 即可开始编写python脚本了. 二,安装selenium 上面python已安装完成,接下来安装selenium. 安装selenium之前需要…

P1105 平台

平台 题目描述 空间中有一些平台。给出每个平台的位置&#xff0c;请你计算从每一个平台的边缘落下之后会落到哪一个平台上。 注意&#xff0c;如果某两个平台的某个两边缘横坐标相同&#xff0c;物体从上面那个平台落下之后将不会落在下面那个平台上&#xff08;即平台的范…

网络工具(Netcat、iPerf)

目录 1. Netcat2. iPerf 1. Netcat Netcat 是一款简单的 Unix 工具&#xff0c;常用于测试 UDP 和 TCP 连接。 https://www.cnblogs.com/yywf/p/18154209 https://eternallybored.org/misc/netcat/ https://nmap.org/download.html 创建UDP监听端 nc -u -l localPort 创建UDP…

业务开发之用户管理(七)

云风网 云风笔记 云风知识库 首先从逻辑上&#xff0c;用户管理只限制admin用户显示 一、路由限制用户管理的访问权限 config/routes.ts添加access&#xff1a;admin权限限制 {name: userManage,icon: table,access: canAdmin,path: /userManage,component: ./userManage,}二…