LoadRunner特殊函数在测试中的误差分析

需积分: 0 0 下载量 140 浏览量 更新于2024-09-20 收藏 503KB DOC 举报
"LoadRunner测试工具中特殊函数的使用可能会导致一些预料之外的问题,本文将通过一个具体的案例探讨这些问题,并提供解决方案。" 在LoadRunner性能测试过程中,有时我们需要使用特殊的函数来实现特定的逻辑,例如数据计算、字符串操作等。在上述描述中,测试人员在验证一个进销存管理系统的进货总额计算功能时遇到了问题。测试脚本根据商品名称、数量和单价计算出的进货总额与页面显示的数值相同,但系统仍然提示预期结果与实际结果不一致。 关键脚本代码中,测试人员使用了以下函数: 1. `atof`:这是一个将字符串转换为浮点数的函数。在这里,它被用来将页面上的进货总额字符串"6279.60"转换为浮点数。 2. `float`:用于存储单价和计算总价格的变量类型。 3. `int`:用于存储进货数量的变量类型。 4. `sprintf`:格式化输出函数,将浮点数保留两位小数并转换为字符串。 问题出在比较字符串`totalprice`(即页面上的进货总额字符串)和`strtmpres`(保留两位小数的浮点数转换后的字符串)。这里,测试人员错误地认为可以简单地比较两个字符串的首字符(`*strtmpres==*totalprice`),实际上这是不正确的比较方式。字符串比较应该使用`strcmp`函数,而不是比较首字符指针。 正确的做法应该是将浮点数`ftotalprice`转换为字符串后,再与页面上的进货总额字符串进行比较,同时考虑到浮点数的精度问题。在C语言中,可以使用`printf`或`sprintf`将浮点数转换为字符串,并保留足够的小数位数,以确保与页面上的值匹配。此外,比较字符串时,应使用`strcmp`函数,如下所示: ```c // 将ftotalprice转换为字符串 char strTotalPrice[64]; sprintf(strTotalPrice, "%.2f", ftotalprice); // 使用strcmp进行字符串比较 if (strcmp(strTotalPrice, totalprice) == 0) { lr_output_message("预期结果与实际结果相等!"); } else { lr_output_message("预期结果与实际结果不等!"); } ``` 总结,LoadRunner中特殊函数的应用需要注意以下几点: 1. 函数使用要正确,如`atof`用于字符串转浮点数,`strcmp`用于字符串比较。 2. 在处理浮点数时要考虑精度问题,特别是在与显示的数值进行比较时。 3. 测试脚本中的逻辑应严谨,确保所有可能的情况都得到正确处理。 4. 输出消息有助于调试,可以帮助识别脚本中的错误。 通过以上改进,可以更准确地判断系统是否正确计算了进货总额,从而提高测试的准确性。