JMeter学习笔记(二)
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学习笔记(二)的更多相关文章
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Redis学习笔记二 (BitMap算法分析与BitCount语法)
Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...
随机推荐
- 2014 百度之星 题解 1004 Labyrinth
Problem Description 度度熊是一仅仅喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...
- dwz关闭当前dialog
首先,前台代码如下: <form method="post" class="pageForm required-validate" onsubmit=&q ...
- Python学习(五)函数 —— 自定义函数
Python 自定义函数 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print()等.也可以创建用户自定义函数. 函数定义 函数定义的简单规则: 函数代码块以de ...
- ZeroMQZeroMQ研究与应用分析
1 ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.ZeroMQ是网络通信中新的一层,介于应用 ...
- Informatica 常用组件Source Qualifier之一 概述
转换类型:主动.已连接 1 Source Qualifier 概述 当你添加关系表或平面文件源定义至映射时,需要将它连接至 Source Qualifier 组件.Source Qualifier ...
- Ubuntu 字体设置:使用Windows 字体
基础知识 Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体. Serif=衬线体=白体:同上 Monospace=等宽字体,意思 ...
- sscanf %*s
一次在源码里看到 %*s 的格式,从未见过百思不得其解,今天用google的code搜索,搜到一些使用范例,猜测%*s 是说这里有一些字符,长度不一定,按正则表达式的习惯,*代办任意非负整数.例如: ...
- IE浏览器实现复制数据到剪贴板
IE浏览器实现复制数据到剪贴板非常简单,代码如下: if (window.clipboardData) { window.clipboardData.clearData(); window.clipb ...
- 【Linux】shell字符串分割、数组访问、条件判断
参考资料: shell字符串分割再循环:http://www.shangxueba.com/jingyan/1633455.html linux shell中 if else以及大于.小于.等于逻辑表 ...
- c语言打印uint64, int64
http://stackoverflow.com/questions/9225567/how-to-print-a-int64-t-type-in-c