测试生成期间使用的数据关联算法基于众所周知的最佳做法。但是,由于这些做法在不断地演进,因此在自动数据关联期间可能会发生各种类型的错误:
当必须关联的两个参数具有不同的名称时,自动数据关联无法识别到这两个参数是相关的。例如,考虑以下请求:http://www.example.com?id=12345。假定该请求必须与包含 customer_ID=12345 而非 ID=12345 的服务器响应关联。在该情况下,ID 参数必须与 customer_ID 关联。
数据关联通常将从服务器返回的响应值与后续请求值链接在一起。自动关联算法在 URL 和 POST 数据中搜索潜在匹配项;但是,也可能存在用于返回参数的其他方案。例如,考虑以下请求:http://www.example.com?id=12345。假定该请求必须与包含名称和实体对 href name="customer_ID" entity="12345" 而非 ID=12345 的服务器响应关联。 在该情况下,ID 参数必须与 name="customer_ID" 关联,值 12345 必须与 entity="12345" 关联。
有时,某个参数或值必须关联的先前参数或值未指定,因为它是由JavaScript 程序等计算出的。 在该情况下,为了正确地关联数据,必须了解如何以及在何处计算该参数或值,然后使用定制代码块。请参阅通过定制代码扩展测试执行以了解与定制代码有关的更多信息。
例如,考虑 Web 地址 http://www.example.com?login_stamp=12345_Apr_11_07,其中 login_timestamp 的值是登录标识和当前日期的并置。在该情况下,必须生成将登录标识和日期并置的定制代码。
对于另一个示例,假定服务器返回登录标识和日期作为单独的实体:href "customer_id=12345" Date="Apr_11_07"。在该情况下,可将这些参数放到单独的引用中,并在使用客户标识和日期的后续请求中单独将其替换。
自动数据关联基于模式匹配:参数或参数值与名称完全相同或类似的后续参数或参数值关联。但是,有时,名称完全相同或类似的参数实际上并不相关。在最好的情况下,不需要的关联没有妨害,或者只轻微增加了不合适的负载。在最坏的情况下,应用程序不需要关联,并在回放期间失败。
需要数据关联的参数在整个测试中可能出现多次。例如,用户登录时最初使用的会话标识参数还可能在每个后续请求中使用。如果测试中某个参数的多个实例不同,那么关联算法可能使用错误的实例。