请你说一下jmeter

发布于 2020-01-27 19:56:18
关注者
0
被浏览
729
1 个回答
  • 面试哥
    面试哥 2020-01-27
    为面试而生,有面试问题,就找面试哥。

    参考回答:

    Jmeter:Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

    为什么使用Jmeter:

    • 开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件

    • 支持接口测试,压力测试等多种功能,支持录制回放,入门简单

    • 相较于自己编写框架或其他开源工具,有较为完善的UI界面,便于接口调试

    • 多平台支持,可在Linux,Windows,Mac上运行

    用例生成与导出:

    Jmeter的用例格式为jmx文件,实际为xml格式,感兴趣可以学习下自己定制生成想要的jmx文件。

    生成原则:

    每个功能模块为一个独立的jmx文件。增加可维护性。(尽量不要将一个jmx文件放入太多功能,后期维护成本会很高。)

    模块的私有变量保存在模块中,多模块共有的(例如服务器ip端口等)可以考虑存在单独的文件中读取。

    接口测试不要放太多线程,毕竟不是做压力测试,意义也不大。

    导出方法:

    编写测试用例

    文件——保存为——确定:

    img

    Jmeter运行模式及参数

    GUI模式

    打开已有的jmx文件(文件——打开)

    点击启动按钮运行

    命令行模式

    依赖:

    配置jmeter环境变量(windows下为将${jmeterhome}/bin加入Path变量)

    如果未加入环境变量,在执行的时候可以直接给出全路径或在${jmeterhome}/bin下执行

    命令:

    jmeter -n -t -l

    参数:

    -h 帮助 -> 打印出有用的信息并退出

    -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter

    -t 测试文件 -> 要运行的 JMeter 测试脚本文件

    -l jtl文件 -> 记录结果的文件

    -r 远程执行 -> 启动远程服务

    -H 代理主机 -> 设置 JMeter 使用的代理主机

    -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号

    -j 日志文件->设置JMeter日志文件的名称

    实例:

    JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

    执行步骤:

    JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录。比如你在 C:\tools\apache-jmeter-2.11\bin 目录下执行以上命令,JMeter 会去该目录下寻找 test.jmx 脚本并把执行结果放在该目录。如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉 JMeter。

    执行结果查看:

    GUI界面打开聚合报告

    在GUI界面创建一个聚合报告

    聚合报告界面点击浏览,选中生成的.jtl文件,打开

    img

    Jmeter使用

    Jmeter创建接口测试计划实例

    测试用例应该作为测试的基础内容,而用例的结构可能划分,则是用例的基础(忽然在这里想说一下,用例仅仅是一项测试活动的纲要,有最好,没有的话能保证质量也OK。更不用说用例的格式问题,无论是表格还是导图,其实都无所谓!本文的用例是指jmx文件中的控件结构)。

    img

    • 模块名称(测试计划):每个模块独立划分为一个jmx文件(例如登陆模块),最好与接口类一一对应。对应的服务器信息,数据库信息等可存在这里。

    • 数据准备:用于测试数据的准备(例如账号信息)。

    • 结果查看:用于放置需要查看结果的控件(例如结果树)。

    • 线程组:所有的接口测试用例放在线程组下,集中定义线程等信息

    • 获取线程对应测试数据:用于获取针对独立线程的测试数据,例如在数据准备里面获得了账号信息,在这里根据账号信息去数据库获取对应的名称,ID等信息。

    • 请求名称:用简单控制器为文件夹,内有不同的请求。简单控制器为一个独立的接口,不同请求对应不同的代码路径(例如成功请求,失败请求等)。建议请求名称最好用英文形式,否则后期持续集成或许会出现问题(no zuo no die!)。

    • 在每条请求内放置正则匹配(用于应对需要返回值作为下次请求的参数的情况)以及断言。

推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看