多线程测试工具groboutils的使用

一直使用junit做为服务测试框架,感觉不错。最近有人反映在高并发的情况下,存在服务调不到。无奈再次打开单元测试模拟高并发的情况,却发现junit不支持并发测试

  引入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;

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-24 19:03:44

多线程测试工具groboutils的使用的相关文章

Junit使用GroboUtils进行多线程测试

写过Junit单元测试的同学应该会有感觉,Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的.JVM都终止了,在测试线程启动的其他线程自然也无法执行.JunitCore代码如下: /** * Run the tests contained in the classes named in the <code>args</code>. * If all tests run successfully, exit with a

windows系统中安装Jmeter压力测试工具

  Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库, FTP 服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能. JMeter的作用 1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样

Linux下多线程下载工具MWget和Axel使用介绍

  linux运维在操作linux过程中,用得最多的linux下载工具想必一定是wget,没有看到哪一台服务器没装过wget的,或许有人使用ftp下载,也有人使用多线程的axel以及ProZilla,毫无疑问这两个工具都非常的出色,但是对于习惯使用wget的人来说显得不适应,于是老外便开发了多线程版本的wget工具mwget,m表示multi多线程的意思. mwget 官方地址:http://sourceforge.net/projects/kmphpfm/?source=dlp 代码如下: #

mysql压力测试工具mysqlslap测试

这里列一些主要的参数,更详细的说明参考官方手册.如果是系统自带或者使用rpm包安装的mysql,安装了MySQL-client端的包就有mysqlslap这个工具. 下图是运行mysqlslap -a -c 500 -i 10 -uroot -p123456测试时mysql的连接进程数: 各种测试参数实例(-p后面跟的是mysql的root密码): 单线程测试.测试做了什么. # mysqlslap -a -uroot -p123456 多线程测试.使用–concurrency来模拟并发连接.

网站访问压力测试工具

Grinder Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利. 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理.根据项目网站的说法,Grinder的 主要目标用户是"理解他们所测代码的人--Grinder不仅仅是带有一组相关响应时间的'黑盒'测试.由于测试过程可以进行编码--而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间. Pylot Pylot是一款开源的测试web

Sysbench多线程性能测试工具_Mysql

最近用sysbench进行了较多的性能测试,也总结一下它的特点和用法和需要注意的事项.sysbench是一个多线程性能测试工具,可以进行CPU/内存/IO/数据库等性能测试.不过我绝大多数的时候都是用它来对数据库(MySQL)进行oltp测试.它能测哪些东西,怎么测让我从它的命令帮助来回答. ~/zbs$ sysbench --help Missing required command argument. Usage: sysbench [general-options]... --test=<

用python做测试实现高性能测试工具(1)—序

做过几年开发或者测试开发的人员,时常会觉得很迷茫,新功能的开发或者老功能的维护,基本是在堆代码了, 做过几年测试的朋友也会有类似的想法.性能调优或者性能测试的确很考验人分析问题.解决问题的能力,知识是否全面.本人也是第一次实现高性能的测试工具, 记录下这次diameter协议测试工具的优化过程,供大家一起学习. 有些内容涉及到具体产品,做了些改动或者单独写了测试代码演示. Python用来开发高性能的测试工具的确有天然的缺陷,性能差还有GIL,无法利用多线程. 但办法总比困难多,那么多大的互联网

介绍Android测试工具Espress及安装使用

Espresso是一个新工具,相对于其他工具,API更加精确.并且规模更小.更简洁并且容易学习.它最初是2013年GTAC大会上推出的,目标是让开发者写出更简洁的针对APP的UI测试代码. 虽然针对的是开发者(Developer),但是对于测试人员来说也是可以用的.因为它有一些Robotiun和Selendroid缺乏的关键特征. 关键特征 1.快速; 2.代码快速上手; 3.容易扩展; 4.无需考虑复杂的多线程测试; 5.有Google做靠山. Espresso的主要组件 Espresso –

Mysqlslap MySQL压力测试工具 简单教程_Mysql

MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单.通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册. 复制代码 代码如下: –auto-generate-sql, -a 自动生成测试表和数据 –auto-generate-sql-load-type=type 测试语句的类型.取值包括:read,key,write,update和mixed(默认). –numb