了解 JMeter 作为 RESTful API 测试工具的功能,以及它与测试基于云的应用程序的相关性。因为多租户云是一个重要的云特性,所以本文将会介绍以编程方式整合数据分离和数据检索的技术,以确保数据的完整性。本文展示了如何编写有助于维护、可重用性和模块化的有效的 JMeter 测试脚本(也被称为测试计划 或 JMX 文件)。还了解了如何使用配置和属性文件,以确保可以在多种环境中运行相同的脚本。
作者假设您熟悉 JMeter 的用户界面,并拥有大量使用 JMeter 的经验。
在哪里设置实现最优脚本重用的属性
由于支持云的应用程序通常可以轻松、快速地进行复制和部署,所以可以在多种环境中对其进行测试。如果您需要在多个环境中测试和运行自动化脚本,那么可以在 JMeter 中使用一个独立的属性文件为连接资源(如,应用服务器和数据库)定义数据(包括登录凭据),这样做很有好处。
在 JMETER_HOME/bin 目录下的三个文件中定义 JMeter 的属性和变量。在启动 JMeter 时,它会按以下顺序加载这些文件:
jmeter.properties 一个可选的用户定义的属性文件 system.properties当 JMeter 正在运行的时候,如果要添加任何新属性或改变现有的属性,则必须先关闭 JMeter,然后重新启动它,使更改生效。
jmeter.properties 文件存储与 JMeter 应用程序本身有关的属性。这个文件中仅 保留了特定于 JMeter 程序的属性或特定于框架的属性。创建一个单独的文件(文件名由您选择),用该文件来存储测试环境特定的属性和变量,它们对于和接受测试的应用程序有关联的所有脚本来说是全局的属性和变量 — 例如,管理员的用户名/密码。在 jmeter.properties 文件中,取消对 user.properties 设置的注释,并将 user.properties 的值设置为所创建的文件的名称。清单 1 中的示例将该值设置为 myuser.properties:
清单 1. 在 jmeter.properties 文件中指定一个用户属性文件
# Should JMeter automatically load additional JMeter properties?# File name to look for (comment to disable)user.properties=myuser.properties清单 2 中的示例用户属性文件显示了在用户属性文件中定义变量所用的格式。(在该定义中,等号左边的任何地方都不允许有空格;必要时,属性值可以包含空格)。
清单 2. 示例用户属性文件
#----------------------------------------------------------------# FVT API Test Environment parameters#----------------------------------------------------------------## --- Login CredentialsUSER_LOGIN=admin@in.ibm.comUSER_PASSWORD=password## --- Application ServerAPP_SERVER=localhostAPP_PORT=80APP_CONTEXT=ctxPROTOCOL=http## --- Database Server${DB_NAME}DB_HOST=localhostDB_PORT=50000DB_NAME=dbnameDB_USER=dbadminDB_PASSWORD=dbpassword应保留 JMeter 的第三个属性文件 system.properties,以便必须为所有脚本定义的全系统属性能够使用它。例如,如果您的所有脚本都使用某个特定的数据库服务器,那么您可以在 system.propterties 文件中指定相关的属性。
JMeter 的 User Defined Variables 控制面板(如图 1 所示)显示了 JMeter 脚本如何读取在用户属性文件中定义的属性。
图 1. JMeter 脚本如何读取在用户属性文件中定义的配置数据
控制面板的 Value 列中的每个项目的格式为:
${__property(VARIABLE_NAME,VARIABLE_NAME)}例如,来自用户属性文件的 USER_LOGIN 变量被读取为脚本中的 ${__property(USER_LOGIN, USER_LOGIN)} 函数。括号中的第一个 USER_LOGIN 是在属性文件中定义的变量的名称(并且已在控制面板的 Name 列中列出)。如果属性文件中没有定义变量,那么第二个实例是默认值或回退值。
何时在属性文件中定义一个变量,何时将它定义为 JMeter 脚本里面的一个变量,这些并没有严格的规定。但有两个准则可以帮助您在多个 JMeter 脚本中实现一致性,并减少不必要的重复变量定义:
如果在几个脚本一致地使用相同的值,那么可以在用户属性文件或 system.properties 文件中定义数据。这方面的示例包括系统变量(例如,数据库名称和服务器名称),以及执行范围的变量(例如,日志级别)。 如果一些脚本使用一个在各脚本中可能会变化的值,那么可以将它定义为一个脚本变量,或在外部数据文件中定义它,例如,逗号分隔值(CSV)文件。