IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试工具之 Jmeter性能测试 -> 正文阅读

[开发测试]自动化测试工具之 Jmeter性能测试

性能测试知识点

1.性能测试概念:

通过自动化测试工具模拟多种正常,峰值以及异常负载条件来对系统的各项性能指标进行测试

2.性能测试条件

  • 系统基础功能测试验证完成
  • 系统趋于稳定

3.性能测试基本流程

  • 需求分析

(1)系统信息调研

(2)业务信息调研

(3)性能需求评估

?判断是否进行性能测试主要从下面两个方面进行思考:
业务角度:

   系统是公司内部 or 对外?系统使用的人数的多少?此时可进行性能测试来排查问题。
系统角度:系统又可以从以下3个方面进行分析
  a.系统架构:
     如果一个系统采用的框架是老的系统框架(通常大公司都有自己的统一框架),只是在此框架上增加一些应用,其实是没有必要做性能测试,因为老框架的使用肯定是经过了验证的。如果一个系统采用的是一种新的框架,可以考虑做性能测试。
  b.数据库要求:
     很多情况下,性能测试是大数据量的并发访问、修改数据库,而瓶颈在于连接数据库池的数量,而非数据库本身的负载、吞吐能力。这时,可以结合DBA的建议,来决定是否来做性能测试。
  c.系统特殊要求:
     从实时性角度来分析,某些系统对响应时间要求比较,比如证券系统,系统的快慢直接影响客户的收益,这种情况就有作并发测试的必要,在大并发量的场景下,查看这个功能的响应时间。从大数据量上传下载角度分析,某些系统经常需要进行较大数据量的上传和下载操作,有必要进行性能测试,确定系统能处理的最大容量

(4)确定性能测试点

(5)确定性能指标

  • 测试准备

(1)测试环境准备:
  a)系统运行环境:这个通常就是我们的测试环境,有些时候需求比较多,做性能测试担心把环境搞跨了影响其它的功能测试,可能需要重新搭建一套专门用来做性能测试的环境。
  b)执行机环境:这个就是用来生成负载的执行机,通常需要在物理机上运行,而物理机又是稀缺资源,所以我们每次做性能测试都需要提前准备好执行机环境。
(2)测试场景设计:根据性能需求分析来设计符合用户使用习惯的场景,场景设计的好不好直接影响到性能测试的效果。
(3)性能工具准备:
  a)负载工具:根据需求分析和系统特点选择合适的负载工具,比如LR、Jmeter或galting等
  b)监控工具:准备性能测试时的服务器资源、JVM、数据库监控工具,以便进行后续的性能测试分析与调优。
(4)测试脚本准备:如果性能测试工具不能满足被测系统的要求或只能满足部分要求时,需要我们自己开发脚本配合工具进行性能测试。
(5)测试数据准备:
  a)负载测试数据:并发测试时需要多少数据?比如登录场景?
  b)DB数据量大小:为了尽量符合生产场景,需要模拟线上大量数据情况,那么要往数据库里提前插入一定的数据量。这可能需要花费一些时间,特点是关联系统较多,逻辑复杂的业务可能同时涉及多张表。
(6)其它:如果需要其它其它关联系统或专业人士如DBA配合的,也需要提前进行沟通。

  • 测试执行

(1)人工边执行边分析

(2)无人值守执行性能测试

  • 结果分析与调优
  • 报告与总结

自动化测试工具Jmeter

jmeter能够完成功能:

  • 用于对服务器,网络或对象模拟巨大负载
  • 通过创建带有断言的脚本来验证程序是否能返回预期的结果

优缺点:

优点:开源,跨平台,支持多协议 小巧且功能强大

缺点:不支持IP欺骗? 无法验证JS程序和UI界面

工具使用:

参照项目点餐系统(MVC框架,RESTfull风格)进行测试

(一)添加协议及接口相关配置信息

(1)添加http请求

?(2)新增监听器,查看测试结果

?

?(二)线程组

设置属性:

(1)线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
(2)Ramp-Up时间(秒)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
(3) 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10x100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
(4)Delay Thread creation until needed:直到需要时延迟线程的创建。
(5)调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。

(三)并发和顺序执行

并发执行

?顺序执行

?(四)特殊线程组

  • ?setUp线程组:最优先执行的线程组
  • tearDown线程组:最后执行的线程组

(五)http请求默认值

http请求默认值的设置,将被复用的内容进行封装

?(六)信息头管理器

新增修改实现时 所提交数据都为json格式 需要说明所提交数据类型

?(七)参数化

动态获取,设置或生成数据,满足多次大量提交,避免每次测试都要修改

实现参数化:

  • 用户定义的变量

  • CSV数据文件设置

步骤:

1使用CSV文件存储测试数据

2编写被复用的菜单新增脚本模板

3关联脚本与数据(将文件数据导入脚本)

?

  • 用户参数

步骤:

1编写被复用的菜单新增脚本模板

2使用用户参数存储测试数据

3将数据导入脚本模板

4设置执行次数

  • 函数

(1)计数器函数:_counter? ?

TRUE:每个用户都有自己的计数器

FALSE:所有用户共用一个计数器

(2)随机数函:_Randm

参数1:取值范围最小值

参数2:取值范围最大值

(3)时间函数:_time

无参:获取距离1970/1/1 00:00:00的毫秒值

参数格式:yyyyMM_dd HH:mm::ss

(八)断言

断言:程序代替人工判断响应结果是否符合预期

步骤:

1编写测试脚本

2为判断的取样器添加断言组件

3直接运行查看结果? ?断言通过:无提示? ?断言失败:给出错误

分类:

响应断言:断言状态码和响应体

大小断言:判断响应内容的字节长度

断言持续时间:判断响应时间

(九)逻辑控制器

测试完整的业务逻辑或流程

  • if逻辑控制器

??????????????

?给定一个变量值,根据变量值是否一致判断 请求是否需要被执行

如果条件满足 则执行:

?如果不满足 则不执行:

  • ForEach逻辑控制器

???????

  • 循环逻辑控制器

??????????????

(十)关联

上一个请求的响应结果和下一个请求的数据有关系

将A网址title获取并传递给B网站(Baidu.com)作为关键字搜索

(十一)跨越线程组关联

局部变量可直接传递:

?非全局变量无法跨线程传递:

?借助函数生成器完成 全局变量传递:

?

(十二)高并发

同一时刻 100个用户访问

?

(十三)高频率

一个用户以20QPS频率访问? 持续15秒

QPS:每秒查询量? ? 每秒访问多少次服务器

(十四)分布式

多机协作,集群方式完成测试任务,提高测试效率

角色划分:

  • 控制机:负责任务分配
  • 执行机:负责任务实现

流程:

  • 控制机需要制定测试任务,并下发到执行机
  • 执行机执行任务并返回结果到控制机
  • 控制机结果汇总???????
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:07:07  更:2022-04-26 12:07:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:00:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码