根据我工作中做压力测试的程序不断完善而来,现在发布为一个项目。
Google Code 上的 PTF项目地址
/p/performance-test-framework/
采用Java语言开发,精密、高效、可扩展的测试平台。
如果你开发了某种Socket通信程序、Java RMI程序、用Mina开发了某种网通信程序、WebService服务,你想测试一下在大并发情况下这些程序的表现,而正为写一个测试程序而烦恼 时,Performance Test Framework (PTF)可以很好的帮助你。
PTF是一个测试工具,你可以通过写代码扩展它,实现对各种程序的测试。
并产出txt、csv格式的测试报告。
==一般测试方法==
运行10,20,30,40...个并发,每个并发循环 K 次业务请求(需要你来实现这个单次业务请求),每次执行业务发送1K,4K,10k...的数据,接收的数据量以实际返回为准。本例中运行一次完整测试共 进行了12轮小测试(4种并发x3种数据大小)。 最终产生一个测试结果文件txt、csv,你自己生成Excel图表。
一般一台双核CPU的机器,启动100个并发(线程)进行测试时,CPU负载就100%了,压力机的最大并发数能达到多少取决你的CPU性能。
测试时,请密切关注网卡的吞吐量、CPU负载、服务端磁盘IO情况,有一个硬件负载达到100%就可以停止测试了,因为硬件成为了测试的瓶颈。
==核心类图==
核心类中有两个,负责创建线程池、运行N个线程、每个线程执行k次你写的“业务”、输出测试结果。并且采用了“集合点”产生真并发。
Constants 配置类,配置并发数、循环次数、数据大小、txt文件输出位置,以后会改成配置文件。
BaseRunnable 核心类(父类)
BaseMainTest 核心类(父类)
HttpClientRunnable 你来实现这个单次业务请求(子类)
HttpTestDemo 你来实现的启动类,通过main方法来启动测试(子类)
LogAnalyseUtil 把txt文件转换成csv文件,就可以使用Excel打开,做图表了。
==开发说明==
src目录:源码
doc目录:java doc
uml目录:类图
项目使用:JDK 1.5 ,GBK编码
==测试结果 txt文件内容==
开始本轮测试-并发数:1,每并发请求次数:5,每次请求数据大小:4096字节
请求次数:5
成功次数:5
失败次数:0
本轮测试总共用时(s):0.76
平均每次请求用时(ms):152.10
发送吞吐量(M/s):0.03
接收吞吐量(M/s):0.53
每秒完成请求数(QPS):6.55
==自己画的图表 样例==
查看图片附件