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

posted on 2017-05-15 17:33  湛雍  阅读(297)  评论(0)    收藏  举报