[计算机软件及应用]JMETER完美使用手册.doc

上传人:sccc 文档编号:4561568 上传时间:2023-04-27 格式:DOC 页数:107 大小:1.15MB
返回 下载 相关 举报
[计算机软件及应用]JMETER完美使用手册.doc_第1页
第1页 / 共107页
[计算机软件及应用]JMETER完美使用手册.doc_第2页
第2页 / 共107页
[计算机软件及应用]JMETER完美使用手册.doc_第3页
第3页 / 共107页
[计算机软件及应用]JMETER完美使用手册.doc_第4页
第4页 / 共107页
[计算机软件及应用]JMETER完美使用手册.doc_第5页
第5页 / 共107页
点击查看更多>>
资源描述

《[计算机软件及应用]JMETER完美使用手册.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]JMETER完美使用手册.doc(107页珍藏版)》请在三一办公上搜索。

1、JMETER中文手册1. 简介Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序)。它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象,数据库,FTP 服务器等等。JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。1.1 历史A

2、pache软件组织的Stefano Mazzocchi是JMeter的创始人。他编写它起初是为了测试Apache JServ的性能(一个已经被Apache Tomcat工程所替代的工程)。我们重新设计JMeter来增强用户界面并增加功能测试的能力。1.2 未来我们希望看到作为开发者利用它的可插入架构使JMeter的功能快速扩展。未来发展的主要目标是在没有影响JMeter的负载测试能力的情况下尽可能使JMeter成为最实用的回归测试工具。2. 入门开始使用JMeter最容易的方法是首先下载最新版并且安装它。这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI等测试时使用需要的所有文

3、件。如果你想执行JDBC测试,你当然需要从供应商得到适当的JDBC驱动。JMeter没有提供任何JDBC驱动。你可能需要下载的其它软件: BeanShell - BeanShell函数和测试元件需要 Java Activation Framework - JavaMail需要 Java Mail - Mail可视化,Mail Reader 和 WebService(SOAP)取样器需要 JMS - JMS 取样器需要 General Java download page 详细参见JMeter Classpath 一章安装附加的jar包 下一步, 开始使用JMeter并且参见用户手册创建一个测试

4、计划一章使自己更加熟悉JMeter基础 (例如,添加和删除元件)。最后, 参见如何构建一个明确类型的测试用例的适合章节。例如,如果你对Web应用测试感兴趣,那就参见创建一个Web测试计划。其他具体的测试计划章节是: 高级Web测试计划 JDBC FTP JMS 点到点 JMS 主题 LDAP LADP扩展 WebServices (SOAP)一旦你熟练创建和执行JMeter测试计划, 通过你的测试计划你会观察到给你更多帮助的各种元件的配置(定时器, 监听器, 断言, 和其他)。2.1 需求JMeter 需要最小需求的运行环境。2.1.1 Java 版本JMeter需要一个完全适当的JVM1.4

5、或者更高因为JMeter 仅使用Java标准API, 请不要把因为JRE实现版本而无法运行JMeter的bug报告提交。2.1.2 操作系统JMeter是100%纯Java应用程序并且能够正确的在任何有适当的Java实现的操作系统上运行。JMeter 在下列环境已经被测试: Unix (Solaris, Linux, 等) Windows (98, NT, 2000, xp) OpenVMS Alpha 7.3+2.2 可选如果你计划做JMeter开发或者想使用SUN的java标准扩展包,你将需要下列更多的可选包。2.2.1 Java 编译器如果你想编译JMeter源代码或者开发JMeter插

6、件,你将需要一个完整的适当的JDK1.4或者更高。2.2.2 SAX XML解析器JMeter 使用 Apache的 Xerces XML 解析器,你可以选择告诉JMeter使用一个不同的XML 解析器。 这样做,把第三方的解析器的类包包含在JMeter的classpath中, 并更新 jmeter.properties 文件里的解析器实现的全类名。2.2.3 Email 支持JMeter有有限的 Email 能力。 它能够发送基于测试结果的Email,并且支持POP/IMAP 取样器。它现在不支持 SMTP 取样。 为了能够支持 Email, 需要添加Sun 的JavaMail包和activ

7、ation包到JMeter classpath 。2.2.4 SSL 加密为了测试一个使用SSL加密(HPPS)的web服务器, JMeter 需要一个提供SSL实现 (例如 Sun的 Java Secure Sockets Extension - JSSE)。包含需要的加密包到JMeter的classpath。 同样,通过注册SSL提供者更新system.properties文件。JMeter默认协议等级TLS(传输层安全性)。这可以通过修改在jmeter.proerties或者user.properties文件中的https.default.protocol来改变。JMeter被配置接受所

8、有的证书,不管是否信赖和合法时间等。这允许在测试服务器最大灵活性。如果服务器需要一个客户端证书,这是可以提供的。为了更好的管理证书,也要有一个SSL 管理器 。JMeter 代理服务器(见下)不支持记录SSL(https)。2.2.5 JDBC 驱动如果你需要JDBC测试,需要添加厂商的JDBC驱动到classpath。确认文件是一个jar文件,而不是zip。2.2.6 Apache SOAPApache SOAP 需要 mail.jar 和 activation.jar. 你需要下载并拷贝这两个jar文件到你jmeter/lib 目录.一旦文件放到那里,JMeter 会自动找到它们。2.2.

9、7 BeanShell为了运行BeanShell函数或者任何BeanShell测试元件(取样器,定时器等),你需要从http:/www.beanshell.org/下载beanshell的jar文件并拷贝jar文件到jmeter/lib目录,JMeter会自动找到它。2.2.8 ActiveMQ 3.0类库详细参见 http:/activemq.apache.org/initial-configuration.html详细参见JMeter Classpath 一章安装附加的jar包2.3 安装避免在一个有空格的路径安装 JMeter。这将导致远程测试出现问题。我们推荐大多数用户运行最新版本。要

10、安装一个构建版本,简单解压zip/tar文件到你想安装JMeter的目录。保证一个JRE/JDK正确的安装并且设置环境变量JAVA_HOME,其它不需要做什么了。安装目录接口应该看到的像这样一些东西(2.3.1版本):jakarta-jmeter-2.3.1jakarta-jmeter-2.3.1/binjakarta-jmeter-2.3.1/docsjakarta-jmeter-2.3.1/extrasjakarta-jmeter-2.3.1/lib/jakarta-jmeter-2.3.1/lib/extjakarta-jmeter-2.3.1/lib/junitjakarta-jmet

11、er-2.3.1/printable_docs如果你想的话你可以重命名父目录(例如 jakarta-jmeter-2.3.1) ,但是不要改变任何子目录命。父目录路径中不能包含任何空格;如果包含,你运行客户端-服务器模式会有问题。2.4 运行 JMeter要运行JMeter, 运行 jmeter.bat (for Windows) 或者 jmeter (for Unix) 文件。那些文件在bin目录下。稍微暂停后,JMeter GUI会显示出来。在bin目录你会发现有些附加脚本很有用。Windows脚本文件(CMD文件需要Win2K或者更新): jmeter.bat - 运行JMeter(默认

12、在GUI模式) jmeter-n.cmd - 使用一个JMX文件运行非GUI测试 jmeter-n-r.cmd - 使用一个JMX文件远程运行一个非GUI测试 jmeter-t.cmd - 在GUI模式使用一个JMX文件 jmeter-server.bat - 以服务器模式启动JMeter注意: LAST可以在jmeter-n.cmd, jmeter-t.cmd 和 jmeter-n-r.cmd中使用,意味着最后一次测试会运行.Unix脚本文件; 可以运行在大多 Linux/Unix 系统. jmeter - 运行JMeter(默认在GUI模式) jmeter-server - 以服务器模式启

13、动JMeter2.4.1 JMeter ClasspathJMeter 自动从下列目录中的jar文件发现类。 JMETER_HOME/lib - 用来放使用的jar文件 JMETER_HOME/lib/ext - 用来放JMeter组件和扩展如果你开发新的JMeter组件,你可以压缩它们成jar包并拷贝到JMeter的/lib/ext目录。JMeter将会自动发现在这里的任何jar文件中的JMeter组件。支持的jar文件(类库)应该放在lib目录.如果你不想把扩展jar包放到lib/ext目录,可以在jmeter.properties中定义search_paths属性。不要使用lib/ext

14、给那些公用的jar包;它仅仅是存放JMeter组件。其他jar包 (例如 JDBC, 和任何JMeter代码需要支持的类库)应该被代替放在lib目录 - 而不是lib/ext目录。注意JMeter 会发现.jar文件,而不是.zip文件。你可以在$JAVA_HOME/jre/lib/ext安装有用的jar文件,或者(自从 2.1.1版本)你可以在jmeter.properties中设置user.classpath属性。注意设置CLASSPATH 环境变量将不起作用。这是因为JMeter 使用java -jar启动,并且java命令无记录忽略CLASSPATH 变量,并且当使用-jar选项时-c

15、lasspath/-cp 选项也被使用。所有的java程序都是这样,不仅仅是JMeter。2.4.2 使用代理服务器如果你从防火墙/代理服务器后测试,你需要提供给JMeter防火墙/代理服务器的主机名和端口号。这样做,从命令行使用以下参数运行jmeter.bat/jmeter文件:-H 代理服务器主机名或者ip地址-P 代理服务器端口-N 非代理主机 (例如: *.apache.org|localhost)-u 代理证书用户名- 如果需要-a 代理证书密码 - 如果需要例如 : jmeter -H my.proxy.server -P 8000 -u username -a password

16、-N localhost或者, 你使用 -proxyHost, -proxyPort, -username, and -passwordJMeter也有自己的内建HTTP代理服务器,来记录HTTP(不是 HTTPS)浏览器会话。这是和上面的代理设置描述不混淆的,它是在JMeter发出HTTP或者HTTPS请求时使用的。2.4.3 非用户界面模式 (命令行模式)为了不相互影响测试, 你可以选择运行没有用户界面的JMeter。这样做,使用下列命令选项:-n 这是指定JMeter在非用户界面模式运行-t 包含测试计划的JMX文件的名字-l 记录取样结果的JTL文件的名字-r 运行在jmeter.pr

17、operties文件里所有的远程服务器 (或者通过在命令行覆盖属性指定远程服务器)这个脚本也允许我们指定可选的防火墙/代理服务器信息:-H 代理服务器主机名或者ip地址-P 代理服务器端口例如 : jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 80002.4.4 服务器模式为了分布测试 ,在服务器模式运行JMeter,并且通过用户界面控制每一台服务器。jmeter-server/jmeter-server.bat 脚本使用适当的classpath为你开始远程注册。如果失败,参见关于JMeter服务器启动细节。运行jmeter

18、-server/jmeter-server.bat,加上下列选项命令:这个脚本也允许我们指定可选的防火墙/代理服务器信息:-H 代理服务器主机名或者ip地址-P 代理服务器端口例如 : jmeter-server -H my.proxy.server -P 80002.4.5 通过命令行覆盖属性Java系统属性,JMeter属性,和日志属性可以通过命令行直接覆盖(代替更改jmeter.properties文件)。这样做,使用下列选项:-Dprop_name=value - 定义一个java系统属性值。-Jprop name=value - 覆盖一个JMeter属性。-Lcategory=pri

19、ority - 覆盖一个日志设置,设置一个特殊目录为给定的优先级。-L 标志也可以使用没有目录名来设置根目录日志等级。例如 :jmeter -Duser.dir=/home/mstover/jmeter_stuff -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUGjmeter -LDEBUG注意命令行参数在启动时较早被处理,但是在日志系统被设置以后。尝试使用-J标志更新log_level或者log_file属性无效。2.4.6 日志和错误信息如果JMeter发现一个错误, 一个消息将被写入日志文件。日志文件名在jmeter.properties文件中

20、定义。一般定义为 jmeter.log 。并且在JMeter启动目录,例如bin。当在Windows下运行时,如果你不设置Windows显示文件扩展名,文件名会仅显示为 JMeter。你可以做一些事都很容易地发现伪装成文本文件的病毒和垃圾文件.还有记录错误,jmeter.log 文件记录一些测试运行信息。例如:10/17/2003 12:19:20 PM INFO - jmeter.JMeter: Version 1.9.2003100210/17/2003 12:19:45 PM INFO - jmeter.gui.action.Load: Loading file: c:mytestfil

21、esBSH.jmx10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Running the test!10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Continue on error10/17/2003 12

22、:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 started10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 is done10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Test has ended日志文件对发现错误原因很有帮助,作为JMeter不会打断一个测试来显示一个错误对话框。2.4.7 命令行选项目录调用JMeter的 jmeter

23、-?命令将打印所有命令选项的一个列表。列表如下:-h, -help 打印使用信息并退出-v, -version 打印版本信息并推出-p, -propfile argument 使用的JMeter属性文件-q, -addprop argument 附加的属性文件-t, -testfile argument 运行的JMeter测试文件(.jmx)-l, -logfile argument 日志取样文件-n, -nongui 非用户界面运行JMeter-s, -server 运行JMeter服务器-H, -proxyHost argument 设置JMeter使用的代理服务器-P, -proxyPo

24、rt argument 设置JMeter使用的代理服务器端口-u, -username argument 设置JMeter使用的代理服务器用户名-a, -password argument 设置JMeter使用的代理服务器密码-J, -jmeterproperty argument=value 定义附加的 JMeter 属性-D, -systemproperty argument=value 定义附加的 System 属性-S, -systemPropertyFile filename 一个属性文件被做为系统属性添加-L, -loglevel argument=value 定义日志等级: ca

25、tegory=level例如 jorphan=INFO or jmeter.util=DEBUG-r, -runremote从非用户界面模式启动远程服务器-d, -homedir argument 使用的JMeter目录2.5 配置 JMeter如果你希望改变JMeter运行时的属性你需要改变在/bin目录的jmeter.properties文件,或者创建你自己的jmeter.properties文件并且在命令行指定它。注意自 从 2.1.2,你能够通过JMeter属性user.properties在文件中定义附加的JMeter属性,user.properties默认值是 user.prope

26、rties。如果在当前目录被发现,这个文件被自动加载。类似的,system.properties 被用来更新系统属性。参数属性 描述 需要 ssl.provider 你可以为你的SSL实现指定类。如果你想使用来自sun的JSSE,是这 样:.ssl.internal.ssl.Provider。JMeter默认提供https支持。如果你正在使用JDK1.4, 或者你使用带JSSE类的jar文件在JMeter的classpath里的JDK1.4。 No .ssl.internal.ssl.Provider。 JMeter默认提供https支持是在你使用 JDK1.4或者你使用把JSSE类的jar包

27、放到JMeter classpath中的JDK1.3时候。 No xml.parser 你可以指明一个你的XML解析器实现。 默认值是:org.apache.xerces.parsers.SAXParser No remote_hosts 逗号分割远程JMeter主机列表。如果你在一个分布式环境运行JMeter,列出你用JMeter远程主机运行的机器。这允许你使用机器的用户界面控制那些服务器。 No not_in_menu 在JMeter选项屏中你不想看到的组件列表。 如果JMeter被添加越来越多的组件,你会希望定制JMeter只出现那些你感兴趣的组件。你可以在这儿列出那些类名和他们的类标签

28、(JMeter的用户界面出现的字符串), 它们将在选项屏中不出现。 No search_paths 列出那些JMeter搜索JMeter附加类的路径(以;分割);例如附加的取样器。被添加到lib/ext目录的任何jar包都被发现。 No user.classpath JMeter搜索的公用类库的路径列表。被添加到lib目录的任何jar包都被发现。 No user.properties 附加的JMeter属性文件名。 初始化属性文件后它们被添加,但是在-q和-J选项被处理之前。 No system.properties 附加的系统属性文件名。 -S和-D选项被执行前添加。 No 又见 jmete

29、r.properties 文件注释,在你改变其它设置时会给你更多的信息。 3. 创建一个测试计划一个测试计划描述了一系列Jmeter运行时要执行的步骤。一个完整的测试计划包含一个或者多个线程组,逻辑控制器,取样发生控制,监听器,定时器,断言和配置元件。3.1 添加和删除元件在一个树上通过右击可以添加元件到一个测试计划 ,并且从添加列表中选择一个新元件。另外,元件可以从文件加载并且通过选择打开选项添加。为了删除元件,确保元件被选中,正确在元件上右击,并且选择删除选项。3.2 加载和保存元件为了从文件加载元件,右击将要加载元件到的已经存在的树元件,并选择打开选项。选择你的元件保存的文件。JMete

30、r会加载元件到树中。为了保存树元件,在一个元件上右击,选择保存选项。JMeter会保存已选的元件,加上所有下面的子元件。用这种方法,你能够保存测试树的片段,单独元件,或者整个测试计划。工作台不会自动保存测试计划,但是它可以同上被单独保存3.3 配置树元件在测试树中的任何元件都在JMeter的右侧框架显示配置。那些配置允许你配置测试元件的细节行为,对于一个元件什么能被配置依赖于它是一个什么类型的元件。可以通过拖拉测试树周围的元件操作测试树。3.4 保存测试计划虽然这不是必须的,我们推荐你在运行前保存测试计划。为了保存测试计划,从文件菜单选择保存测试计划(使用最新版本,你不再需要首先选择测试计划元

31、件).JMeter允许你保存整个测试计划树或者仅它的一部分.为了仅保存测试计划树中特殊支位置的元件,从从这个支开始的地方选择树中的测试计划元件 , 然后右击鼠标访问保存菜单项.另外选择合适的测试计划元件并从编辑菜单选择保存. 3.5 运行一个测试计划为了运行一个测试计划,从运行菜单项选择开始。为了停止你的测试计划,从同样的菜单选择停止。JMeter 不会自动给它是否正在运行任何显示。如果JMeter运行,一些监听器使它变明显,但是唯一确定的方法是检查运行菜单。如果开始不可用,停止 可用,证明JMeter正在运行你的测试计划(或者,至少, 它认为它是)。有两个类型的停止命令: 停止 (Contr

32、ol + .) - 立刻停止所有的线程 关闭 (Control + ,)- 请求所有线程在当前任务结束后停止3.6 作用域规则JMeter测试树包含元件总是分等级和顺序的。在测试树中的一些元件是严格分级(监听器,配置元件,后置处理器,前置处理器,断言,定时器),一 些主要是有序的(控制器,取样器)。当你创建测试计划时,你将创建一个有序的取样请求(通过取样器)列表,那些请求描述了一组步骤的执行。那些请求常组织 在也有序的控制器中。给出如下测试树:测试树例子请求的顺序是 One,Two,Three,Four。一些控制器影响它的子元件的顺序,你可以在组件参考读到特定的控制器。其他元素是分等级的。例如

33、,一个断言在测试树中是分等级的。如果它的父元件是请求,它就被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。如下测试树:分级例子Assertion #1 仅被应用于请求 One, Assertion #2 仅被应用于 请求 Two 和 Three。另一个例子,这次使用定时器:复杂的例子在这个例子里,请求的命名表现它们被执行的顺序。Timer #1 应用于 请求 Two, Three, 和 Four (注意对于分等级的元件怎样的顺序是不相关的)。Assertion #1 应用于请求Three。Timer #2 对所有请求有效。希望那些例子使你弄清了配置(分等级的)元件

34、如何被应用。如果你想每个请求都被树分叉拒绝,到它的父元件,到它的父元件的父元件,等等,每次收集所有它的父元件的配置元件,你将看到它如何工作的。元件首部管理器, Cookie 管理器和授权管理器的配置和默认元件的配置被视为是不同的.默认元件配置的设置被并入取样器可以到达的一组值里了。然而来自管理器的设置没有并入。如果多于一个管理器在一个取样器范围中,仅仅一个被使用,但是现在没有办法指定那个被使用。3.7 错误报告JMeter 把警告和错误信息报告在jmeter.log文件中,也有一些测试运行本身的信息.只是偶尔地,JMeter对于某些错误是无法补捉和记录的,这些信息会 显示在命令台上。如果一个测

35、试的执行并不是你所期待的,请检查日志,也许错误会被报告(例如:也许在函数调用上有语法错误)。取样错误(例如:HTTP 404 - 找不到文件)是不会被正常的记录在日志中的,取而代之的,他们会被当作取样结果的属性来储存,取样结果的状态能被许多不同的监听器所得到。4. 测试计划元件测试计划对象有一个叫做功能测试复选框。如果被选择,它会使JMeter记录来自服务器返回的每个取样的数据。如果你在测试监听器中选择一个文 件,这个数据将被写入文件。如果你尝试一个较小的测试来保证JMeter配置正确并且你的服务器正在返回期望的结果,这是很有用的。这样的后果就是这个文 件会快速的增大,并且JMeter的效率会

36、影响。如果你不做压力测试这个选项应该关闭(默认关闭)。如果你不记录数据到文件,这个选项就没有不同了。4.1 线程组线程组元件是任何测试计划的起点。一个测试计划的所有元件必须在一个线程组下。由名字可以看出,线程组元件控制JMeter运行测试时使用的线程数。线程组管理允许你: 设置线程数 设置ramp-up period 设置执行测试的次数每个线程会作为一个整体执行测试计划并完全独立于他测试线程。多线程用来模拟到达服务器程序的同步连接。 Ramp-up period告诉JMeter多久开始ramp-up选择的全部线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用1

37、00秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。如果有30 个线程和一个120秒的ramp-up period,那么每个连续的线程会延迟4秒。Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动(除非你想那样发生)。 使用ramp-up=线程数启动,并上下调整到所需的。默认,线程组被配置仅循环一次。 1.9版本引入了一个测试运行*调度器*。 单击在线程组面板底部的复选框来显示额外的文本域,在里面你可以输入启动和结束时间。当测试启动时,如果必须JMeter会等待启动时间到达。在每个周期 结束,

38、JMeter检验结束时间是否到达,如果是,运行停止,如果不是测试被允许继续,直到迭代限制到达。另外你可以使用启动延迟和持续时间文本域。注意启动延迟会覆盖启动时间,持续时间会覆盖结束时间。 4.2控制器JMeter有两种控制器:取样器和逻辑控制器。取样器告诉JMeter发送请求到服务器。例如,如果你要JMeter发送一个HTTP请求添加一个HTTP请求取样器。你也可以通过添加一个或者多个配置元件到一个取样器来定制一个请求。更多信息,见取样器。逻辑控制器让你定制当发送请求时JMeter使用的判断逻辑。例如,你可以添加交替控制器来在两个HTTP请求取样器之间交替 。更多信息,见逻辑控制器。4.2.1

39、 取样器取样器告诉JMeter发送请求到服务器。JMeter取样器包括: FTP 请求 HTTP 请求 JDBC 请求 Java object 请求 LDAP 请求 SOAP/XML-RPC 请求 WebService (SOAP) 请求每个取样器有一些你可以设置的属性。你可以通过添加一个或多个配置元件到取样器来进一步定制它。注意JMeter发送请求按照取样器出现在树中的顺序。 如果你想发送多个相同类型的请求(例如,HTTP Request)到相同的服务器,可以考虑使用一个默认配置元件。每个控制器有一个或者多个默认配置元件(见下)。 记得添加一个监听器到线程组来查看/保存你的请求结果到磁盘。如

40、果你对使用JMeter平台的基础验证器到你的请求响应感兴趣,添加一个断言到请求控制器。例如, 在压力测试一个web程序时,服务器会返回一个成功的HTTP响应代码,但是这个页面有错误或者被忽略部分。你可以添加断言来检查某个HTML标签,一些 错误字符串,等等。JMeter允许你使用正则表达式创建断言。JMeter 內建取样器4.2.2 逻辑控制器保持逻辑控制器让你定制当发送请求时JMeter使用的判断逻辑。逻辑控制器还可以作为下列任何元件的子元件:取样器(请求)、配置元件、和其他逻辑控制器。逻辑控制器可以改变来自它们的子元件的请求顺序。它们可以修改请求本身,导致JMeter重复请求,等。理解逻辑

41、控制器在测试计划中的效果,考虑下列测试树: 测试计划 o 线程组 仅一次控制器 登录请求(一个HTTP请求) 加载搜索页面(HTTP取样器) Interleave Controller 搜索A(HTTP取样器) 搜索B(HTTP取样器) HTTP默认请求(配置元件) HTTP默认请求(配置元件) Cookie管理器(配置元件)这个测试的第一件事就是登录请求仅在第一次经过时被执行。随后的迭代会忽略它。这应使用仅一次控制器。登陆后,下一个取样器加载搜索页面( 假设一个用登录的web应用程序,并到达搜索页面去搜索)。这仅是一个简单的请求,不会被任何逻辑控制器过滤。加载搜索页面后,我们要做一个搜索。事

42、实上,我们想做两个不同的搜索。然而,在每个搜索之间我们想要自己重新加载搜索页面。我们通过4个简单 HTTP元件这样做。(load search, search A, load search, search B). Instead, we use the Interleave Controller which passes on one child request each time through the test. It keeps the ordering (ie - it doesnt pass one on at random, but remembers its place) of

43、its child elements. Interleaving 2 child requests may be overkill, but there could easily have been 8, or 20 child requests.注意HTTP默认请求属于插入控制器。假如Search A和Search B共享同样的PATH信息(一个HTTP请求说明中包括域,端口,方法,协议路径和参数,附加其他可选项)。两个搜索请求访问同样的后端搜索引擎(比方 说Servle,或者cgi脚本),这样是说得通的。与其两者都配置使用相同信息的HTTP取样器,我们可以抽象那些新到一个单独的配置元件。当

44、内部控制 器通过Search A或者Search B传递时,它会从HTTP默认请求配置元件中获得值填充空白。所以我们可以为那些请求保留PATH域为空,然后把那些信息放到配置元件。在这个例子中, 这至多是一个很小的好处,但它显示了这个特性。在这个树中下一个元件是另一个HTTP默认请求,这个时间被添加到线程组本身。这个线程组有一个内建的逻辑控制器,因此它正好使用这个配置元件做为 上面的描述。它填充任何穿过的请求的空白。 在web程序中你所有的HTTP取样器元件DOMAIN域为空,这是极度有用的,替代的,把那些信息放到HTTP默认请求元件中,添加到线程组。通过这样 做,你可以在一个同的服务器通过改变

45、你测试计划中的一个域来测试你的程序。另外,你必须编辑每个取样器。最后一个元件是一个HTTP Cookie管理器。一个Cookie管理器应该添加到所有web测试上-否则JMeter会忽略Cookie。通过在线程组级添加它,我们可以确定所有的线程分享同样的Cookie。逻辑控制器可以组合达到不同的结果。见内建逻辑控制器列表。 4.3 监听器监听器提供访问JMeter收集当JMeter运行的关于测试计划的信息。图形结果监听器在一张图上绘制响应时间。查看结果树监听器显示了请求和响应取样器的细节,并且以基础的HTML和XML显示响应表现。其他监听器提供了摘要或者集合信息。另外,监听器可以指导它们收集的数

46、据到一个文件供以后用。在JMeter中每一个监听器提供一个域来指出存储数据的文件。在测试中监听器可以添加到任何位置。它们仅仅会从它们等级或者它们以下等级的元件收集数据。伴随JMeter有很多有趣的监听器。4.4 定时器默认,JMeter线程发送请求时不在请求间暂停。我们建议你通过添加一个可用的定时器到你的线程组来指定一个延迟。如果你不添加延迟,JMeter会在短时间内产生太多请求,可能会压倒你的服务。 定时器会使JMeter在一个线程开始每个请求间延迟一段时间。如果你选择添加多于一个定时器到一个线程组,JMeter会在执行取样器前获得定时器数量并暂停那个时间量。4.5 断言断言允许你断言关于从测试服务器收到的响应的行为。使用断言你本质上你可以测试你的应用程序返回你期望的结果。 例如,你可以断言一个查询的响应会包含一些特殊的文本。你指定的文本可能是Perl风格的正则表达式, 并且你可以指出这个响应是包含这个文本,还是匹配整个响应。你可以添加一个断言到任何取样器。例如你可以添加一个断言到HTTP请求检查文本。JMeter会检查在HTTP响应中表现的文本。如果JMeter没有找到这个文本,它会标记这个为一个失败的请求。为了查看断言结果,添加一个断言监听器到线程组。4.6 配置元件配置元件配合取样器工作。虽然它不发送请求(除了HTTP代理服务器),但是它可

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号