jmeter 软件测试

  

1、性能测试是什么 

性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
1.2、性能测试类型
  一般性能测试、时间测试、空间测试、负载测试、压力测试、稳定性测试、并发测试、基准测试
  1. 基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
2. 负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
3. 压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
4. 稳定性测试(可靠性测试):在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。24X3小时
5. 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题
1.3、性能测试工具
  1、HP LoadRunner
  2、Apache Jmeter 
  3、Apache AB
 
2、Jmeter简介
 2.1、Jmeter的基本概念
  Apache JMeter 是Apache组织开发的基于java的压力测试工具
  包含功能组件: 线程组(Threads)、配置组件(Config Element)、逻辑控制器(Logic Controller)、定时器(Timer)、前置处理器(Pre Processors)、后置处理器(Post Processors)、断言(Assertions)、监听器(listener)
 
 2.2、Jmeter的特点和为什么要使用jmeter
开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件
支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,
入门简单相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
多平台支持,可在Linux,Windows,Mac上运行
支持多协议
2.3、jmeter的作用
  • 接口测试
  • 性能测试
  • 压力测试
  • Web自动化测试
  • 数据库测试

 2.4、jmeter安装和环境配置

  Windows下安装jmeter

  登录http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件

  配置java环境

  1、在系统变量中新建

变量名:JAVA_HOME
变量值:安装包的路径 

  

  2、继续新建

变量名:CLASSPATH
变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib	ools.jar;

    

  3、在用户变量中添加path

%JAVA_HOME%jrein
%JAVA_HOME%in

  

  此时环境就配置好了 

  4、将下载的Jmeter文件解压,打开/bin/jmeter.bat

   

   双击进入 可能会有命令框 不要退掉命令框哦 

  

 3、基本功能介绍

1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。
3、取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、ftp请求等等。
4、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。
6、断言:用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
7、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
5、逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据

  线程:一个线程可以控制或操作同一个进程里面的其它线程

  线程组:按照线程性质对线程分组

  3.1、创建线程组

  

  3.2、创建HTTP请求
  
  3.2.1、线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环的次数
    线程数:相当于设置虚拟用户数
    准备时长:相当于相应的时间执行对应的线程数
    循环次数:相当于循环多少次
    循环总次数=线程数*循环次数
    持续时间(秒):测试持续时间,会覆盖结束时间
    启动延迟(秒):测试延迟启动时间,会覆盖启动时间
  
  如何实现请求
  
一个HTTP请求有着许多的配置参数,下面将详细介绍:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号。
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
Content encoding :内容的编码方式,默认值为iso8859
路径:目标URL路径(不包括服务器地址和端口)
 

     端口号不填默认为80 填写完成后

  创建察看结果树

  

  创建聚合报告

  

  聚合报告中包含性能指标

  

lable:对应每一个http请求,显示的是http请求的Name,如百度http请求name为baidu
#Samples:表示这一次的测试中一共发出了多少请求,如上图所示,sougou和baidu的http请求每个都发出2个请求
Average:平均响应时间,指的是所有的请求的平均响应时间,如上图的2个请求的总的响应时间除以2得出的平均响应时间,默认的情况下是单个请求的平均响应时间,但当使用了“事务控制器”时,则以事物为单位显示平均响应时间
Median:中位数,也就是50%用户的响应时间
90%Line:90%用户的响应时间
Min:最小响应时间
Max:最大的响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数,如上图所示,本次的测试中,sougou的http请求66.6%的请求出错,而baidu的请求则没有出错的请求
Throughput:吞吐量,默认情况下表示每秒完成的请求数,如上图所示,每秒完成的请求数分别为6.6个每秒,6.2个每秒
Recived KB/Sec:每秒从服务器端接收到的数据量,以kb为计算的单位

  点击绿色三角 执行线程

  点击察看结果树 能看到返回的数据

  

   3.3、逻辑控制器的使用

    3.3.1、创建事务控制器

      

    然后在创建一个HTTP请求 添加相应的请求地址

      

    勾选上

      

    勾选后就是将请求放在事务中了

    

    那我们就看看没勾选的吧

    

    那这个baidu2的请求就不属于事务中的啦

    3.3.2、循环控制器

    

    在其中设置循环次数并创建所需要的HTTP请求

    

    在这里我设置了循环两次 

    

    3.3.3、创建定时器

    固定定时器

    设置间隔时间 就会发现baidu1执行完成后300m后baidu2才开始执行的

    

    防止混乱执行

    

   3.4、CSV数据文件设置

    

     创建批量请求的文件

    

     选择创建好的文件

    

     添加对应的数据 和设置变量

    

     并且在HTTP请求中添加已经创建好的变量 

    

     然后我们根据封装数据的条数来设置相对应的线程数

    

     开始执行

    

     执行成功啦

    

     

原文地址:https://www.cnblogs.com/wanglisen/p/14091214.html