多線程測試工具groboutils的使用
引入groboutils jar包,其實我主要使用MultiThreadedTestRunner類和TestRunnable類。
原有的junit框架不做改變,導入GroboTestingJUnit-1.2.1-core.jar包
代碼如下
public class FaultServiceTest extends TestCase { /** * @param args * @throws FaultException * @throws ExpParamNotFoundException * @throws ParseException */ private IFaultService faultService; private static final int NUM_THREAD = 100; // 測試線程總數 public FaultServiceTest() { super(); IInitService initService = (IInitService) CustomBeanFactory .getBean("initService"); initService.initSiteDatabase(); this.faultService = (IFaultService) CustomBeanFactory .getBean("faultService"); } public FaultServiceTest(String name) { super(name); IInitService initService = (IInitService) CustomBeanFactory .getBean("initService"); initService.initSiteDatabase(); this.faultService = (IFaultService) CustomBeanFactory .getBean("faultService"); } // 高并發測試 public void testGetEquipEventAlertListByPage() throws Throwable { EquipmentQueryBean equipmentQueryBean = new EquipmentQueryBean(); // 生成所有測試線程 TestRunnable[] test = new TestRunnable[NUM_THREAD]; long start = System.currentTimeMillis(); for (int i = 0; i < test.length; i++) { test[i] = new FaultServiceThread(faultService, equipmentQueryBean); } // 生成測試線程運行器 MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(test); // 運行測試線程 mttr.runTestRunnables(); long used = System.currentTimeMillis() - start; System.out.printf("%s 調用花費 %s milli-seconds.\n", NUM_THREAD, used); } public static Test suite() { TestSuite test = new TestSuite("HealthService接口類測試"); test.addTest(new FaultServiceTest("testGetEquipEventAlertListByPage")); return test; } /* * 測試線程類定義 */ private static class FaultServiceThread extends TestRunnable { private IFaultService faultService; private EquipmentQueryBean equipmentQueryBean; public FaultServiceThread(IFaultService faultService, EquipmentQueryBean equipmentQueryBean) { super(); this.faultService = faultService; this.equipmentQueryBean = equipmentQueryBean; } @Override public void runTest() throws Throwable { faultService.getEquipEventAlertListByPage(equipmentQueryBean); } } } |
運行代碼,并發數開到100個后觀察運行時間發現運行運行時間到了12秒了,看來問題出在DAO。需要進行sql代碼優化了
導入的測試包有:
import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner; import net.sourceforge.groboutils.junit.v1.TestRunnable; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; |
posted on 2013-11-13 10:19 順其自然EVO 閱讀(444) 評論(0) 編輯 收藏 所屬分類: jmeter and badboy