tsung 学习记录

近期测试产品性能的时候用到好几次tsung这个工具,整理了一下tsung xml文件的基本结构。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="info">

<clients>
	<client host="localhost" />
</clients>

<servers>
	<server host="127.0.0.1" port="8080" type="tcp"></server>
</servers>

<!-- load用来定义测试压力,用户增长速度以及上限,测试时长等。可以使用多个arrivalphase,每个phase代表一个阶段,每个阶段内可以定义不同的压力,以及要执行的session等 -->
<load>
	<arrivalphase phase="1" duration="60" unit="minute">
		<users maxnumber="2" arrivalrate="1" unit="second"></users>
	</arrivalphase>
</load>

<options>
<!-- file_server option用于给tsung生命文件,每个文件指定一个id,后面设置读取参数时通过id来决定从哪个文件读取 -->
<option name="file_server" value="userfile" id="userfile"></option>
<!-- 配置http请求的客户端类型,注意probability总数一定要是100,不然会报错 -->
<option type="ts_http" name="user_agent">
	<user_agent probability="50">
		Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
	</user_agent>
</option>
<option type="ts_http" name="user_agent">
        <user_agent probability="50">
                Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)
        </user_agent>
</option>
</options>

<!-- sessions内可以定义多个session,每个session内定义一系列http请求动作。貌似每个用户只能运行一个session,多个session会在加载用户的时候分别得到执行 -->
<sessions>
<!-- session内的probability用于设置多用户情况下,改session被执行的百分比,所有session的probablity总数必须是100 -->
<session probability="100" name="test" type="ts_http">
	<!-- 从文件读取变量,iter是顺序读取,这里需要注意的是,每个session只读取一次,既这个session从文件读取一次变量之后,该sesion实例内后续所有对该变量的引用都是本次读取所获取到的value,如果你想在一个session内循环读取这个文件里的变量,那得另想办法啦 -->
	<setdynvars sourcetype="file" fileid="userfile" delimiter=";" order="iter">
		<var name="username" />
		<var name="password" />
	</setdynvars>
	<!-- 直接定义一个变量并赋值 -->
	<setdynvars sourcetype="value" value="this is a test">
		<var name="test"/>
	</setdynvars>
	<!-- for 循环 -->
	<for from="1" to="1" var="loop">
		<request subst="true">
			<http url="/home/main/index.html?name=%%_username%%" version="1.1" method="GET">
				<!-- www_authenticate 用于实现httpbasic认证,这个只能用于单个请求,并不会在后续的请求里面自动加上认证的header -->
				<www_authenticate userid="%%_username%%"  passwd="%%_password%%"/>
			</http>
		</request>
		<!-- thinktime 类似于sleep功能 -->
		<thinktime value="3" random="true"></thinktime>
		<!-- request subst="true" 用于说明这个请求里面会用到动态参数,否则引用的变量会出问题 -->
		<request subst="true">
			<!-- match用于从response中匹配字符串,默认匹配范围包含http头和body,还可以指定匹配或不匹配后的动作,这里是匹配上了就记录一个日志 -->
			<match do="log" when="match">Unauthorized</match>
			<http url="/home/main/index.html?name=%%_username%%" version="1.1" method="GET" />
		</request>
	
		<request subst="true">
			<http url="/home/main/index.html?name=%%_username%%" version="1.1" method="POST" contents="name=%%_username%%&password=%%_password%%" >
				<www_authenticate userid="%%_username%%" passwd="%%_password%%" />
			</http>
		</request>
	
		<request subst="true">
			<http url="/home/main/index.html?name=%%_username%%" version="1.1" method="GET">
				<add_cookie key="session" value="%%_test%%"/>
			</http>
		</request>	
	</for>
</session>
</sessions>
</tsung>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值