Jaa


系统压力测试

    对我们的系统和组件进行压力测试是非常重要的。压力测试可以发现很多在正常情况下不会被暴露的问题,也就是说可以发现更多其他测试无法发现的系统缺陷。虽然压力测试和负载测试在某些方面有共同点,但是两者并不相同。负载测试是通过在系统上运行已经定义好的工作负载从而确保系统能够在一定的负载系正常工作。而压力测试是测试系统过载的情况,并帮助回答这样一个问题“什么原因导致了系统错误?”

    以下是我曾经参与过的一些压力测试:

  • Windows 客户端的压力测试

    在这个系统测试中,我们同时运行许多应用程序,伪应用程序以及测试程序。如果你没有看到过这种情形,你应该去尝试一下。此时,很多子系统会被同时频繁地调用。由于现实中,一个人很难同时做很多事,所以一般Windows用户是很难出现这样的负载。

  • Xbox 压力测试

    在这个系统测试中,许多测试程序和一个游戏引擎同时在Xbox的进程空间中以多线程的方式运行。在Xbox中的所有测试都被设计成与系统内核同时运行在同一个进程空间中。而这也正是Xbox系统的模型。每个测试都是一个线程,每个线程都知道自己不能独享整台机器。我们同时运行所有的测试,于是就出现了图形测试,I/O测试,声音测试,网络测试和控制器测试同时运行的情形。

  • HPC 压力测试

    在这个系统测试中,我们在管理控制台运行的时候提交许多简单的MPI作业,从而模拟了一个很大的工作负载。事实上,它模拟了一个实际中不可能出现的工作负载,因为真正的用户不会喜欢一个集群同时有成百上千的作业在队列中等待处理 。成千上万的MPI作业同时运行,就会有几百万个状态更新信息被发送到管理控制台。此时管理控制台就需要同时处理几百万条消息。

    这些测试都如下共同点:

  • 没有用户会这样使用系统!
  • 负载是完全不合理的
  • 系统最终可能会崩溃
  • 我们可能不会修复这样的BUG,因为用户不会碰到它。

    这是一种设计出来的不合理的负载。实际中用户不会给系统带来如此强度的工作负载。而这种负载强度应该会导致系统崩溃。但是我们并不会修复每一个这样的BUG。其实这些都并不是重点。重点是我们可以通过这样的测试很快发现系统的弱点,并决定这些弱点是否应该被修复或者处理并由此调整测试。一个在正常使用情况下可能需要一个月才暴露的BUG,在压力测试中可能几分钟就会暴露出来。这是一种很有效并高效的寻找BUG的方法。

   

    压力测试的关键是:

一个通过了压力测试的系统在正常的工作负载下将很难出错。这样的系统才是好系统!

 

 

John Daly

高性能计算(HPC)美国团队测试经理

 

翻译:周毅, 高性能计算中国团队测试开发工程师

Comments

  • Anonymous
    April 14, 2009
    恕我直言,这篇文章基本等于什么都没说。最后一句总结压力测试的关键更是文不对题。我实在不太清楚写这篇文章的目的是什么~~~