單元測試下簡易性能測試工具
背景: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:
在類名標注@Test (org.testng.annotations.Test),表明需要進行TestNG的單元測試
備注:如果是在其他單元測試框架下,請自行擴展類似JUnitPerformacne實現
- Step2:
@Override
public Job job() {
return new Job("SampleService.hello") {
@Override
public void execute() {
SampleService.hello();
}
};
}
public Job job() {
return new Job("SampleService.hello") {
@Override
public void execute() {
SampleService.hello();
}
};
}
- Step3:
性能測試工具會根據提供策略和指標,依次進行性能測試.
public Collection<PerformanceTester> testers() {
Collection<PerformanceTester> testers = new ArrayList<PerformanceTester>();
// 20個并發,單個并發循環1000次,平均響應時間閥值10ms
testers.add(new PerformanceTester(20, 1000, 10));
// 10個并發,單個并發循環1000次,平均響應時間閥值5ms
testers.add(new PerformanceTester(10, 1000, 5));
return testers;
}
Collection<PerformanceTester> testers = new ArrayList<PerformanceTester>();
// 20個并發,單個并發循環1000次,平均響應時間閥值10ms
testers.add(new PerformanceTester(20, 1000, 10));
// 10個并發,單個并發循環1000次,平均響應時間閥值5ms
testers.add(new PerformanceTester(10, 1000, 5));
return testers;
}
- Step4:
如果測試通過,則顯示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 閱讀(2498) 評論(4) 編輯 收藏 所屬分類: java