所有
我们有一个基于HTTP Servlets,EJB和POJO构建的Java应用程序。客户端使用HTTPServlet访问应用程序,应用程序使用Web服务。
我需要对此应用程序进行压力测试,以测试负载,线程安全性和响应时间 使用HTTPURLConnection API和JAXB api来使用Web服务。
由于JAXB编组/解组有线程安全问题需要加载测试和线程安全
通过指定事务数和没有线程,我看到了应用程序负载测试。我想对我的应用程序做同样的事情
任何建议都值得赞赏
答案 0 :(得分:1)
Apache JMeter™桌面应用程序是开源软件,是一种100%纯Java应用程序,旨在加载测试功能行为并测量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。
答案 1 :(得分:1)
将Apache JMeter™与Grinder进行比较后,由于用于创建测试计划的GUI,我选择了JMeter。学习曲线平坦 - 很容易创建简单的场景。
如果您对jython中的测试计划感到满意,那些工具似乎非常接近。两者
关注链接how-to-get-my-website-load-test-with-jmeter,了解有关jMeter中压力测试的链接以及更好的插件,以显示结果。
我在使用大型数据集的默认图形插件时遇到了性能问题(> 100.000条目)。请关注Suggestions and Recipes for Log Analysis,了解如何为此类数据量生成图表
答案 2 :(得分:1)
是的,您可以使用JMeter来测试响应时间,但我怀疑您是否会通过使用JMeter找到所有并发问题。 JMeter可以很好地负载测试应用程序,但请记住:
1确保您的测试正在复制您的实际用例。
您没有在同一个盒子上运行应用程序和JMeter。
您正在使用现实的新数据和现有数据。
编写并发测试可能非常棘手。一个更好的方法可以是非常仔细地检查使用已知不安全类的代码。例如,解决JAXB的问题可能是使用局部变量在每个请求处理程序上创建一个新的Unmarashaller。
例如
public void handler(HttpServletRequest req) {
Unmarshaller u = context.createUnmarshaller();
u.unmarshal(...);
}
显然这有性能问题所以如果可能的话,最好使用不同的库。如果部署非线程安全的代码,则更有可能遇到非常难以重现的错误。
如果您确实希望编写并发集成测试,那么请事先阅读第12章“在实践中使用Java并发性测试并发程序”,因为编写好的测试比您想象的要困难得多。