6.4.定义加载进程(翻译)
6.4.定义加载进程
6.4.1.随机产生用户数
通过定义几个arrivalphase,来加载进程。
<load>
<arrivalphase phase="1" duration="10" unit="minute">
<users interarrival="2" unit="second"></users>
</arrivalphase>
<arrivalphase phase="2" duration="10" unit="minute">
<users interarrival="1" unit="second"></users>
</arrivalphase>
<arrivalphase phase="3" duration="10" unit="minute">
<users interarrival="0.1" unit="second"></users>
</arrivalphase>
</load>
这个结构中,第一个10min的测试中,每隔2s产生一个新用户。下一个10min中,每隔1s产生一个新用户。最后10min中,每隔1s产生10个用户。当所有的用户结束其session,测试也将结束。
也可以用arrivalrate 代替interarrival,例如下面,每秒10个新用户:
<arrivalphase phase="1" duration="10" unit="minute">
<users arrivalrate="10" unit="second"></users>
</arrivalphase>
我们也可以通过设置maxnumber属性,来限制每个phrase启动的用户数,如下:
<arrivalphase phase="1" duration="10" unit="minute">
<users maxnumber="100" arrivalrate="10" unit="second"></users>
</arrivalphase>
<arrivalphase phase="2" duration="10" unit="minute">
<users maxnumber="200" arrivalrate="10" unit="second"></users>
</arrivalphase>
在这个测试用例中,第一阶段仅创建了100个用户,第二个阶段超过200.
在load标签中使用loop属性,完全按照顺序执行循环次数(loop='2'意思是顺序执行2次循环,因此加载完全执行了3次)(1.2.2版本之后有效)。以每秒产生的HTTP请求负载,取决于一个session中平均请求数(如果每个session有100个请求并且每秒10新用户,理论上平均吞吐量是每秒1000请求)。新版本1.5.1,可以在详细的phase中使用session_setup来重新设置。如下:
<arrivalphase phase="3" duration="1" unit="minute">
<session_setup name="http_test_1" probability="80"/>
<session_setup name="fake" probability="20"/>
<users interarrival="1" unit="second"/>
</arrivalphase>
6.4.2.静态生产用户
从1.3.1版本开始,在给定的时间、给定session的执行测试。
<load>
<arrivalphase phase="1" duration="10" unit="minute">
<users interarrival="2" unit="second"></users>
</arrivalphase>
<user session="http-example" start_time="185" unit="second"></user>
<user session="http-example" start_time="10" unit="minute"></user>
<user session="foo" start_time="11" unit="minute"></user>
</load>
<sessions>
<session name="http-example" probability="0" type="ts_http">
<request> <http url="/" method="GET"></http> </request>
</session>
<session name="foobar" probability="0" type="ts_http">
<request> <http url="/bar" method="GET"></http> </request>
</session>
<session name="foo" probability="100" type="ts_http">
<request> <http url="/" method="GET"></http> </request>
</session>
<sessions>
在这个例子中,我们2个sessions,一个“0”概率(在第一个阶段,因此没有被使用),另一个的概率是“100%”。开始测试的3min5s后(http-example session),我们定义了3个用户。其中一个10min后执行,最后一个11min后执行。
1.5.1版本后,如果一次执行多个session,并且这些session的名称始于相同前置条件,可以使用通配符。给定session的优先级,以下例子在开始时间10s后执行2个用户(一个foo session,另一个foobar session)
<user session="foo*" start_time="10" unit="second"/>
6.4.3持续加载测试
所用的用户完成其session后,默认tsung结束。因此实际结束时间比arrivalphases时间要长。如果想要在给定的持续时间后停止tsung(即使phrase没有结束,或者一些session任然起作用),你可以在加载中,添加duration 属性,如下:
<load duration="1" unit="hour">
<arrivalphase phase="1" duration="10" unit="minute">
<users interarrival="2" unit="second"></users>
</arrivalphase>
</load>
一般来讲,持续的最大值小于50天,单位可以是秒、分钟、小时。
原文:http://tsung.erlang-projects.org/user_manual/conf-load.html#statically-generated-users
浙公网安备 33010602011771号