zoukankan      html  css  js  c++  java
  • 接口测试基础02

    接口测试工具的使用

    目标
    认识Jmeter并熟悉Jmeter各个元件
    学会使用Jmeter基于HTTP协议软件录制

    Jmeter是什么?

    Jmeter:是Apche公司使用Java平台开发的一款测试工具。
    作用:
    1. 接口测试  
    2. 性能测试  :内在 ----- 程序的算法
    3. 压力测试  :外在 ----- 外在负载
    4. Web自动化测试  
    5. 数据库测试  : 测试数据库 
    6. JAVA程序测试
    优点:
    1. 开源、免费
    2. 支持多协议
    3. 小巧
    4. 功能强大
    缺点
    不支持IP欺骗
    使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试
    总结: 对于测试人员,我们要记住,如果使用JMeter,必须要安装JDK或者JRE。

    Jmeter安装目录结构

    注意:
    下载后,解压文件到任意目录,避免在一个有空格的路径安装Jmeter,这将导致远程测试出现问题。
    启动JMeter的两种方式:
    方式1: ApacheJmeter.jar
    方式2: jmeter.bat (windows下)
               jmeter.sh(linux下)
    Bin目录
    存放可执行文件和配置文件
        Jmeter.bat:windows系统中JMeter的启动文件
        ApacheJMeter.jar Java环境下的JMeter启动文件
        Jmeter.log:日志文件
        Jmeter.sh:linux系统中JMeter的启动文件
        Jmeter.properties:系统配置文件
        Jmeter-server.bat:windows分布式测试要用到的服务器配置
        Jmeter-serve:linux分布式测试要用到的服务器配置
    docs目录(了解开源)
    docs:是JMeter的java Doc,可打开apiindex.html页面来查看;
    printable_docs目录
    printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中usermanual下component_reference.html是最常用到的核心元件帮助文档。
    注意:lib文件夹也是一个常用文件夹,使用时再讲。

    Jmeter 工具功能界面布局

    JMeter的主界面布局分为标题栏、菜单栏、工具栏、树形标签栏和内容栏
    标题栏:主要显示计划信息及JMeter版本。
    菜单栏:全部的功能的都包含在菜单栏中。
    工具栏:工具栏中的按钮在菜单栏都可以找到,工具栏就相当于菜单栏常用功能的快捷按钮
    树形标签栏:树形标签栏通常用来显示测试用例(计划)相关的标签。
    内容栏:配合树形标签栏显示,树形标签中点击哪个标签,内容栏中就显示相应的内容和操作。

    使用JMeter进行接口测试

    遗留的问题

    1. 需求对我们学院查询执行100次,如何去做?  如果用RESTClient,需要点击发送100次,太麻烦了
    2. 50个请求同时请求如何操作?			   如果用RESTClient,完成不了这个操作,除非用50台电脑同时请求,太麻烦了

    使用JMeter的解决方案

    1. 添加【**测试计划**】
    2. 基于添加的测试计划添加【Threads(Users)**线程组**】,循环次数设置为100次
    3. 在【取样器sampler】中基于线程组添加**HTTP请求**  
    4. 在【监听器】基于线程组添加【察看结果树】  
    5. 在监听器基于线程组添加【聚合报告】 

    Test Plan(测试计划)

    作用:
    1. 本次测试所需要的【组件】都是基于测试计划添加;
    2. 本次测试所有组件的设置与执行都基于测试计划;
    测试计划:相当于管家,一个托管的东西
    组件:完成指定功能代码段的封装;
    选项(在这里我们只介绍我们会使用到的选项)
    独立运行每个线程组:
    进程: 一个正在执行的程序就对应一个进程
    线程: 进程中的执行线索 (一个进程有多个执行线索)
    线程组(多线程):按照线程性质对线程进行分组
    线程组(多线程)的执行顺序是并行的。 
    勾选独立运行每个线程组:让本次测试计划中所有线程组保持从上到下顺序执行
    并发执行: 多个线程同时执行 **特点: 执行结束的顺序和线程的启动顺序不一定一致**
    顺序执行: 按照线程的启动顺序挨个执行
    三者之间关系
    进程有多个线程组,线程组可以有多个线程
    进程 ---- 测试计划
    线程组 ---- 线程组
    线程 ------- 线程组属性的线程数
    默认情况下,线程组中的线程是并发执行的
    每一个线程都要执行组内的  http 请求    
    怎么设置线程组顺序执行
    勾选测试计划的第一个复选框( 独立运行每个线程组)
    Add directory or jar to classpath:
    加载第三方jar包;比如:测试数据库时使用,加载数据库驱动jar包。

    Threads(User)线程组 【重点】

    1) thread group(线程组)线程组:按照线程性质对线程进行分组
    2) setup thread group【特殊线程组】  
    3) teardown thread group【特殊线程组】
    thread group(线程组)
    作用:
    1. 添加测试中使用的大多数组件
    线程属性
    - 线程数:模拟用户数 (每一个线程都要执行组内的 所有http 请求)
    - Ramp-Up Period(in serconds):启动虚拟全部用户数所需要的时间
    - 循环次数 :单个用户访问的次数(指定次数或勾选永远)
     调度器:勾选后,调度器配置才能使用;
        1)、循环次数设置为 永远
        2)、设置启动延迟 x和持续时间y
    	在 x 秒后访问服务器,并且持续  y 秒
    	3)、设置启动时间 M,和 结束时间 N
    	在 M 时开始访问,在  N 时结束
    	注意:2 和 3 实现不能同时使用,否则矛盾了

    案例

      1. 通过thread group、setup thread group、teardown thread group 三个线程组去访问查询所有学院接口
    效果图:
    需求组件:
      1. 基于测试计划添加【线程组】  
      2. 基于线程组添加【HTTP请求】
      3. 基于测试计划添加【setup thread group】线程组
      4. 基于setup thread group添加HTTP请求
      5. 基于测试计划添加【teardown thread group】线程组
      6. 基于teardown thread group添加HTTP请求
      7. 基于测试计划添加【察看结果树】
    组件详解
      1. HTTP请求
      2. 察看结果树
    HTTP请求
    作用:
    1. 模拟前端或第三方软件向服务器发送请求;
    2. 设置请求时的方法和参数数据;
    参数详解:
    1. 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
    2. 服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
    3. 端口号:目标服务器的端口号,默认值为80 。
    4. 协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
    5. 方法:发送HTTP请求的方法,可用方法包括GET、POST、PUT、DELETE。
    6. Content encoding :内容的编码方式,默认值为iso8859;一般设置【UTF-8】
    7. 路径:目标URL路径(不包括服务器地址和端口)
    8. 同请求一起发送参数:请求时需要传递参数,如:学院资源list查询
    		http://127.0.0.1:8000/api/departments/?$dep_id_list=T01,T02,T03
    		参数名称:【$dep_id_list】
            参数值:T01,T02,T03
    Body Data选项作用:
    1.新增或更新时需要传递JSON报文;如学院新增是的JSON报文填写位置:
              {
                "data": [
                          {
                            "dep_id": "T01",
                            "dep_name": "Test学院",
                            "master_name": "Test-Master",
                            "slogan": "Here is Slogan"
                          }
                        ]
              }
    
    2. 【注意】:新增和更新时传入报文也需要设置Content-Type:application/json   
                告诉服务器我传的数据格式为JSON格式;  
                设置地点:配置元件-->HTTP信息头管理器(用到的时候我们在讲解)
    HTTP请求总结:
    1. 接口完整请求地址
    2. JSON报文存放地址
    3. 设置默认请求数据格式
    察看结果树
    作用:
    1.查看请求服务器时的请求信息;
    2.查看服务器响应数据;
    3.记录信息到指定文件;
    说明:
        1. 文件名:存放服务器响应后的状态信息; 如:e:查询所有response.txt
        2. 取样结果:服务器响应的信息头信息;比如:响应代码,响应数据大小
        3. 请求:查看向服务器请求时的信息;比如:请求地址、方法、数据等
        4. 响应数据:查看服务器响应的数据;比如:获取资源时,返回的JSON数据
    察看结果树总结:
        1. 查看请求
        2. 查看响应
        3. 存储请求状态信息
    线程组总结:
       setup thread group:一种特殊线程组,测试计划运行之前首先执行,一般做初始化操作  
       teardown thread group:一种特殊线程组,测试计划运行结束时运行,一般做收尾工作   
       thread group(线程组) :线程组,我们测试计划中场景创建和实现都是基于此线程组
    元件
    概念:相同类似功能组件的集合称之为元件   
       1. 逻辑控制器  
       2. 配置元件  
       3. 定时器  
       4. 前置处理器  
       5. Sampler  
       6. 后置处理器  
       7. 断言  
       8. 监听器
    元件结论:
    只学重要的、常用的

    Jmeter 各元件中需要掌握元件

    目标
    整理出各大元件常用的重点组件
    1. 配置元件(config Element)
    1) CSV Data Set Config
    2) HTTP请求默认值
    3) HTTP信息头管理器
    2. 前置处理器(Per Processors)
    1) 用户参数 
    3. 定时器(Timer)
    1) Synchronizing Timer 
    4. 取样器(sample)
    1) HTTP请求
    2) JDBC Request 
    3) Debug Sampler
    5. 后置处理器(Post Processors)
    1) 正则表达式提取器 
    2) XPath Extractor
    6. 断言(Assertions)
    1) 响应断言 
    7. 监听器(Listener)
    1) 察看结果树
    2) 聚合报告 
    3) 断言结果
    8. 逻辑控制器
    1) 如果(If)控制器 
    2) ForEach控制器   
    3) 循环控制器 
    总结:
    正常来说,应该开始按照顺序一个组件一个组件的进行讲解。
    问题:每个组件都不能独立执行。都需要多个组件进行配合,才能够解决实际问题。
    解决方案:按照JMeter主要解决的问题点来讲解组件。

  • 相关阅读:
    c++ time_t
    sql 一些题目
    vc 找到一个或多个多重定义的符号
    c++ json 详解
    c++ json cpp
    C++ string(转)
    java web 复选框checked
    20_采用ContentProvider对外共享数据
    16_采用SharedPreferences保存用户偏好设置参数
    android开发 eclipse alt+”/”自动提示失效
  • 原文地址:https://www.cnblogs.com/st998/p/13783077.html
Copyright © 2011-2022 走看看