|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
9 F. w9 y6 `+ b3 a6 a介绍Jmeter常用元件,大概了解下,具体使用过程中会更深入的讲解和了解。
$ e. h. A6 e% a2 W+ w
; c( o; U D9 T2 h& w打开jmeter页面:包含测试计划+工作台(JMETER4.0之后,打开后默认工作台没有了)
5 q7 Y$ W% n9 }$ V$ ~
% f7 W% D4 O7 z2 p" y+ k3 |一、test plan(测试计划)
6 _ g5 Q( z8 W2 S6 P9 P7 z5 e用来描述一个测试,包含与本次测试所有相关的功能。也就说本的测试的所有内容是于基于一个计划的。
4 I9 {* m8 x$ b8 h
, |% F7 i' m+ A; X c右键单击“测试计划”弹出菜单:% g3 w" A* a2 z* `. S' h! _
- w7 e6 S0 L Z- K! n2 c5 w
/ r" y. ?; M% h- k) t' v
2 |/ X" F3 A' o$ M( s2 O! ^
测试计划
7 k/ g% D/ w( g: a7 \% y/ H6 m2 d) n1 V) V8 W0 l+ p( O* ?
4 V& ?( W7 S( z3 k注意:* w4 }' C! Z+ C- I, z
“函数测试模式”复选框,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据。如果你在测试监听器中选择一个文件,这个数据将被写入文件。如果你尝试一个较小的测试来保证Jmeter配置正确并且你的服务器正在返回期望的结果,这是很有用的。这样做的后果就是这个文件会快速的增大,并且Jmeter的效率会影响。+ R0 F2 V2 h7 }" V* W2 D9 K
% m4 c/ |8 F* g如果不记录数据到文件,这个选项就没有不同了。0 R+ r% P* z, ?0 V: C1 U) C
2 y. [8 C& v, q+ R* u$ [8 ^* i1、Threads (Users)线程用户
v0 O6 F2 H7 A" r2 J, S. T
9 a: `8 F# Y1 q- e6 c% |, Y4 mThreads (Users)线程用户
5 K& T7 d& T* C G' C' b. @4 t4 Z" l" X8 V4 D) N% p
里面应该有三个线程组的选项,名字不一样,创建之后,其界面是完全一样的。$ x8 P' ]+ T, Y' ^( g6 y8 H) C/ C
3 d7 a2 m. n0 Y. x1 g1)setup Thread Group
" Q) o$ \8 J# g" a. x; L2 \3 J4 Q, F
一种特殊类型的线程组,可用于执行预测试操作,一般在性能测试中用到。这些线程组行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。- Z1 }# Z) j8 @2 x5 G
; k+ {. Z2 C) R# ^# O8 E, FsetUp Thread Group类似于lr的init.可用于执行预测试操作。$ C7 d) O X8 m! D$ v7 J
\ P f- {3 F3 P! Z" q8 w
2) teardown thread group
" u# ~4 l% D' O: ? W! W- o
% m' J, M% k/ l* J一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。3 N5 b3 u! J5 i0 V
+ O1 o6 P. Q2 b" M1 b8 F
tearDown Thread Group类似于lr的end,可用于执行测试后动作。
Z$ t# |/ i9 b7 v/ v' a& O9 i0 k) c, L6 G+ y1 }& f/ b
3) thread group(线程组)
; v, o5 M& G6 m5 S0 K
/ w" }2 P6 K3 P+ n$ {3 B. }! `9 F 这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
. X* Z b# L0 J0 n5 o
, D* P! v2 _# } Z- t
线程组; [ C* e% w, o ^; g, {: L
* p1 r4 x [' w) }. x! @) [1 a8 n线程组:
: U U" O6 _. E2 e9 g9 j: x, a8 _& c1 O F4 s$ S+ w3 h
名称:就如字面意思,起个有意义的名字就行
3 I7 r& z5 ~ X, x* F( r$ C0 k7 Y8 D: W C5 T
注释:添加备注信息
7 m8 S+ w0 G$ V! W7 Z+ R
7 ^5 V. Y& L& g; b 线程数:类似Loadrunner的vuser数. T7 _8 D6 p! G A8 G x
- A" k6 r" J: R$ _4 Q3 b# T/ q4 l
Ramp-Up Period:单位是秒,默认时间是1秒。它指定了启动所有线程所花费的时间,比如,当前的设定表示“在5秒内启动5个线程,每个线程的间隔时间为1秒”。如果你需要Jmeter立即启动所有线程,将此设定为0即可( d6 P. [" @' F% s
- ], F9 ^& q w2 J6 U4 v 循环次数:表示每个线程执行多少次请求。/ T f+ S+ ]1 O3 r$ ?1 b& ]
, z" L& o* G: n1 ~% R
2、测试片段(Test Fragment)0 j) D; }' e! w% q
3 k. ?8 D; \# G1 p: ^$ h+ U; `
Test Fragment$ f7 M6 I/ y3 q
1 n* z; |5 o, ?4 O5 W, T: g
测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
4 Q. b9 i3 |% E( B; }" }7 ~. M- @' \
3、逻辑控制器
, b6 l7 ^* Z1 l' \# L# d
5 q! X6 d1 B% q1 l) l$ S8 d逻辑控制器) k4 r" Y) X0 _( ~' e' W
- z$ K0 I; E3 A* S' t
逻辑控制器,包括两类无件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、 switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的, 如 事务控制器、吞吐量控制器。& |6 {4 D g% D
! n; M/ y3 J# i A
4、配置元件$ s2 L: }. T% H) k7 q \0 V0 Q; s( z- {. F3 W
' \5 s, @$ g- J4 ]- I4 Q配置元件
1 s& T( S* b6 C$ t6 R. k" O8 s( r# k9 M7 q
) P1 _- B1 B x5 e1 T7 G 配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池 (Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改 Sampler的默认数据。
1 C( g3 N+ y& {# g. _
* d" j' |$ d! ^6 c5 X例如:HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理。
( C/ M. l: ~; ^8 ^6 {
8 U' Q* Z' M4 L2 l7 m HTTP 请求默认值不会触发Jmeter发送http请求,而只是定义HTTP请求的默认属性。
' p z2 P( }2 E+ `( {1 S3 \- W, R0 ^4 x
5、定时器5 L9 R, N% c$ j! b ~$ q( U$ C& U
0 V t$ H3 V' U0 i; S8 L定时器- S- I& B9 Y; b0 v. W) s1 G
' T. w4 n, w7 t f m- A定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的“思考时间”。 JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。" F v% o0 G1 y/ C8 B7 T/ f1 ^: ?( l
) V# Y6 L! O1 v6、前置处理器
: \( t9 Z* _9 q* Z6 {7 Z `- G9 h
& b9 I, I) h: [ 前置处理器用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
# u7 @7 ]0 [& s9 _7 |- P# M. P6 j! K" ]( Y# q1 Z w
7、取样器(Sampler): m: y/ @% ?. A3 w
3 r8 C; `7 L: M* n2 R1 U/ T* F9 g
取样器% V9 I( E( w$ X% e6 P" G
$ A# B/ N- Q! D0 j4 m& _
取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler , 如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、 JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
1 _! H6 ~$ R& ^+ x7 @ B- r* W
; j8 o. K6 e( B! _8 f在Jmeter的所有Sampler中,Java Request Sampler与BeanShell Requst Sampler是两种特殊的可定制的Sampler.
0 P# T3 Q; }6 K$ Y* O2 u2 {
- i: m6 A+ O2 |8、后置处理器
8 a: m5 g, `5 n3 ~$ m
+ t1 M% i3 j; e! \: j
后置处理器" s- V' [4 B- C# |/ Z3 l
8 C$ v8 R! d; r后置处理器是用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据;正则表达式提取器,则可以提取响应数据中通过正则表达式获得的数据。' T8 j8 l& N$ v
1 {( e X) {( h E9、断言(Assertions)5 }! T9 z2 Z; E" Z3 x" z1 L, S! i
6 k; C! d0 \' U9 t( y. O
断言+ G4 w; X8 Z/ ]. A
. T* ~2 Y1 k! M" f+ ^! K
断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
2 K; F; F/ t/ C9 ~% x
+ j$ D' ` @2 d& R10、监听器* G3 t+ `( @2 ^7 l
! M( j l. o" q
监听器$ i- o: b7 o1 C! A2 S( ^
9 [+ }* O+ [# q1 j$ H5 Q
这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。 图形结果、查看结果树、聚合报告、用表格察看结果都是我们经常用到的元件。( J, y/ {+ v6 B, G+ `
7 g& p+ G" p/ s* p$ ]二、工作台* z" r* v2 f! y- c4 e) s% V
- J$ J, \- `% @(jmeter4.0默认打开没有,这里还是讲一讲): B+ e/ ^) x, P1 \3 m6 i. c
9 D. `6 H0 m6 q2 @; x工作台0 S8 M7 w/ p8 n. H( N" M
& K4 E9 Q- }4 g, ]9 e0 p4 @
在测试中我们可能需要暂时更改一些组件,可以把一些需要更改的组件保存在工作台中,测试完成后再恢复,但是切记:不能退出jmeter.一旦退出jmeter,工作台中的内容就会消失。
( T6 b& j. N! Z+ n4 F, F
) Y/ ?% W/ G1 X7 n' y1、工作台-非测试元件-Property Display! c2 W) V8 G1 H2 A X
3 C) { s0 F) ^! n7 J; WProperty Display
" h6 y: r* a2 o) _/ T# S4 v8 q I9 b7 B% V- @
此元件相当于是jmeter.properties的GUI( c( g" ?& e& ?8 s2 g4 j
: _& q' B8 \. e
2、HTTP代理服务器
' D- h$ d9 c: v
9 Q3 h1 k& {+ ^9 cHTTP代理服务器
4 ]+ Y9 C1 m1 t% n8 |/ T1 r
+ F& P9 m T& Z2 J5 `; X可以录制脚本
6 i9 w- \+ l! W9 C1 l( Q1 _8 A: P9 {: U. Q& c5 R' _
3、HTTP Mirror Server7 Q1 R: f# ]) @3 A
1 p! T4 h$ M. G+ v- sHTTP Mirror Server- w- \& a: s9 ]5 \' O# T
; _+ {' Y2 B) \* u0 C* n9 B3 ^可以用来调试
0 Q2 T: D: ^' t
" i `$ c* G" ~- q4 V+ k5 s4 k `& \9 T( j5 Q1 K1 S& T- @
$ u8 m0 _- O+ o8 N% d4 Q7 n; o; D9 }8 j" F
|
|