高并发压力测试工具Tsung使用教程
软件测试工程师认证:理解测试理论和工具使用 #生活技巧# #工作学习技巧# #技能证书考取攻略#
目录
1 下载安装2 运行3 结果4 配置文件 4.1 clients4.2 servers4.3 monitoring4.4 load4.5 options4.6 sessionstsung是erlang开发的开源的多协议分布式负载测试工具,
可用作HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP的服务器压力测试。
tsung可分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。
1 下载安装
Tsung 已经在Linux、FreeBSD和Solaris上通过测试,
其他系统,只要支持Erlang语言的平台上,也是可以工作的(Linux、Solaris、*BSD、Win32 和 Mac OS X)。
Mac OS X通过 Homebrew 即可安装 tsung,命令:
brew install tsung
Ubuntu 安装也很简单,命令:
apt-get install tsung
其他系统需要先下载源码包再安装,源码包下载地址:
http://tsung.erlang-projects.org/dist/以tsung 1.6.0为例,下载安装命令:
wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz tar -zxf tsung-1.6.0.tar.gz cd tsung-1.6.0 ./configure make make install
configure 的时候,如果没有安装 tsung 依赖的 Erlang 语言库,会提示下面的错误:
... checking for Erlang/OTP root directory... configure: error: in `/root/tsung-1.6.0': configure: error: test Erlang program execution failed ...
可以用下面的命令先安装erlang,再 configure。
brew install erlang # OS X Homebrew port install erlang # OS X MacPorts apt-get install erlang # Ubuntu 和 Debian yum install erlang # Fedora pkg install erlang # FreeBSD
其他系统需要从源码安装 Erlang,稍微复杂一些,可参考:https://github.com/erlang/otp/blob/maint/HOWTO/INSTALL.md 。
2 运行
tsung安装完成后,会生成两个命令文件:
tsungtsung-recorder默认生成在 /usr/local/bin 目录下,使用-h参数可以查到它们所有的参数:
tsung -h
在启动 tsung 之前,我们需要一个 XML 格式的配置文件,tsung会根据该配置文件进行测试。
/usr/share/doc/tsung/examples 目录下有一些 XML 配置文件范例,
将其中HTTP测试配置文件 http_simple.xml 拷贝到当前目录,
再执行,命令如下:
cp /usr/local/share/doc/tsung/examples/http_simple.xml ./ tsung -f http_simple.xml start
这个命令会打印出测试的日志目录,直到测试结束。
3 结果
tsung 测试结束后,测试结果 Log 保存在目录 ~/.tsung/log/ 下。
当启动一个新的测试时,会在这个目录下面创建一个新的子目录,用以保存测试的数据。
Log 格式为当前日期和时间的组合,例如:~/.tsung/log/20160217-0940。
默认情况下,控制节点会启动一个嵌入的网站服务器,侦听8091端口(可以用 -n 选项禁用)。
测试过程也可以用tail命令查看实时记录:
tail -f ~/.tsung/log/20140430-1126/tsung.log
测试结束之后,再用tsung_stats.pl生成报表。
yum install gnuplot mkdir http_simple cd http_simple /usr/local/lib/tsung/bin/tsung_stats.pl --stats ~/.tsung/log/20160305-0933/tsung.log
之后,会在 http_simple 目录下生成3个目录和1个 log 文件,其中 images 目录下就是报表图片,类似如下。
以上仅是测试,没有实际用处,因为没有配置要测试的网站,所以所得到的结果没有实际意义。
需要修改 XML 配置文件后再测试,才会得到有意义的结果。
4 配置文件
打开 http_simple.xml ,下面来讲几个关键的配置。
4.1 clients用户产生的方式:
<clients>
<client host="localhost" use_controller_vm="true" maxusers="30000"/>
</clients>
tsung运行时可以由很多的虚拟机(VM)组成,client配置指明这个client机器上最多生成的用户数,
如果use_controller_vm为true的话,那么当用户数达到maxusers,tsung会自动生成新的虚拟机。
4.2 servers<servers> <server host="garden.blue.jude.poppen.lab" port="80" type="tcp"></server> </servers>
server段可以配置被测服务器的相关信息,也可以配置成集群,如下
<servers> <server host="server1" port="80" type="tcp" weight="4"></server> <server host="server2" port="80" type="tcp" weight="1"></server> </servers>
tsung会根据weight值来选择发起请求的server。
4.3 monitoring系统监控服务,配置完后可获取被测server的CPU、内存、负载、数据库等相关信息。
可以配置成erlang的监控服务和snmp的监控服务。
<monitoring>
<monitor host="garden" type="erlang">
<mysqladmin port="3306" username="root" />
</monitor>
</monitoring>
4.4 load<load> <arrivalphase phase="1" duration="3" unit="minute"> <users maxnumber="100" interarrival="0.02" unit="second" ></users> </arrivalphase> </load>
load段可配置访问的负载,访问可以配成多个阶段,由phase值指定。
duration是测试持续时间,unit是单位。
users段的maxnumber限制了生成的最大用户数,
interarrival="0.02"表示0.02秒产生一个新用户,用户按照session的配置顺序执行session中的request。
4.5 options<options> <option type="ts_http" name="user_agent"> <user_agent probability="80">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent> <user_agent probability="20">Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</user_agent> </option> </options>
options段可配置一些请求的信息,如agent信息。
4.6 sessions<sessions> <session name="http-example" probability="70" type="ts_http"> <setdynvars sourcetype="random_number" start="1" end ="100"> <var name="itemid" /> </setdynvars> <transaction name='getlist'> <request subst="true"> <http url="/comment/getList" method="POST" contents = "item_type=image&item_id=%%_itemid%%"></http> </request> </transaction> </session> <session name="http-example" probability="30" type="ts_http"> <setdynvars sourcetype="random_number" start="1" end="100"> <var name="itemid" /> </setdynvars> <setdynvars sourcetype="random_number" start="20" end="5000000"> <var name="content" /> </setdynvars> <transaction name='getlist'> <request subst="true"> <http url="/comment/addComment" method="POST" contents = "item_type=image&item_id=%%_itemid%%&content=%%_content%%"></http> </request> </transaction> </session> </sessions>
可配置多个子session,进而可测试多个api,
可以设置请求概率,在probability里定义,
要求每个session的probability之和是100,类型是http。
sessions里可用for来设定请求次数,如下
<for from="1" to="@loop" incr="1" var="counter">
在里面可以设置请求的具体信息。
在请求参数里可以带上随机数。
随机数和随机字符串的定义如下:
<setdynvars sourcetype="random_number" start="20" end="5000000">
<var name="xxx" />
</setdynvars>
<setdynvars sourcetype="random_string" length="10">
<var name="xxx" />
</setdynvars>
以%%_xxx%%的形式来调用。
这里必须注意的是,要使用随机数,request必须加上subst="true"参数,不然随机数无法被引用成功。
随机数也可从文件读取,如csv。
http内部可定义header参数:
<http_header name="Authorization" value="111"/> <http_header name="Cookie" value="authToken=%%_auth_token%%; Path=/"/> <http_header name="Content-Type" value="application/json"/>
thinktime可用于定义两个请求的间隔时间
<thinktime value="1"/>
另外可定义不同的transaction ,这样子结果里就会显示不同transaction的具体信息。
网址:高并发压力测试工具Tsung使用教程 https://www.yuejiaxmz.com/news/view/187584
相关内容
常用压力测试工具锦集 · 测试之家常用压力测试工具锦集
如何使用websocket压力并发测试工具
Apache高并发测试工具JMeter
服务器Nginx并发压力测试工具AB测试WordPress站点
测试压力的工具,测试压力的仪器
压力测试及常用的压测工具!
压力测试工具
测试工具之压力测试工具推荐
压力测试工具哪个好?压力测试工具盘点