Linux 标准测试的设计过程
自动软件测试让您可以在一段时间内运行相同的测试,从而确保您所比较的内容具备真正的可比性。在本文中,Linux Test Project 团队的成员们分享了他们对 Linux® 内核进行压力所使用的测试的方法、原理以及脚本和工具。
在对 Linux 内核版本稳定性的测试中,需要明确地声明并证明为什么版本是稳定的或者是不稳定的。然而还没有被证明和证实当前现有的系统范围内的压力测试可以测试 Linux 内核整体上的稳定性。本文给出了一个创建系统范围内 Linux 压力测试并证明其结果正确性的方法。不同的 Linux 开发者、用户和发行版本会使用他们自己的方法来测试内核的稳定性。不过,关于他们决定运行哪些测试、覆盖的代码、达到的压力级别等的基础信息都没有发布,这就大大降低了结果的价值。
使用实验室的机器以及来自 Linux Test Project 测试套件的测试,我们基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。我们对这个组合测试进行了分析,以确定 Linux 内核的哪些部分在测试执行中得到了使用。然后,我们修改了组合测试,在保持期望的高强度系统压力的同时提高代码覆盖率的百分比。最终得到的压力测试涵盖了 Linux 内核的足够多部分,有助于稳定性声明,并且有系统使用情况和内核代码覆盖情况的数据来支持它。
这一组合测试方法的四个步骤是:测试选择、系统资源利用率评价、内核代码覆盖分析以及最终的压力测试评价。
选择测试
测试选择包括选择达成两方面目的的测试:
只要有可能,都要使用自动化的或者易于修改的测试,以支持自动操作。自动操作可以使得测试更快而且可以重复进行,并帮助降低人为错误的风险。选择合适的测试时需要考虑的另一个方面是,使用可以自由发布结果的应用程序。最好是选择坚决拥护开放源代码方法 和/或 GPL 的测试和测试套件,以助于确保发布过程的简便。
评价系统资源利用率
所选择的测试的组合必须给系统的资源带来足够的压力。Linux 内核的四个主要方面可以影响系统的响应和执行时间:
测试设计者应该使用下面这两个著名的且广为应用的开放源代码 Linux 资源监控工具来评价资源利用率水平。(请参阅本文稍后的参考资料以获得下载这些工具的链接。)
top:由 Albert D. Cahalan 维护着的一个开放源代码工具,包含于大部分 Linux 发行版本中,可用于当前的 2.4 和 2.6 内核。 sar:另一个开放源代码工具;它由 Sebastien Godard 维护。这个工具也包含于大部分 Linux 发行版本中,可用于当前的 2.4 和 2.6 内核。方法中的系统资源利用率评价阶段通常需要多次尝试才能得到合适的测试组合,并得到期望水平的利用率。当确定测试组合时,过度利用总是一个至关重要的问题。例如,如果选择的组合过于受 I/O 所限,可能会导致 CPU 的测试结果不好,反之亦然。方法的这一部分主要是大量的试验和出错,直到所有资源达到期望水平。