zoukankan      html  css  js  c++  java
  • 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请求中添加已经创建好的变量 

        

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

        

         开始执行

        

         执行成功啦

        

         

  • 相关阅读:
    unit3d 4.6 document open solution
    Unity3dBug
    linq to xml
    A const field of a reference type other than string can only be initialized with null Error [duplicate]
    Redis数据类型
    redis快照与AOF
    redis实现高并发下的抢购/秒杀功能
    xss攻击怎么防止
    四种常见的索引类型
    什么是sql 注入及如何预防 sql 注入
  • 原文地址:https://www.cnblogs.com/wanglisen/p/14091214.html
Copyright © 2011-2022 走看看