junit 模拟多线程压力测试
在生产中经常会遇到关于压力测试的问题,如何在实际生产中测试程序所承受的压力,对于开发来说并不是一件容易的事,下面介绍junit 多线程测试。
直接上代码
package com.bypay.bingfa;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.junit.Test;
import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;
import net.sourceforge.groboutils.junit.v1.TestRunnable;
public class BFRequestsTest {
@Test
public void BFRequestsTest() {
// 构造一个Runner
TestRunnable runner = new TestRunnable() {
@Override
public void runTest() throws Throwable {
// 测试内容
testRun();
}
};
int runnerCount = 1000; // Rnner数组,想当于并发多少个。
TestRunnable[] trs = new TestRunnable[runnerCount];
for (int i = 0; i < runnerCount; i++) {
trs[i] = runner;
}
// 用于执行多线程测试用例的Runner,将前面定义的单个Runner组成的数组传入
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);
try {
// 开发并发执行数组里定义的内容
mttr.runTestRunnables();
} catch (Throwable e) {
e.printStackTrace();
}
}
public void testRun() {
try {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod("http://58.246.136.11:8029/front/inlet!deal.ac");
String date = "{\"name\": \"wangjx\"}";
((PostMethod) method).addParameter("data", date);
HttpMethodParams param = method.getParams();
param.setContentCharset("UTF-8");
client.executeMethod(method);
// 打印服务器返回的状态
System.out.println("http 返回状态\n" + method.getStatusLine());
// 打印返回的信息
InputStream stream = method.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
StringBuffer buf = new StringBuffer();
String line;
while (null != (line = br.readLine())) {
buf.append(line).append("\n");
}
System.out.println("调用接口返回数据\n" + buf.toString());
// 释放连接
method.releaseConnection();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
相关推荐
LoadRunner的工作原理是通过Vuser(虚拟用户)脚本来创建压力测试场景,分析系统瓶颈,预测系统性能极限。此外,它还提供了强大的诊断工具,帮助测试人员定位问题原因。 3. JUnit: JUnit是一款Java语言的单元测试...
6. **异常处理与性能测试**:除了基本的功能测试,还可能涉及异常处理的测试以及性能测试,如压力测试和负载测试,以确保程序在各种情况下都能正常运行。 7. **最佳实践与工具**:研究可能会推荐一些最佳实践,如...
在Java中进行压力测试,我们可以利用JUnit测试框架,通过编写单元测试用例,模拟大量并发请求,来测试代码在高并发环境下的表现。此外,使用Mockito等库可以创建模拟对象,以减少外部依赖对测试结果的影响。 接下来...
我们可以使用各种压力测试工具,例如LoadRunner、JUnit等,来模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间运行测试软件来测试被测系统的可靠性,同时还要测试被测系统的响应时间。 五、结论 通过...
4. **负载/压力测试**:除了基本的性能测试,还可以使用JUnit模拟高并发情况下的负载或压力测试。这可能需要编写模拟多个用户同时访问服务的测试用例,或者使用第三方库如Apache JMeter来配合JUnit进行。 5. **JSON...
5. 压力测试:评估软件在极端条件下的性能和稳定性。 6. 安全测试:检查软件的安全性,防止未授权访问和数据泄露。 7. 性能测试:评估软件在不同负载和并发情况下的响应时间和资源消耗。 三、测试方法 1. 黑盒测试...
Java中的压力测试通常涉及到多线程和并发控制,以模拟多个用户同时访问应用。在Java中,我们可以利用`java.util.concurrent`包中的类,如`ExecutorService`、`ThreadPoolExecutor`和`Future`来创建并管理线程池,...
16. 测试性能和压力:监控和度量测试的性能,进行压力测试,确保系统在高负载下的稳定性。 总之,《JUnit in Action》这本书是Java开发者学习和掌握JUnit的理想教材,无论你是初学者还是经验丰富的测试工程师,都能...
4. **性能测试**:可以对数据库性能进行基准测试,评估代码在压力下的表现。 5. **断言和异常测试**:JUnit5提供了丰富的断言方法,可以精确检查数据库操作后的结果是否符合预期,同时可以捕获和验证异常情况。 6....
“基于Android平台的设备的压力测试装置”可能涉及到专用的硬件设备或模拟器,它们可以模拟真实的使用环境和负载,提供更为精确的测试结果。这种装置可能包括硬件加速器、网络模拟器、电源管理模块等,以模拟不同的...
【标签】中的"RoadRunner8.1"是这个压力测试过程中的关键工具,它能够模拟多个并发用户,模拟真实用户对系统的访问,从而获取系统在不同负载下的表现数据。使用RoadRunner8.1,可以通过生成详细的测试报告,分析事务...
4. 压力测试:超过最大负载,测试系统的极限性能和恢复能力,了解系统在极端情况下的表现。 5. 稳定性测试:长时间运行测试,检查系统在长时间工作下的性能稳定性。 三、100%覆盖率的意义与实现 1. 功能覆盖:...
性能或压力测试工具如iTest和Emmagee可用于评估APP性能,而LoadRunner和JMeter则适用于服务器端的压力测试。 手机APP测试的主要要点包括功能测试、兼容性测试、性能测试、易用性和稳定性测试。功能测试要确保安装、...
总结起来,自动化测试Apk是提升Android应用质量的关键步骤,AutoMonkey作为一种强大的自动化压力测试工具,能够有效地帮助开发者进行疲劳测试和老化测试,发现并修复潜在问题。通过熟练掌握和应用这些测试技术,...
这包括压力测试、负载测试和耐久测试。考生需掌握性能测试工具的使用,例如JMeter或LoadRunner,以及如何分析性能测试结果,识别性能瓶颈。 五、软件质量保证 质量保证是保证软件质量的过程,包括制定质量标准、...
软件测试不仅包括基础的单元测试,还涵盖了多种高级测试方法和技术,如黑盒测试、白盒测试以及压力测试。这些概念是软件开发过程中的关键环节,下面我们来详细探讨。 首先,软件测试是一个系统的过程,其目标是对...
JMeter的核心功能包括对多种协议的压力测试,如HTTP、HTTPS、SOAP/REST、FTP、JDBC数据库连接、LDAP、JMS消息中间件、SMTP、POP3和IMAP邮件服务,以及通过执行本地命令或shell脚本来模拟各种操作。此外,JMeter还...
7. **性能测试**:除了功能测试,软件测试也涵盖性能测试,如压力测试和负载测试,以评估软件在高并发或大流量下的表现。 8. **持续集成与持续测试**:了解如何将测试脚本集成到持续集成(CI)流程中,例如使用...