2 关联测试中的响应与请求
正确的测试执行中,一个服务器请求常常使用前一个请求返回值。确保准确的相关性会导致性能更好的测试。
2.1 数据关联
一个对 Web 服务器的请求可以包含来自前一个请求的响应数据。我们对此类型关联所使用的术语是数据相关。另一个常用的同义术语是动态数据。
与应用程序的交互是彼此相关的。特别是,一个对 Web 服务器的请求常常包含从前一个请求的响应中的,返回到 Web 浏览器中的数据。例如,考虑下面与基于Web 的应用程序的交互:
- 工资单职员输入应用程序的 URL,这会发送一个登录提示。当职员成功登录时,Web 服务器向职员的 web 浏览器返回一个会话 ID 以及表示登录成功的页面。
- 职员在返回来的打开雇员数据库搜索页的页面上单击链接。职员不知道的是,Web 浏览器发送了包含会话 ID 的请求。根据会话 ID, Web 服务器知道请求来自于某个已经登录的人,所以返回雇员数据库搜索表格。现在职员执行一个或多个姓名搜索操作,来定位具体的雇员。在其它信息中,Web 服务器返回一张照片和一个唯一的 ID。(根据应用程序的设计,雇员 ID 可以是可见的或是隐藏的。)
- 职员单击一个返回当前雇员工资记录的链接。伴随该请求,Web 浏览器发送会话 ID(以便 Web 服务器可以知道请求来自于已经登录的某人)及雇员 ID(以便 Web 服务器可以定位并返回正确信息)。
在此实例中,请求 2 依赖于请求 1,且请求 3 依赖于请求 1 和 2。在多用户执行测试之前,如果您在性能测试中记录了这些交互,您很可能改变测试数据:用数据库中包含的值替换用户名或密码值、雇员姓名搜索值,或两者。当您执行测试时,根据数据库中的内容,每个测试用户都会返回一个不同的雇员工资记录。
在生成的性能测试(其中,请求中的数据会依赖于包含于对前一个请求的响应中的数据)中,请求数据会由它所依赖的响应数据替代。对应此响应和请求数据的内部标记的术语是数据关联(或者有时叫做动态数据)。数据关联是使用各种数据执行正确的多用户测试所需要的。
引用是测试中的一个值(通常在响应中),它可以由测试中后来的值(通常在请求中)所使用。当测试生成器发现应该用前一个值来替代请求值时,它会指定更早的值作为引用并将后来的请求值与引用关联起来。这称为自动数据关联。但您也可以手动地关联测试中的任意两个值或解开现有的关联。(或可以在参数设置中修改或禁止自动数据关联:单击 窗口 > 首选项,展开测试,并单击 性能测试生成器。
为帮助您处理数据关联,测试编辑器使用了彩色编码并提供了导航帮助:
- 当您单击一个页面时,详细信息页面包含一个在页面中列出数据库候选(黑色字)、数据库数据(绿色字)和管理数据(红色字)的测试数据表格。(要启动显示或管理数据,右键单击任意表格并选择显示引用。)您可以通过双击适当的表格行来直接导航到包含关联数据的页面请求。您也可以将关联数据从该表格中放入数据库,单击行及表格下面的 从以下位置替换 按钮。
图8
- 当您展开一个页面时,黄色的部分强调包含数据库数据或候选(绿色字)或者关联数据(红色字)的页面请求。
图9
- 当您单击高亮的请求时,数据库候选(测试生成器所确定的您可能用数据库值替代的请求值)呈现浅绿色,数据库值呈现暗绿色,且关联数据呈现红色。如图所示,如果您右键单击相关值,您可以转至其引用:
图10
- 引用呈深蓝色:
图11
2.2 创建引用或字段引用
指定测试值作为引用,或者指定测试数据的一个范围作为字段引用,可以使您在测试的另一处使用数据。引用(通常位于响应数据中)包含了您想要在后来的测试(通常是请求)中使用的值。您可以用引用来替代请求值(称为数据关联)。您还可以用引用作为对测试中 if 或 then 条件的输入,或者定制您的测试所调用的 Java 代码。
引用指向测试中的具体值,而字段引用指向测试数据的一个范围。您可以将字段引用作为if 或 then 条件的输入参数,或者用来定制代码。
要创建引用或字段引用:
1. 打开测试。
2. 定位到您想要指定为引用或字段引用的值或容器。
可以在这些地方创建引用或字段引用:
- 请求的 URL 或发送数据(URL 和 数据 框)
- 请求或响应标题值(请求头或响应头表格的值列)
- 响应内容(内容框)
3. 如果您在创建一个引用,将该值高亮:按下鼠标左键,拖动鼠标将其覆盖。
4. 要创建引用,右键单击并选择 创建引用。该值变为浅蓝色,表明其为未使用的引用。当您使用它时,其变为深蓝色。
图12