使用groovy编写web客户端的测试代码

一个手机计费系统,需要手机通过wap访问获得计费信息。但最近有用户反映收到网关超时。估计是移动网关有超时设置,我们的系统在某些时间因为数据库的庞大而运行缓慢,造成移动网关不再接收我们服务器的响应,并报告给手机用户超时。

需要测试一下服务器何时出现性能的抖动,响应的平均时长。用数据验证我们的分析。

有多种技术可以实现这个,用apache的ab,用apache jmeter。想了想都不太合适。ab适合做压力测试,对这种类似监控,缺乏灵活性,另外没有断言功能(检查返回的数据是否正确);jmeter部署需要时间,通过图形界面定义配置脚本,虽然基本符合要求,但准备和配置都需要时间,我想马上开始测试。

这时想到了groovy,借助HttpBuilder等API,可以很容易创建一个这样的脚本,并马上开始测试,以下脚本,只需几分钟就可以写好:

#!/usr/bin/env groovy import java.io.File import groovyx.net.http.HTTPBuilder import static groovyx.net.http.Method.GET import static groovyx.net.http.ContentType.TEXT def file=new File('time_log') def interval=10 def siteUrl='http://your_site:port' def uriPath='/uri_path' def http=new HTTPBuilder(siteUrl) def time=0 for(;;){ time=System.currentTimeMillis() http.request(GET,TEXT){req-> uri.path=uriPath response.success={resp,reader-> println reader.getText().contains('<h1>查询结果</h1>')?'succuess':'error' } } time=System.currentTimeMillis()-time file.append(time+'\n') Thread.sleep(interval*1000) }

脚本每10秒钟向服务器发起一个http请求,并对响应内容查找是否包含成功结果的特征值。另外,就是记录请求响应时间毫秒数,供以后分析。

可通过以下命令后台执行测试:

nohup ./test_client  &

通过以下命令看到请求是否成功:

tail -f nohup.out

通过以下命令查看请求耗时:

tail -f time_log

相关日志

这篇文章上的评论 RSS feed TrackBack URI

留下评论