3.JMeter测试计划要素

JMeter中一个脚本即是一个测试计划,也是一个管理单元。JMeter的请求模拟与并发数(设置线程数,一个线程代表一个虚拟用户)设置都在脚本文件中一起设置。

要素一:脚本中测试计划只能有一个

JMeter测试计划类似LoadRunner Controller中的测试场景,同一时刻场景固然只能有一个,JMeter脚本在GUI中显示时是树形结构,测试计划是根节点,根节点当然只能有一个。

要素二:测试计划中至少要有一个线程组

JMeter负载是通过线程组驱动的,所以计划中至少要出现一个线程组。JMeter测试计划支持多个线程组,把不想管的业务分部在不同的线程组中。

要素三:至少要有一个取样器

测试的目的就是要模拟用户请求,没有取样脚本就毫无意义。

要素四:至少要有一个监听器

测试结果用来衡量系统性能,我们需要从结果中分析系统性能。

4.JMeter运行逻辑

第一,利用取样器模拟用户请求,如果需要做一些数据及环境的准备,那么久使用配置管理器,如果需要对响应的数据做处理,使用后置处理器。

第二,控制运行,使用线程组来设置运行场景,利用逻辑控制器来控制业务(实际就是控制取样器)。

第三,收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果。

同时JMeter也支持远程运行,弥补单台机器负载不够的情况。

5.JMeter Http协议录制

Http代理方式进行录制的原理是解析网络数据包。

5.1 Badboy进行录制

Badboy录制的脚本可以直接导出为.jmx格式,jmx正是JMeter脚本保存的格式,jmx实际上是一个XML格式的文件。

Badboy的录制方式有两种:一种是Request方式,一种是Navigation方式。这两种方式区别如下:

request:模仿浏览器发送表单信息到服务器,每个资源都将作为请求发送;

Navigation:记录用户鼠标操作,类似于自动化测试工具QTP,回放时模拟一个个点击。

5.2 界面详解

通过Badboy录制后的脚本导入到JMeter,以树形结构显示脚本,执行时原则上按节点先后顺序往下执行。详细界面如下:

A. Test Plan:测试计划,JMeter测试脚本根节点,每一个测试脚本都是一个测试计划,名称可以自己定义。

(1)设置用户全局变量,即在“用户定义变量”中定义。

(2)独立运行每个线程组,如果一个测试计划中有多个线程组,设置此项可以生效。不设置时每个线程组同时运行。

(3)Run teardown Thread Groups after shutdown of main threads,关闭主线程后运行teardown程序来正常关闭线程组(运行的线程本次迭代完成后关闭)。

(4)函数测试模式,在调试脚本的过程中我们可能需要获取服务器返回的详细信息就可以选择此项,此项记录较多的数据会影响测试效率,所以在执行性能测试时关闭此项。

(5)Add diretory or jar to classpath,把测试需要依赖的jar包或包所在的目录加入类路径。不过还是建议大家把依赖的jar包添加到%JMETER_HOME%\lib目录下。

B. Thread Group:线程组模拟虚拟用户的发起点,在此可以设置线程数(类似LoadRunner中的多少个虚拟用户)及运行次数或者运行时间,还可以定义调度时间和运行时长。

C. HTTP Cookie Manager:我们知道在用IE访问Web页面时会记录Cookie信息,JMeter通过加入HTTP Cookie Manager来自动记录Cookie信息,这里选择默认即可。

JMeter学习笔记(二)的更多相关文章

  1. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  4. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  5. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  6. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  7. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  8. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  10. Redis学习笔记二 (BitMap算法分析与BitCount语法)

    Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...

随机推荐

  1. There is no Action mapped for namespace [/] and action name [Login] associated with context path [/e

    近期学习web开发时,就遇到这个令人头疼的问题. 百度谷歌了N遍,最终在博客http://blog.csdn.net/liu578182160/article/details/17266879中找到了 ...

  2. 容器+AOP实现动态部署(四)

    上篇咱们介绍了容器和AOP的结合,结合后怎样将对象增强服务并没有过多的说明,这里将详细说明怎样将对象 进行增强 ,达到一个一对多和多对多的增强方式 先从简单的方式说起 /** *JDK代理类,实现动态 ...

  3. Out of memory: Kill process 内存不足

    服务直接被 killed,感觉特别奇怪.代码肯定是没有问题的,但为什么放到服务器上就出错了呢. 部署时报错如下: Failed to add the deployment content to the ...

  4. 从头開始学 RecyclerView(六) LayoutManager

    前言 在前面的文章中.每一个演示样例,都使用了LayoutManager,毕竟它是RecyclerView必不可少的一部分. LayoutManager,顾名思义,就是『布局管理器』. 使用例如以下代 ...

  5. Qt 串口类QSerialPort 使用笔记

    Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...

  6. ZeroClipboard及其原理介绍

    系列教程地址:http://www.365mini.com/page/zeroclipboard-2_x-quick-start.htm ZeroClipboard 是国外大神开发的一个用于剪贴板复制 ...

  7. 公司上线流程 pushonline_alpha

     这是在公司将服务部署上线的一个记录,只是部署很小的python脚本,各公司不同,参考性不是很大 开始吧(版本管理是git) 1.整理好代码后:git add xxx.py git commit -m ...

  8. Sqlserver获取行号

    Sqlserver获取行号   select row_number()over(order by userid )as RowNum,*from OUM_User

  9. 循环栅栏:CyclicBarrier(司令要求任务) 读书笔记

    可以理解为循环栅栏,栅栏就是一种障碍物.假如我们将计数器设置为10,那么凑齐第一批10个线程后,计数器就会归零,然后接着凑齐下一批10个线程,这就是循环栅栏的含义. 构造器: public Cycli ...

  10. Nginx如何保留真实IP和获取前端IP

    原理: squid,varnish以及nginx等,在做反向代理的时候,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端web服务 ...