压力测试工具-Pylot
Pylot(www.pylot.org)是一款开源的用以测试Web
Service性能和扩展性的工具,它运行HTTP负载测试,这对于制定容量计划、确定基准点、分析系统瓶颈以及系统调优都非常有用。在使用过程中,Pylot会发起并发请求(HTTP
Requests),检验服务器响应,以及带有相关指标的报表。它通过GUI或者Shell/Console来执行和监视对被测试网站的测试过程。
你开始在一个XML文件(testcases.xml)中定义你的测试用例。测试用例是验证你指定的请求(URL,Method,Body等)。可以验证服务器响应的正则表达式匹配的内容,HTTP状态码。您可以通过调整负载的工作量控制GUI或命令行设置,然后再开始测试运行(数目的代理,请求的时间间隔,上升时间,测试时间)。这些设置,您可以根据不同的负载情况下的模型试验。在运行加载的情况下,并传递到负载产生引擎。代理调度和运行,同时发送HTTP请求到你的web服务。它在执行过程中生成实时的统计和错误报告,通过这个报告可以很方便的进行监控。
安装起来挺简单基于python 2.5+ 也需要安装NumPy和Matplotli
以便生成图形界面.
看这里:http://pylot.org/gettingstarted.html
产品特点
- HTTP和HTTPS(SSL)支持
- 多线程负载生成器
- 自动cookie处理
- 响应验证与正则表达式
- 执行/监控控制台
- 实时统计
- 结果报告和图形
- 定制的timer
- GUI模式
- 外壳/控制台模式
- 跨平台
配置testcase
<testcase>
<param name="sneak_project" value="http://sneak.l99.com/" />
<case>
<url>http://www.l99.com/EditAccount_login.action</url>
<method>POST</method>
<body><![CDATA[e=15101&m=951626]]></body>
<add_header>Content-Type: application/x-www-form-urlencoded</add_header>
<case><url>${sneak_project}myGameFriend.action</url></case>
<case><url>${sneak_project}showGame.action</url></case>
<case><url>${sneak_project}shop.action</url></case>
<case><url>${sneak_project}buyRes.action</url><method>POST</method><body><![CDATA[resId=45&resNum=1]]></body></case>
</case>
</testcase>
配置选项:
“${pylot_path}/core/config.py的包含了一些全局配置选项。您可以设置某些defauls和改变某些行为。如果在命令行上指定这些选项是覆盖。
AGENTS = 1
DURATION = 60 # secs
RAMPUP = 0 # secs
INTERVAL = 0 # millisecs
TC_XML_FILENAME = 'testcases.xml'
OUTPUT_DIR = None
TEST_NAME = None
LOG_MSGS = False
GENERATE_RESULTS = True
SHUFFLE_TESTCASES = False # randomize order of testcases per agent
WAITFOR_AGENT_FINISH = True # wait for last requests to complete before stopping
SMOOTH_TP_GRAPH = 1 # secs. smooth/dampen throughput graph based on an interval
SOCKET_TIMEOUT = 300 # secs
COOKIES_ENABLED = True
HTTP_DEBUG = False # only useful when combined with blocking mode
BLOCKING = False # stdout blocked until test finishes, then result is returned as XML
GUI = False
-a, --agents=NUM_AGENTS设置同时访问用户数量
-d, --duration=DURATION设置总测试时间(秒)
-r, --rampup=RAMPUP设置提升量(秒),没太懂是什么意思
-i, --interval=INTERVAL设置访问间隔(毫秒)
-x, --xmlfile=TEST_CASE_XML设置要使用的xml文件,默认testcase.xml
-o, --output_dir=PATH设置输出文件路径
-n, --name=TESTNAME设置测试名称
-l, --log_msgs设置是否需要日志信息
-b, --blocking设置是否开启锁定模式,如果开启会锁定输出直到测试结束
-g, --gui设置是否使用图形界面
-p, --port=PORT设置xml-rpc监听的端口
#启动测试...
python pylot -a 50
测试结果
Workingload Model里分别是测试总时间、用户数以及提升和间隔时间。
Results
Summary里是测试结果统计,可以看到总请求数(requests)、总错误数(errors)和总接受数据量(data
received)。
avg是平均访问时间,stdev是标准差,min是最小值,max是最大值。50th %表示
排在50%位置(也就是中间位置)的访问时间,其他以此类推。
官方示例:http://www.pylot.org/samples/results/results.html
参考: