写在前面:在人之下,把自己当人;在人之上,把别人当人。成大事者,既要有振臂一呼的气魄,也要有细致入微的悲悯
今天和大家一起动手编写一个简单的脚本,目标:简单的希望大家能跟我一起动手实操下,如果可以举一反三就更好啦~
1. 首先启动Jmeter,按照上一篇文章的步骤,录制一个Jmeter官网中用户手册的脚本(可直接访问网址:http://jmeter.apache.org/usermanual/index.html,也可以先进入官方网址http://jmeter.apache.org,点击【Documentation】,选择【User's Manuel】)
2. 选中无关的元件,右键--删除(或者直接点一下键盘上的Delete进行删除),只留下如图控制器XX/usermanual/index.html(XX为前缀数字)
3. 然后选中测试计划,右键--添加--线程(用户),简单介绍下这三个线程:
① SetUp Thread Group:测试初始化操作,即线程组开始之前执行的内容,可用于初始化测试环境、测试数据准备等。
② TearDown Thread Group:测试执行后操作,即线程组执行完成后执行的内容,可用于清理测试环境、清空测试数据等。
③ Thread Group:常规意义上的线程组,即虚拟用户组,我们现在就要选择这个线程组,如图所示:
4. 给新添加的线程组起一个相关名称,因为要在这个线程组内写关于Jmeter官网内的各个页面,所以这里命名为“Jmeter”,并增加“Jmeter官网”的注释(编辑完鼠标单击左侧任意一个元件就可以保存刚刚的修改)
线程组右侧内容栏介绍: ① 取样器错误后执行的操作 (如果由于样本本身失败或断言失败而导致的取样器错误,该如何处理): 继续执行:忽略错误并继续测试 开始下一个线程循环:忽略错误,开始下一个循环并继续测试 停止线程:当前线程退出 停止测试:整个测试在任何当前样本结束时停止。 立即停止测试:整个测试突然停止。 如有可能,任何当前取样器都会中断 ② 线程属性 :线程数量,线程启动间隔时间(0为立刻启动所有线程),单线程循环次数,线程执行顺序,是否使用调度器; 设置线程数Set the number of threads,即要模拟的用户数量(一线程一用户) 设置加速期/线程启动间隔时间(0为立刻启动所有线程)(加速期/线程数=间隔多长时间执行下一个线程) 加速期告诉JMeter需要多长时间才能完成当前全部的线程数量。如果使用30个线程,并且加速时间为120秒,则JMeter将花费120秒来使所有30个线程启动并运行。每个线程将在上一个线程开始后4(120/30)秒开始, 也就是说每个连续的线程都将延迟4秒(一般都从ramp-up=线程数开始,根据需要再作调整) 单线程循环次数,执行测试用例的次数。如果选择“ 永远 ”运行测试,直到手动停止为止 线程执行顺序:每个线程将完整地执行测试计划,并完全独立于其他测试线程。多个线程用于模拟与服务器应用程序server application的并发连接 将线程创建延迟到需要的时候:如果选择,仅在经过适当比例的加速时间后才创建线程。这最适合加速时间明显长于执行单个线程的时间的测试。即较早的线程在较晚的线程开始之前先完成的位置。 如果未选择,则会在测试开始时创建所有线程(然后暂停相应的加速时间)。这是原始默认设置,适用于在整个测试的大部分时间内线程都处于活动状态的测试 是否使用调度器:线程组提供了一个调度程序。单击此复选框可启用/禁用其他字段 ③ 调度器配置 :持续时间,启动延迟。 可以配置持续时间(秒)和启动延迟(秒)来控制每个线程组的持续时间以及在多少秒之后开始的时间。测试开始时,JMeter将等待启动延迟(秒),然后启动线程组的线程并运行配置的持续时间(秒)5. 选中如下图的HTTP请求取样器,右键选择复制
6. 然后选择刚刚添加的Jmeter线程组,右键粘贴,就会发现线程组左侧多一个三角形箭头,点击箭头展开线程组,选中HTTP请求取样器
HTTP请求右侧内容栏介绍: 修改名称和注释 基本选项卡 Web服务器 协议:HTTP、HTTPS或FILE 服务器名称或IP:不包括http://前缀 端口号:443或8080等 HTTP请求方法:GET,POST,HEAD等 路径:除去主机地址部分的访问链接,如:/usermanual/index.html内容编码:用于POST,PUT,PATCH和FILE 的内容编码,默认iso8859,大多数情况下使用utf-8,与Content-Encoding HTTP标头无关 自动重定向:设置基础的http协议处理程序以自动跟随重定向,仅应用于GET和HEAD请求。HttpClient取样器将拒绝将其用于POST或PUT的尝试 跟随重定向:仅当未启用“自动重定向”时,此选项才有效使用KeepAlive:JMeter设置Connection:keep-alive标头 使用multipart/form-data:当发送HTTP POST请求时,使用use multipart/form-data方法发送请求,比如用它做文件上传 与浏览器兼容的头:当使用multipart/form-data时,会抑制Content-Type和Content-Transfer-Encoding标头,仅发送Content-Disposition标头,所以建议勾选此项 参数:点击【添加】按钮, 可增加请求参数和对应的请求值,并设置是否编码、内容类型等,单击下方的向上/向下可调整参数位置,单击详细,可查看参数的详细信息消息体数据:可以Json格式发送请求参数文件上传: 点击【添加】按钮, 可增加文件参数,也可通过浏览添加指定文件 注:只有删除“参数”选项卡全部内容,才能切换到“消息体数据”选项卡,反之同。 高级选项卡 客户端实现实现:下拉框内可选HttpClient4、Java,默认为空 超时(毫秒) 连接:等待打开连接的毫秒数 响应:等待响应的毫秒数,适用于每次等待响应 从HTML文件嵌入资源 从HTML文件获取所有内含的资源,可设置并行下载数量和网址匹配内容,默认不选 源地址 可选择IP/主机名或设备等信息进行填写 代理服务器 可设置代理服务器执行请求的Scheme、服务器名称或IP、端口号、代理服务器的用户名、密码 其他任务是否保存响应为MD5哈希,默认不勾选 了解:HTTP请求是取样器中的一种,位置:选中线程组,右键--添加--取样器--HTTP请求,可以把HTTP请求元件看成是一个没有界面的浏览器,它可以将HTTP / HTTPS请求发送到Web服务器7. 选中HTTP信息头管理器,删除(因为“简单的”脚本里面不需要这个元件,但是既然看到它了,就简单打个照面,介绍下吧~)
① 此元件可用于定义请求信息头,在其覆盖下的所有元件都会使用该信息头
② 可以添加多个HTTP信息头管理器,头信息会被合并成取样器的头列表
③ HTTP请求标头可以被添加或覆盖。如果要合并的条目与现有的标题名称一样,将替换前一个条目。
注:头信息中的空值不会删除现有的标头,而只是替换其值。
了解:HTTP信息头管理器是配置元件中的一种,位置:选中取样器或线程组或测试计划,右键--添加--配置元件--HTTP信息头管理器
8. 添加查看结果树,位置:选中取样器或线程组或测试计划,右键--添加--监听器--查看结果树
选中查看结果树,修改名称,如下图
结果树右侧内容栏介绍:
所有数据写入一个文件
文件名:包含样本结果的文件名称
显示日志内容:
仅错误日志:仅写入/读取有错误的结果
仅成功日志:仅写入/读取结果而不会出现错误
如果未勾选上面两个选项,将处理所有结果
配置:点击此按钮,可以通过配置弹窗为不同的项目配置保存日志文件的结果
查找:可以选择是否区分大小写或使用正则表达式进行内容查找
Text下拉框:点击,可选择不同查看响应的方式,更加清晰直观地显示不同的取样器请求;也可以查看获得此响应所花费的时间以及一些响应码信息
9. 删除上面的线程组,到此为止,简单的脚本就写好啦~运行一下,看看结果(测试计划+线程组+取样器+监听器)注:例子中的请求是没有参数的,大家可以试试自己写个带参数或者POST方法的请求~