接口压力自动化测试项目

自动化压测控制逻辑

image-20210318131542100

JMeter讲解及本地执行

  1. JMeter脚本,根据spring-boot-restful-api该项目的接口,进行脚本编写

    image-20210318125642477

    注意:脚本调试成功后,将断言的组件禁止,如果不禁止在压测过程中会影响到结果

  2. 执行Shell脚本(Linux和MacOS系统)如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #!/usr/bin/env bash

    # 压测脚本模板中设定的压测时间应为60秒
    export jmx_template="RESTFulApi-Test-Plan"
    export suffix=".jmx"
    export jmx_template_filename="${jmx_template}${suffix}"
    # shellcheck disable=SC2006
    # shellcheck disable=SC2155
    export os_type=`uname`

    # 需要在系统变量中定义jmeter根目录的位置,如下
    export jmeter_path="apache-jmeter-5.4.1"

    echo "自动化压测开始"

    # 压测并发数列表
    thread_number_array=(10 20 30)
    for num in "${thread_number_array[@]}"
    do
    # 生成对应压测线程的jmx文件
    export jmx_filename="${jmx_template}_${num}${suffix}"
    export jtl_filename="test_${num}.jtl"
    export web_report_path_name="web_${num}"

    # 环境清理
    rm -f "${jmx_filename}" "${jtl_filename}"
    rm -rf "${web_report_path_name}"

    cp ${jmx_template_filename} "${jmx_filename}"
    echo "生成jmx压测脚本 ${jmx_filename}"

    if [[ "${os_type}" == "Darwin" ]]; then
    sed -i "" "s/thread_num/${num}/g" "${jmx_filename}"
    else
    sed -i "s/thread_num/${num}/g" "${jmx_filename}"
    fi

    # JMeter 静默压测
    # shellcheck disable=SC2154
    "${jmeter_path}"/bin/jmeter -n -t "${jmx_filename}" -l "${jtl_filename}"

    # 生成Web压测报告
    "${jmeter_path}"/bin/jmeter -g "${jtl_filename}" -e -o "${web_report_path_name}"

    rm -f "${jmx_filename}" "${jtl_filename}"
    done
    echo "自动化压测全部结束"
  3. 将JMeter脚本和执行Shell脚本放到一个工厂下,本地执行查看结果

    image-20210318130530365

    image-20210318130827236

  4. 执行完成,查看本地生成的测试报告

    image-20210318130923815

Jenkins接口压力测试任务

  • 新建自由风格任务
  • 添加Git源码库地址
  • 添加自动化压测运行代码
  • 导出测试报告

注意:Jenkins需要配置的地方

  • 添加Groovy Postbuild(该插件,需要安装)解除Jenkins对JS渲染的限制
  • System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,””)
  • 导出HTML测试报告,需要安装插件:HTML Publisher

image-20210318132411419

image-20210318132520463

image-20210318133159866

image-20210318133357477

保存后,回到Build界面,点击[Build Now]进行执行

image-20210318133823653

回到Build界面

image-20210318133915665

点击“自动化压测-并发10”查看测试报告

image-20210318134002417

小结

  • 自动化压测-jmeter+shell
  • Jenkins与jmeter压测,环境要求
  • 自动压测运行逻辑
  • JMeter输出压力测试报告
  • 压测报告与Jenkins集成
  • Jenkins任务:源码同步、运行任务、展示测试报告