测试计划属性配置有一个checkbox选项"Functional Testing",如果选中,Jmeter会记录从服务器返回的data到每个sample中。如果有选中一个listener,这个data会被写入file。这个在运行验证JMeter是否配置正确很有用,服务器有返回预期的值。结果是file会快速的变得非常笨重,JMeter的性能就会变差。如果在测试压力测试,该选项应该关闭,不选中。
线程组 Thread Group
线程组是所有测试计划的根节点,所有的controller和sample都要在Thread Group下,其它的elements,如listener必须直接放在test plan下面,保证能作用于所有的thread group。
thread group允许你:
- 设置线程的数量
- 设置过渡时期
- 设置执行测试的次数
每个线程将执行完整的测试计划,完全独立于其他测试线程。多线程用于模拟并发连接到您的服务器应用程序。
过渡时期ramp-up:所有线程完成所需要的时间,如果一共有10个线程,ramp-up的时间设置为100秒,每个线程10秒的运行时间。过渡需要足够长的时间,以避免太大工作量的一个测试。
控制器Controller
包括Samplers Controller采样器和Logical Controllers逻辑控制器,这两个驱动测试的处理。
1 Samplers Controller采样器
告诉JMeter向服务器发送一个请求然后等待响应。他们按照在tree中出现的顺序执行。
例如:添加一个HTTP Request Sampler发送一个HTTP请求. 您还可以定制一个请求通过添加一个或多个取样器的配置元素。
包括以下Samplers:
- FTP Request
- HTTP Request
- JDBC Request
- Java object request
- LDAP Request
- SOAP/XML-RPC Request
- WebService (SOAP) Request
每个sampler都有几个属性需要设置,您可以进一步定制一个取样器通过添加一个或多个配置元素到测试计划。
如果你要发送多个相同类型的请求(例如,HTTP请求)到同一台服务器上,考虑使用一个默认的配置Element。每个控制器都有一个或多个默认Element。
记得添加一个侦听器到您的测试计划来查看你的请求和/或将结果存储到磁盘上。
如果你有兴趣让JMeter在响应你的请求时执行基本的验证,添加一个assertion到sampler。例如,压力测试一个web app,服务器返回"HTTP Response" code,页面可能有错误或缺失的部分。您可以添加assert检查特定的HTML标记,常见的字符串错误,等等。JMeter允许使用正则表达式创建assert。
2 Logical Controllers逻辑控制器
逻辑控制器决定何时发送请求. 例如,你可以添加一个交错逻辑控制器交替采样两个HTTP请求。
逻辑控制器可以改变来自他们的子元素的请求顺序。他们可以修改请求,使JMeter重复请求,等等。
要了解逻辑控制器在测试计划的影响,思考以下的测试树:
- Test Plan
- Thread Group
- Once Only Controller
- 登录请求 (an HTTP Request)
- Load Search Page (HTTP Sampler)
- Interleave Controller
- Search "A" (HTTP Sampler)
- Search "B" (HTTP Sampler)
- HTTP default request (Configuration Element)
- HTTP default request (Configuration Element)
- Cookie Manager (Configuration Element)
1.第一件事是执行登录请求。后续的迭代将跳过该请求,因为Once Only Controller只执行一次。
2.在登录之后,下一个sampler加载搜索页面(想象一个web应用程序,用户登录后,然后去一个搜索页面做一个搜索)。这只是一个简单的请求,无任何逻辑控制器过滤逻辑。
3.加载搜索页面后,我们要做一个搜索。实际上,我们想做两种不同的搜索,我们想重新加载页面来搜索这两个页面。我们可以做这个通过4简单的HTTP请求Element(加载搜索页面,搜索“A”,加载搜索页面,搜索“B”)。我们使用interleave Controller一次传递一个child request。