1.背景介绍
性能测试、负载测试、压力测试
负载测试:负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。在一定的工作负荷下,给系统造成的负荷及系统响应的时间。
压力测试:压力测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。包括:
Spike testing(尖峰冲击测试):短时间的极端负载测试
Extreme testing(极端测试):在过量用户下的负载测试
Hammer testing(锤击测试):连续执行所有能做的操作
举个跑步的例子进行解释
1.性能测试,表示在一个给定的基准下,能执行的最好情况。例如,在没有负重的情况下,你跑100米需要花多少时间(这边,没有负重是基准
2.负载测试,也是性能测试,但是他是在不同的负载下的。对于刚才那个例子,如果扩展为:在50公斤、100公斤……等情况下,你跑100米需要花多少时间
3.压力测试,是在压力情况下的性能测试。对于刚才那个例子,如果改为:在一阵强风的情况下,你在负重或没有负重的情况下,跑100米需要花多少时间
2.知识剖析
JMeter怎么使用
重要的组件:
它的作用其实是为了模拟用户,所以也叫Users。一个线程组模块可以包含多个线程,每个线程代表一个用户,这样可以模拟高并发下的请求,并根据网站的响应信息来判断网站的相关性能。
可以设置线程数,实现并发,设置启动时间,实现瞬发;设置循环时间,实现持续长度;
HTTP请求:
可以通过设置ip、端口、方法、路径已经参数访问服务器
查看结果树:
可以请求信息以及服务器响应数据
聚合报告:
可以查看所有请求的综合情况。主要参数:Samples(请求次数)、Average(平均响应时间)、Error%(错误比率)、Throughput(每秒处理的请求数)
3.常见问题
1.JMeter的使用步骤
(1)添加线程组
(2)添加http请求
(3)在http请求中写入接入url、路径、请求方式和参数
(4)添加查看结果树
(5)调用接口、查看返回值
2.压测任务需求的确认
压测前要明确压测功能和压测指标,一般需要确定的几个问题:
-
固定接口参数进行压测还是进行接口参数随机化压测?
-
要求支持多少并发数?
-
TPS(每秒钟处理事务数)目标多少?响应时间要达到多少?
-
压服务器名称还是压服务器IP,一般都是压测指定的服务器
3.压测设置
-
线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问
-
Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。
-
循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数
-
调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。
4.编码实战
线程组设置:
HTTP请求设置:
聚合报告:
查看结果树:
5.拓展思考
压测结果的分析
-
有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
-
Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
-
压测结束,登陆相应的web服务器查看CPU等性能指标,进行数据的分析;
-
一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
-
影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。
6.参考文献
https://zhidao.baidu.com/question/498084507.html
http://www.51testing.com/html/56/n-3723356-2.html
https://blog.csdn.net/github_27109687/article/details/71968662
作者:qq_41829464
来源:CSDN
原文:https://blog.csdn.net/qq_41829464/article/details/81189921
版权声明:本文为博主原创文章,转载请附上博文链接!