我在1996年12月的Stratus 用户组通讯的"VOS角"专栏中写了以下关于进行有效的生产前测试的评论。 几乎13年后的今天,这些话仍然适用。
如果我能给我们的客户提一个建议的话(只有一个要求!),那就是在将应用程序的新版本投入生产之前,一定要对它们进行压力测试。我最近遇到过一些情况,客户部署的应用程序通过了所有的功能测试,但在投入生产后不久就失败了,因为它无法处理生产负载。
我相信你也明白,软件是不可预知的,测试起来也很棘手。知道一个程序以每秒10个事务的速度工作,并不等于知道它以每秒100个事务的速度工作。知道它能以10个虚拟电路工作,不等于知道它能以1000个虚拟电路工作。在我所见过的每一个案例中,程序在实验室或测试环境中工作得很好,但在生产中却因为一些潜在的软件缺陷或容量限制而惨遭失败。一般来说,如果我参与其中,限制是在VOS内部,而不是应用程序,但无论它在哪里,对你的客户的影响都是一样的。如果你想知道你的应用程序是否能在生产中工作,你必须像在生产中一样测试它。
多年来,我听过很多借口,为什么你不能像在生产中一样测试你的软件的极限。我不相信任何一个借口。你可以捕获生产数据流和文件来用于测试。你可以安装合成测试生成器来模拟好的和坏的输入。你可以绕过设备敏感的接口代码,以便将高速数据流输送到服务器。有很多技巧可以让你的应用程序的90%都能正常工作,即使你不能让它100%在测试模式下工作。不要再把问题看成是模拟生产,而要开始把它看成是简单地让你的代码尽可能多地执行,尽可能快地执行。一定要把你的系统开到100%的CPU利用率,那是"有趣"的问题往往出现的地方。
通过将你的应用软件锻炼到极限,你也在锻炼VOS。你会在实验室中发现容量问题,而不是在生产中。您将知道您的容量极限是什么和在哪里。您将带着更大的信心退出测试阶段,相信您的应用程序部署将取得成功。您将使您的老板和客户满意。这些难道不是很好的理由吗?