性能测试简述

一、 性能测试目的:发现性能瓶颈;

二、 性能测试分类:

1、 负载测试:通过逐步加压的方式,达到既定的性能阈值的目标;
2、 压力测试:通过逐步加压的方式,使得系统某些资源达到饱和,甚至是失效的状态,简单粗暴的解释就是什么条件能把系统压崩溃;
3、 并发测试:在同一时间内,多个虚拟用户同时访问同一个模块,同一个功能,通常采用测试的方法是设置集合点(意思是设置一个集合点,当用户量达到80%或者更多时全部停在这个集合点上,然后一起进行派写,同一时间进行同一个动作);
4、 容量测试:通常指数据库层面测试,目的是获取数据库最佳容量的能力,测试方法是在一定量的并发用户下,通过不同的基础数据,观察数据库的处理能力,即获取数据库的各项性能指标;
5、 可靠性测试:系统在高压情况下长时间的运行,系统是否稳定,比如在CPU使用率达到80%,运行7*24h,查看系统是否稳定(主要看内存是否溢出,因为在长时间高压测试下,会产生底层垃圾回收不彻底,)
6、 异常测试:指的是在负载均衡下,三个节点,其中一个挂掉了,查看系统是否宕机,节点挂掉后所产生的请求是否通过另外两台发送,重启后是否正常运行三台节点;

三、 性能测试工作流程:

1、 需求分析:了解用户如何让在我们的软件上是如何操作的,哪些功能是主要的;
2、 性能指标定义:测试之前首先指定一个性能指标,什么样的标准满足我们现阶段的一个性能测试要求;
3、 脚本开发+场景设置:开用工具或者代码方式进行一个脚本的开发,然后根据所需场景进行一个场景的设置(符合用户常用的一些使用流程);
4、 监控部署:使用工具进行一个性能测试的一个运行状态;
5、 测试执行:开始进行性能测试(可以先跑一些并发量少的线程,然后一点点加大测试并发量,最后连续跑一段时间);
6、 性能分析:基于监控部署,进行分析;
7、 性能调优:若发现一些问题后进行调优,之后再次进行测试执行;
8、 测试报告:满足性能指标,不在进行一个性能调优,具备上线的条件后编写;

四:性能测试指标定义:

1、 事务:从客户端发起一个过多个请求,这些请求组成一个完整的操作,到客户端接受到服务端返回的响应;
2、 TPS:每秒钟系统能处理得事务数,
3、 请求响应时间:从客户端发起请求到服务到接收在返回客户端所用得时间;
4、 事务响应时间:从客户端发起一个过多个请求,事务得请求可能不是一个请求,可能是多个,事务响应时间主要针对用户;
5、 并发定义:多个请求同一时间同时并发,比如双十一大家都针对同一个商品同一时间进行抢购(针对同一个功能);还有就是多个用户在同一个系统上进行不同操作(针对同一个系统);
6、 并发用户数:同意单位时间内对系统发起得请求数;
7、 吞吐量:一次性能测试中网络上传输得数据量综合;
8、 吞吐率:单位时间内网络上传输得数据量;吞吐率=吞吐量/传输时间
9、 点击率:每秒钟用户向服务器发送得请求数,可以想象每秒钟用户在页面上点击鼠标多少次,但需要注意得是一次点击鼠标可能发送得不是一个请求可能是多个请求;
10、 资源使用率:对不同系统得资源使用情况:CPU,内存,IO;

五、性能测试得需求分析:

  1. 明确测试指标;
  2. 明确测试场景;

六、Jmeter组成:

1、 测试计划-线程组:添加测试计划,线程组是模拟用户数发送请求数;
2、 断言:用来验证实际结果与预期结果是否一致;
3、 监听器:提供测试结果,用于分析;
4、 前置处理器:在测试之前进行得准备工作,比如建立数据连接;
5、 配置元件:测试时模拟大量用户进行操作时需要进行参数化,配置元件提供了很多函数帮助我们生成动态数据;可以记录服务器返回结果,简而言之,为取样器提供预备数据,然后由取样器发出请求;
6、 取样器:用来模拟用户操作,向服务器发送HTTP请求;
7、 后置处理器:在取样器之后,用来处理服务器返回的结果。
8、 控制器:控制jmeter来控制登录的次数;
9、 定时器:为了真实的模拟用户的负载,我们需要模拟一些请求在同一时刻发送,请定时器能满足这个需求;

七、Jmeter实现分布式并发:当并发量比较大时,单台电脑不足以支撑,这个时候就需要分布式并发来进行性能测试;

1、 Master在jmeter.properties中添加remote_hosts(master指的是主压力机)
2、 Slave在jmeter.properties中添加server_port(slave指的是从压力机)
3、 Slave启动jmeter_server

八、linux服务器性能测试:

1、 测试目的:发现服务器性能瓶颈(服务器配置的不同性能也不同);
2、 测试范围以及性能指标:

  1. CPU:处理服务器一些数据计算等工作;
  2. 网络:数据传出,带宽是指承载数据的大小,传输速度决定性作用;
  3. 内存:临时存储一些数据;
  4. 版本:不同版本系统性能不同;
  5. 磁盘:最终存储数据的地方
    进程与线程区别:进程可以独立运行,一个线程只能属于一个进程,而一个进程可以拥有多个线程,线程是进程的最小单位;
    服务器实时数据指标监控:
    6.Top:-p指的是监控指定进程,当监控多个进程时进程ID以逗号分隔。
    7.Top任务区命令:M-按内存使用率排序;P-按CPU使用率排序;z-彩色/黑白;
    8.Sar:目前linux上最全面的系统性能分析工具之一,可以从多方面对系统活动进行报告,监控的范围是文件的读写情况,系统调用的使用情况,磁盘I/O,CPU效率,内存使用情况,进程活动等;
    语法:sar [options][-A][-o file] t [n]:-A所有报告总和、-u CPU利用率、-v 进程,节点,文件和锁表状态、-r 显示系统内存使用情况;
    9.Linux监控工具nmon:可以捕捉系统资源是的使用情况,并且可以输出结果到文件,通过nmon_analyzer工具产出数据文件与图形化结果;nmon -f -F file 文件名称 -s 1 -c 10 -t;
    九、多协议接口性能测试:
    1、 目的:发现应用程序的性能瓶颈;
    2、 范围:查看应用程序各项性能指标;
    3、 常见接口协议:HTTP超文本传输协议,HTTPS安全超文本传输协议,FTP文件传输协议,TCP网络控制协议,IP互联网协议
    4、 理解HTTPS协议:默认端口—443、http协议的安全版,有加密传输协议;
    十、接口性能操作:
    1、 添加线程组,设置模拟用户的请求数量;执行多少秒,是否循环;
    2、 添加协议请求,http协议直接填写IP,注意检查请求方式是GET还是POST或者为其他请求方式,注意填写接口路径,除get请求之外,其他请求需要填写参数信息,也可以直接在body中编写参数信息;
    https请求需要在协议栏中注明https,端口为443,其他操作与http一致;
    ftp需要新增ftp请求,ftp协议为文件传输协议,需要添加服务器地址,远程文件,用户名密码等信息;其他jmeter组件可以根据场景需要进行添加用于辅助;
    十一、性能测试报告:
    1、 测试结论:测试通过还是不通过,不通过的原因是什么,明确哪个接口,场景等不通过,如果通过需要说明一下最大的性能指标;
    2、 测试人员:本次性能测试的人员;
    3、 容量规划:规划一下我们的系统的性能容量在接下来的多长时间中可以保持这个指标,可以撑得住用户的增速访问;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容