5.9 怪异的应用技术
在我们测试过程中总是会有一些应用程序不能通过自动化性能测试工具捕获它们的事务。这往往是因为应用程序供应商不愿意公布其内部的实现方法,或者不提供应用编程接口(API)。API允许外部工具进行“钩子”调用,因此如果提供API这样的应用程序就能被录制;也可能系统在实现的过程中会涉及一些经过加密和压缩后的数据。
不管怎样,如果确信性能测试工具应该能够测试目标应用程序所使用的技术,那么请继续往下阅读。
5.9.1 绝望前的努力
在承认失败前,请尝试以下建议,以消除性能工具或环境配置可能存在的问题。在Windows操作系统上,请检查你已经链接到正确的可执行(EXE)文件上有时候,你需要“链接”到性能测试工具上的可执行文件并不是目标应用程序开始执行时的那一个。在这些情况下,应用程序可以正常工作,但你的性能测试工具将什么也录制不到。使用Windows任务管理器来检查哪些是应用程序开始时真正的执行文件,你可能会发现,有另外一个后台运行的可执行文件,负责处理所有客户端通信。如果是这样,那么链接到这个可执行文件上,就可以成功捕获信息。
代理问题
如果您的性能测试工具使用代理录制HTTP数据流,那么请检查已经进行了正确的代理设置。这通常是指在浏览器客户端上指定Internet协议(IP)地址、主机名称和代理服务器的端口,以及不通过代理服务器的例外设置。大多数性能测试工具使用这种方法时,将尝试自动选择正确的设置,但是有时会出错。可能需要手动更改您的浏览器代理设置,然后在性能测试工具里进行正确的设置。(在覆盖最初的设置之前,不要忘记做好备份!)
.NET应用软件可以使用代理功能吗
.NET应用程序不需要使用Web服务器进行通信,所以它们可能没有真正使用客户端的浏览器设置。在大多数情况下这是相当简单的,把这些类型的应用程序的“代理启用”设置打开即可,因此,如果客户部或项目部认可的话,这可能会是今后的一个发展方向。
Windows防火墙、IPSec和其他乱七八糟的技术
如果确信防火墙每个设定都是正确的,但仍然没有办法录制脚本,请检查Windows防火墙是否开启。它通常会(特意地)阻止性能测试工具访问目标应用程序。如果关闭防火墙的话,那么往往问题就会迎刃而解。
还有可能遇到Internet协议安全(IPSec)的问题。从技术角度来看,这是另一种形式的通信加密(如同SSL),但它运行在协议栈的第3层(TCP层),而不是第4层(应用层)。总之,这意味着应用程序不一定会使用IPsec,但它可以很容易地在两个操作节点(机器)启用。然而,IPSec的设计是为了防止安全会话通信的重播,因此这类例如Windows防火墙的问题,在Windows的配置里可以启用或禁用IPsec,或在网站、应用程序服务器上进行配置。
防病毒软件也可能会干扰录制过程,禁用防病毒软件可能会比较困难,防病毒软件可能是应用程序客户机的硬性要求安装的标准配置。
最后,检查你安装在机器上所使用获取数据的工具软件。我曾经发现,不同厂商的性能测试工具安装在同一个机器上可能出现一些冲突,造成录制过程出现问题。(当然它们不是故意设计成这样子。)