Jmeter——性能测试的认知以及思考bug(一)
前言
性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。
测试流程:
- 需求分析→环境搭建→测试计划→脚本开发→执行与监控→缺陷管理→结果与报告
压力测试
- 1、线程组设置,这里的线程数与同步定时器的用户数量一样
- 2、添加HTTP cookie管理器
- 3、默认请求值
- 4、添加一个事务控制器,可以当作一个业务
- 5、在事务控制器下添加,同步定时器
- 设置用户数量,这里与线程组的线程数一样,超时时间可设置
- 6、添加脚本(http请求)
- 7、添加查看结果树
- 8、添加->监听器
- 9、在最后添加一个聚合报告,添加处:添加->监听器
- 负载测试实战
- 1、线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
- 2、添加HTTP cookie管理器
- 3、默认请求值
- 4、添加一个事务控制器,可以当作一个业务
- 5、在事务控制器下添加,高斯随机定时器
- 总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
- 6、添加脚本(http请求)
- 7、添加->监听器
- 8、在最后添加一个聚合报告,添加处:添加->监听器
第一章 Bug引发的又一次思考
1. 打开一个页面非常慢是Bug吗
- 打开一个页面非常慢是Bug吗
- 可能是,原因:网络慢、客户端运算能力不足、资源大到现有的网络无法承载、服务端资源响应时间过长。
- 页面打开慢的影响是什么?
- 用户体验不好,从而导致用户流失
- 用户流失会导致项目失败
- 项目失败可能会导致公司破产
2. 页面响应耗时可以提前预知吗?
在测试阶段是否能够发现页面响应慢
当然可以
如何在测试阶段发现页面响应慢?
- 模拟大量用户访问
- 监控每个请求的响应是否准确
- 监控服务器的资源使用
第2章 性能测试认知
1. 企业级软件为什么要做性能测试
- 历史上由于性能问题引发的事件
- 12306网站崩溃,用户购票失败
- 淘宝双十一网站崩溃
- 网站崩溃或慢对用户的影响
- 离开
- 企业为什么要做性能测试?
- 提升用户体验
- 细化性能测试的目的
- 预估软件性能瓶顶,预估软件优化时间
- 验证是否存在多并发的逻辑问题
2. 什么是性能测试?
性能是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价
对产品或是物品的性能惊喜定性或是定量的量测过程
在这个过程中我们使用一些工具来进行场景的模拟,从而进行性能测试
3. 性能测试案例
- 测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间
- QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量)
- 测试步骤
- 1、添加线程组(线程数+准备时长+循环次数)
- 1.1、线程数:虚拟用户数,一个虚拟用户占用一个进程或线程(设置多少个虚拟用户=设置多少个线程)
- 1.2、准备时长(s):设置的虚拟用户数需要多长时间全部启动。eg:线程数为20,准备时长为10,则说明需要10秒钟启动20个进程。
- 1.3、循环次数:每个线程发送请求的次数。eg:线程数为20,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100
- 2、添加HTTP请求
- 3、设置QPS限制:控制给定的取样器发送请求的吞吐量
- 4、添加监视器-聚合报告、察看结果树
- 5、运行脚本
- 6、聚合报告解析(响应时间单位:毫秒)
- 1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
- 2)#Sample:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- 3)Average:平均响应时间-默认情况下是单个Request的平均响应时间当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
- 4)Median:中位数,50%用户的响应时间
- 5)90%Line:90%用户响应时间
- 6)Min:最小响应时间
- 7)Max:最大响应时间
- 8)Error%:本次测试中出现错误的请求的数量/请求的总数
- 9)Throughput:吞吐量-默认情况下白石每秒的请求数
- 10)KB/sec:每秒从服务器端接收到的数据量
4. 性能测试的分类
- 性能测试的分类
- 压力测试、负载测试、并发测试、稳定性测试
- 什么是压力测试?
- 压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力
- 举个例子:百米赛跑,逐步增加你的负重,直到你完不成百米的程度,也就是崩溃的边缘你所能承受的最大负重
- 什么是负载测试?
- 被测试系统正常服务的前提下,系统所能承担的最大服务负荷数量(即最大并发数量),最终分析出系统性能的瓶颈
- 举个例子:百米赛跑,设置必须15秒完成,负重奔跑(不断增加负重)
- 压力测试和负载测试的区别
- 压力测试要测试出系统即将崩溃时,能够承受的最大并发数
- 负载测试是满足系统指标要求的情况下,能够承受的最大并发数
- 什么是并发测试
- 举个例子:商场卖货,售后员根据库存表单记录表卖货
- 仓库管理员应该在出货时同时更新库存表单记录表,但由于用户过多,表单记录更新不及时
- 导致仓库已经没有货了,但是售货员看到库存表单记录表中还显示有库存,仍然在卖货,但已经发不出去货了
5. 性能测试场景剖析
- 电商秒杀、学习系统考试、12306抢票、新闻热点事件、
网络游戏运营、视频网站播放
6. 必知必会的性能测试指标
- 并发用户量:同一单位时间进行同一操作的用户数量
- 吞吐量:单位时间内系统成功传输的数据量,单位通常是MB、GB
- 吞吐率:又叫Throughput,单位时间内系统成功处理的请求数量,通常单位为(请求数量/每秒、req/s)
7. 性能测试基本流程
- 标准性能测试流程
8. 简述 性能测试流程?
1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
3.编写测试用例
4.搭建测试环境,准备好测试数据
5.编写性能测试脚本
6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
7.设计测试场景,运行测试脚本,监控服务器,
8.分析测试结果,收集相关的日志提单给开发
9.回归性能测试
10.编写测试报告
Jmeter——性能测试的认知以及思考bug(一)的更多相关文章
- 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试
续接--基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包 在进行测试前先将用于支持selenium录制脚本运行所需的类包jar文件放到jmeter ...
- Jmeter性能测试入门(链接收藏)
Jmeter性能测试入门: http://www.cnblogs.com/TankXiao/p/4045439.html
- Jmeter性能测试入门(转)
出处:http://www.cnblogs.com/by-dream/p/5611555.html Jmeter性能测试步骤 1. 添加线程组之后,先设置这两项: 2. 添加一个http请求 被测的u ...
- Jmeter学习一:Jmeter性能测试环境搭建(Windows下)
最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...
- Jmeter性能测试
Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的 ...
- JMeter性能测试,完整入门篇
1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,也越来越流行成为了主流的性能测试工具 ...
- 【转载】Jmeter 性能测试入门
[转载]Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmete ...
- 01 jmeter性能测试系列_Jmeter的体系结构
深圳文鹏教育jmeter 性能测试讲义 概念 元件:元件代表jmeter工具菜单中的一个子菜单,比如HTTP请求.事务控制器.响应断言等: 组件:一组元件的集合(一个或者多个),比如逻辑控制器中有事务 ...
- 【Jmeter自学】Jmeter性能测试(四)
==================================================================================================== ...
- 一篇文章入门Jmeter性能测试【经典长文】
孟船长 目录 1.性能测试定义2.为什么要做性能测试3.性能测试指标.性能测试分类4.Jmeter性能测试实战[入门级]5.参考文章链接 1.性能测试定义 百度&知乎 性能测试是通过自动化的 ...
随机推荐
- unity读取Excel表格保存到Sqlite数据库
1.读取Excel表格和保存sqlite数据库所用到的dll文件 下载链接:dll文件 最后如下图所示 废话不多说了,直接上代码吧 因为太长就折叠了 using System.Collection ...
- git合并指定分支的commit到主干上
1.先切换分支到master git checkout master 2.目前正处于主干上,执行命令,将分支从最后一个commit合并到主干上 git rebase --onto cb4023015f ...
- redis字段使用说明
Set(集合)增删改查: #删除当前选择数据库中的所有key127.0.0.1:6379> flushdbOK#生成set集合,添加4个数据127.0.0.1:6379> sadd set ...
- 量化交易——MACD是什么,用python来验证交易时把它作为买卖信号到底靠不靠谱
在我刚开始学习股票的时候,是跟着b站上的视频学习的,当讲到macd的时候,up主反复强调macd是指标之王,股票里面有那么多的指标,但是却只有macd被称为指标之王,当macd出现金叉的时候,预示着股 ...
- C++ 函数与数组
C++ 函数与数组 #include<iostream> using namespace std; const int ArSize = 8; int sum_arr(int arr[], ...
- LeetCode刷题感想之滑动窗口
发现滑动窗口也是一种经典解题思路,这一篇简单聊一下滑动窗口. 通常在碰到求XX子数组,子字符串,连续XX等题眼,可以考试用滑动窗口的思路来解决问题. 窗口的类型有几种: 1. 固定长度的窗口. 2. ...
- UI自动化之【chromedriver.exe无法删除问题】
想删掉chromedriver.exe,结果提示被打开 在任务管理器中,找到Chromedriver.exe,结束进程
- 学习JavaScript第一周
三种输出方式,console.log.element.write.alert(): 简单数据类型:数值型.字符串型.布尔类型.undefined.null 复杂数据类型:对象 数据类型的转换:字符串转 ...
- 使用idea从零编写SpringCloud项目-Hystrix
ps:Hystrix和Fegin里面使用的Hystrix,有些许区别.我理解的是Fegin.Hystrix主要是用于消费方在调用服务方接口时的异常处理,返回兜底数据等,而Hystrix则是消费方自己本 ...
- 20193314白晨阳 实验一《Python程序设计》实验报告
实验一 20193314 2020-2021-2 <Python程序设计>实验1报告 课程:<Python程序设计> 班级: 201933 姓名: 白晨阳 学号:2019331 ...