• JMeter 十四:最佳实践


    参考:http://jmeter.apache.org/usermanual/best-practices.html

    1. 总是使用最新版本的JMeter

    2. 使用合适数目的Thread

    Thread数目取决于:硬件环境、Test Plan的设计、以及服务器的运行速度。

    不合适数目的Thread,可能会造成测试结果不正确或者不精确。

    如果我们需要大规模的负载测试,可以考虑在分布式模式下多个机器命令行运行JMeter。

    3. 正确使用 HTTP(S) Test Script Recorder

    1. 过滤录制的内容

    录制时,最重要的事情就是要找出哪些是我们不感兴趣的请求。

    比如,录制图片请求就没有意义。这时候我们就可以在 HTTP(S) Test Script Recorder -> Requests Filtering -> URL Patterns to Exclude 中添加“.*.gif”,这样录制的时候就不会录制gif请求。类似的可能我们也会排除CSS、JS文件。

    我们感兴趣的请求,比如“.jsp, .asp, .php, .html”之类,我们就可以在 HTTP(S) Test Script Recorder -> Requests Filtering -> URL Patterns to Include 中添加“.*.jsp”等。

    2. 变量处理

    在Test Plan级别定义的变量,以及 User Defined Variables 控件定义的变量,JMeter 录制时,遇到值会自动使用变量进行替换。

    假如我们定义了一个变量叫“server”,值为“www.baidu.com”,那么录制的样本中,任意地方的“www.baidu.com”都会自动用“${server}”来代替。

    这里要注意的是,匹配是大小写敏感的。

    4. 减少资源需求

    以下是一些建议:

    • 使用命令行模式跑测试:jmeter –n –t test.jmx –l test.jtl
    • 尽量少使用Listeners。如果我们使用 –l 命令,那么所有的Listeners 都可以不要了。因为后期分析完全可以使用 –l 生成的文件来产生所有的Listeners结果
    • 负载测试时,不要使用“View Results Tree”或者”View Results in Table“。这两项只能在编写脚本阶段、或者调试脚本时期使用
    • 不要使用很多相似的取样器,我们可以在一个循环中使用相同的取样器,然后使用变量来区别这些取样器。
    • 不要使用 Test Plan 的 Functional Test Mode
    • 输出尽量选择CSV,来代替XML
    • 只保存我们需要的数据
    • 尽量少使用Assertions

    5. 参数化测试

    我们经常需要在不同设置下跑相同的测试用例。比如,改变Thread数目,或者循环次数,或者改变服务器地址。

    一种解决方案是在Test Plan中定义一系列变量,然后在测试中使用这些变量。这样如果有有变动就只需要改变这些变量的值即可。

    另外一种解决方案是按照属性值来定义变量值。这样比较适用于命令行方式运行多个测试。比如我们可以定义一个变量 LOOPS,变量值为“${__P(loops,10)}”。这里“__P”是一个函数。这样如果命令行定义了属性loops的值,那么就采用命令行定义的值,否则就采用变量默认的“10”。

    比如“jmeter -n -t "Test Plan1.jmx" -l a.csv”,会有10次循环。

    “jmeter -n -t "Test Plan1.jmx" -l a.csv –Jloops=12”,会有12次循环。

    image

    6. 管理属性文档

    最好不要更改 jmeter.properties 文件。

    如果我们想要更改jmeter 属性,可以考虑从jmeter.properties中将这些属性拷贝出来,放到 user.properties文件中,然后进行修改。

    user.properties属性文件会覆盖 jmeter.properties属性文件的属性。

    7. 扩展JMeter

    有很多开源的插件之类可以帮助我们使用JMeter.

    我们可以在JMeter Wiki上看到资源列表。

  • 相关阅读:
    微信小程序 开发 微信开发者工具 快捷键
    .NET 4.0 任务(Task)
    MVC UpdateModel的未能更新XXXXX的类型模型
    ORACLE 定时执行存储过程
    DotNet 资源大全中文版(Awesome最新版)
    基于SignalR实现B/S系统对windows服务运行状态的监测
    Method not found: '!!0[] System.Array.Empty()'.
    MVC-RedirectToAction跳转到其他Area
    C# where用法
    C#委托的介绍(delegate、Action、Func、predicate)
  • 原文地址:https://www.cnblogs.com/miniren/p/7211513.html
Copyright © 2020-2023  润新知