stone2083

单元测试下简易性能测试工具

背景:
1.团队成员对质量意识逐渐提升;单元测试意识提升;
2.性能意识不足,往往到最后提交性能测试的时候,才发现性能问题;在开发阶段忽视对性能的考虑.
尤其在做对外服务的需求中,危害特别明显.

基于这两个原因,希望有一个在单元测试下的性能测试工具.提供最简单的性能指标报表.在开发阶段让开发对性能情况有个感性的认识.

设计思路:


概念说明:
 类名 方法
说明
Statistics 
说明:性能统计信息
tps() 提供tps
  average() 提供平均响应时间,单位毫秒
  total() 提供总耗时,单位毫秒
Job 
说明:测试单元逻辑
execute() 性能测试逻辑
Warn 
说明:性能未达标警告


PerformanceTester (核心)
说明:性能测试工具,根据制定的并发数和单个并发循环次数,进行性能测试;根据提供的平均响应时间,分析是否达标
test(Job job) 性能测试,打印性能报表,分析是否达标
JTesterxPerformance 
说明:基于JTester的性能测试基类,统一执行性能测试计划
备注:
JTester是我们公司同事编写的一套单元测试框架.我们同样可以提供基于JUnit的实现,比如JUnitPerformance
performance() 根据提供的性能策略,指标 和 测试逻辑,进行性能测试

job() 需要子类覆写,提供测试逻辑

testers() 需要子类覆写,提供性能测试策略和指标要求


User Guide:
  • Step1:
    创建一个性能测试类,继承com.alibaba.tpsc.common.test.jtesterx.JTesterxPerformance
    在类名标注@Test (org.testng.annotations.Test),表明需要进行TestNG的单元测试
    备注:如果是在其他单元测试框架下,请自行扩展类似JUnitPerformacne实现
  • Step2:
    覆写public Job job()方法.提供 性能测试名 和 性能测试逻辑
     

@Override
public Job job() {
    
return new Job("SampleService.hello") {
        @Override
        
public void execute() {
            SampleService.hello();
        }
    };
}
  • Step3:
    覆写public Collection<PerformanceTester> testers().提供一组性能测试策略(并发数,单个并发循环次数) 和 性  能测试指标(平均响应时间)
    性能测试工具会根据提供策略和指标,依次进行性能测试.
public Collection<PerformanceTester> testers() {
    Collection
<PerformanceTester> testers = new ArrayList<PerformanceTester>();
    
// 20个并发,单个并发循环1000次,平均响应时间阀值10ms
    testers.add(new PerformanceTester(20100010));
    
// 10个并发,单个并发循环1000次,平均响应时间阀值5ms
    testers.add(new PerformanceTester(1010005));
    
return testers;
}
  • Step4:
    右键点击Eclipse->Run As->TestNG Test.
    如果测试通过,则显示Green Bar
    如果测试未通过,则在Red Bar中显示:java.lang.AssertionError: performance expected is 1ms,but actual is 2.938ms.


工具代码和演示代码如下:
Demo下载

posted on 2010-06-10 09:13 stone2083 阅读(2479) 评论(4)  编辑  收藏 所属分类: java

Feedback

# re: 单元测试下简易性能测试工具 2010-06-10 09:51 BeanSoft

支持下 大规模应用的性能就是从微秒开始奠定的  回复  更多评论   

# re: 单元测试下简易性能测试工具 2010-06-11 08:51 stone2083

@BeanSoft
接受观点.
之所以考虑使用毫秒,是因为不同的开发机性能参差不齐,对性能的影响远远大于本身计算的精确性.
而这个简易工具,本意只是提供感性的性能数据.所以提供的数据并不精确(当然,之后会随着项目开发中提出的需求做完善),而是相对于程序员更友好的单位.  回复  更多评论   

# re: 单元测试下简易性能测试工具[未登录] 2010-06-21 16:06 TestThug

不知道JTester可否开源??  回复  更多评论   

# re: 单元测试下简易性能测试工具 2010-06-21 19:10 stone2083

@TestThug
1.要看公司政策了;
2.要看JTester作者意愿了;

从目前看,开源的可能并不大 :(  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: