1.5 负载生成的4种方法

为了进行前文中描述的各种类型的性能测试,必须对代表性系统负载进行建模,生成负载并提交给被测系统。负载可与在功能测试用例中使用的数据输入类似,但在以下方面有所不同:

❑性能测试负载必须表示多个用户输入,而不仅是一个;

❑性能测试负载可能需要专用的硬件和工具来生成;

❑性能测试负载的生成取决于被测系统中不存在任何可能影响测试执行的功能缺陷。

在进行性能测试时,有效且可靠地生成指定负载是一个关键的成功因素。负载生成有不同的方法,例如通过用户界面生成负载、使用众测生成负载、使用API生成负载、使用捕获的通信协议生成负载等。

1.通过用户界面生成负载

如果只涉及一小部分用户,并且可以使用所需数量的软件客户端来执行所需的输入,则使用用户界面生成负载可能是一种适当的方法。这种方法也可以与功能测试的执行工具结合使用,但是随着要模拟的用户数量的增加,这种方法可能会很快变得不实用。

用户界面的稳定性也是影响性能测试的一个关键因素。频繁更改会影响性能测试的可重复性,并且可能对维护成本产生显著影响。通过用户界面进行测试可能是端到端测试中最具代表性的方法。

2.使用众测生成负载

这种方法需要大量测试人员,他们将代表真正的用户。在众测中,测试人员被组织起来,这样就可以生成所需的负载。这可能适合测试在世界各地都可以访问的应用(例如一些基于Web的应用),并且可能涉及用户通过各种不同的设备类型和配置生成负载。

虽然这种方法可以引入大量的用户,但生成的负载将不会像其他方法那样具有可重复性和精确性,而且将测试人员组织起来十分复杂。

3.使用API生成负载

这种方法类似于通过用户界面进行数据输入,但它使用应用程序接口而非用户界面来模拟用户与被测系统的交互。因此,该方法对用户界面中的更改(例如延迟)不太敏感,并且事务处理的方式可以和直接通过用户界面输入的方式相同。

在使用这种方法时,可以创建专用脚本以重复调用特定的API,与使用用户界面输入相比,这种方法可以模拟更多的用户。

4.使用捕获的通信协议生成负载

这种方法需要在通信协议级别捕获用户与被测系统的交互,然后重播这些脚本,以可重复和可靠的方式模拟潜在的大量用户。