1. 如何使用jmeter做一个简单的测试
1.双击bin目录下的jmeter.bat,打开jmeter,右击测试计划,添加–Threads(Users)—线程组。
2.添加 上的文章 Using JMeter 提供了一个非常好的入门。常用测试压力测试不同于功能测试,软件的正确性并不是它的测试重点。
它所看重的是软件的执行效率,尤其是短时间内访问用户数爆炸性增长时软件的响应速度,压力测试往往是在功能测试之后进行的。在实际的开发过程中,软件潜在的效率瓶颈一般都是那些可能有多个用户同时访问的节点。
就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器、数据库服务器和 JMS 服务器。它们都是请求主要发生的地点,请求频率较其它的节点要高,而且处于请求序列的关键路径之上。
如果它们效率无法提高的话,对于整个软件的效率有致命的影响。而且在这些节点上一般都会发生较大规模的数据交换,有时其中还包含有业务逻辑处理,它们正是在进行压力测试时首先需要考虑的。
本文以这三种节点为例,介绍如何使用 JMeter 来完成针对于它们的压力测试。Web 服务器对于大多数的项目来说,并不会自行开发一个Web服务器,因此Web服务器压力测试的对象实际就是--发布到Web服务器中的软件。
最简单的Web测试计划只需要三个JMeter 的测试元件,如下图:其中:在线程组中定义线程数、产生线程发生的时间和测试循环次数。在http请求中定义服务器、端口、协议和方法、请求路径等。
表格监听器负责收集和显示结果。这种设置对于包含了安全机制的 web 应用是不够的,典型的 web 应用一般都会:1. 有一个登录页,它是整个应用的入口。
当用户登录之后,应用会将用户相关的安全信息放到 session 中。2. 有一个 filter,它拦截请求,检查每个请求相关的 session 中是否包含有用户安全信息。
如果没有,那么请求被重定向到登录页,要求用户提供安全信息。在这种配置下应用上面的测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请求实际定位到登录页。
如果不加断言,那么在监听器看来所有的请求都是成功。而实际上,这些请求最终都没有到达它们应该去的地方。
显然,这种测试结果不是我们所期望的。为了成功的测试,至少有2种方法:方法一,去掉程序的安全设置,如filter,使得不需要用户安全信息也能访问受限内容;方法二,不修改程序,使用JMeter提供的"Http URL重写修饰符"或"Http Cookie管理器"。
对于第一种方法,有其局限性:需要修改程序配置,如去掉web.xml中关于安全filter的设置。需要维护多个版本的web.xml,如压力测试和功能测试分别各自的web.xml,增加了维护成本,而且有可能会在测试之后忘记将web.xml修改回来。
对于一些需要用户安全信息的页面无能为力,如某些业务审计操作需要用户安全信息来记录。因为缺少这样的信息,注定了测试的失败。
如果解决为了这个问题进一步的修改程序,那么因为存在多个版本的程序,那么其维护难度将大大增加。虽然,第二种方法配置难度增加了,但是它不用修改程序。
而且还可将测试计划保存成文件,以便重复使用。因此,选用第二种方法是较为理想的做法。
下面以一个简化的例子说明使用方法二的配置步骤。1. 例子由以下几个文件组成:AuthorizenFilter.java,过滤器负责检验session中是否存在用户信息。
如果没有,那么就转向到 login.jsp。它的主要方法 doFilter 内容如下:public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; 。
转载请注明出处365教育网 » jmeter测试多个用户并发浏览网站