这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

When the Server Crashes, Testing's Done

上一篇 / 下一篇  2008-06-16 10:08:48 / 个人分类:IT英语

英文原文在 http://www.sdtimes.com/content/article.aspx?ArticleID=32286

原文作者:Edward J.Correia

在发布日程有着严格的时间限制的情况下,软件团队所面临的挑战通常是在保证高质量的同时,尽量多的压缩测试的时间。“当应用于负载测试时,在同等时间内,和其他方法相比,故障注入工具可以让测试员发现更多的缺陷,尤其是那些隐藏很深的和更重要的缺陷。” Pete Jenery说,一个有着20年软件行业经验丰富的老手,现在从事风险分析和风险转移顾问工作。这将给经理们判断哪些特性或者功能可以及时发布,而哪些不可以,提供需要的数据支持。

今天越来越复杂的应用有几千万行代码组成,这些代码又是由大量软件开发商提供的成百上千的库装配而成,但没有一个开发商能保证其质量和稳定性,Jenner声称。他观察到,开发者在维护一个可靠的系统时,在不被修改的前提下,允许他们使用不熟悉的库作为替代。

这个系统假定为:
应用所消耗的资源总是可用并且正确;
他们的应用拥有系统所有的资源;
没有人拿他们消耗的系统资源冒险

正如我们知道的这样,这些假设中没有一个是特别安全的,三个假设同时存在就更不安全。Jenney说,更糟糕的是,“作为经理,我们还给这些项目强加上不切实际的时间限制,以及给开发团队员工的工作量要求。开发过程中的‘紧急’经历使开发者不得不采取快捷的方式,对应用发布后如何被使用作出假设。”这将使得简单的代码问题变得戏剧化,如下代码:
try
    {
          newThingy = new criticalResource();
    }
catch
   {   
        // TODO:  figure out what to do if we get here
   }


“这就是那个被管理层紧急催促导致很脆弱和不安全的系统,谁都不希望看到由于市场压力进而带来的各种问题。”Jenney说。

要解决这个问题,其中一个方法就是增强测试的深度,而不是增加测试过程的时间长度。Jenney的意见,最简单的方式是使用故障注入。

故障注入是一种强迫应用程序去执行代码路径,加强错误处理,增强应用的测试深度的方法。Jenney解释道,“通过模拟强制错误出现的条件——例如硬盘空间不够,内存不足,缺少DLL库文件,数据文件被破坏或者网络中断——从而发现正常测试中容易遗漏的缺陷。”通过将故障注入方法引入到正常的自动化功能测试中,不仅能发现更多的缺陷,还会使你的工作更有趣,尤其是找到比以前更难发现的bug时。

更重要的是,这种技术发现的缺陷不光是团队自己的代码,还包括应用程序用到的库和资源。“这将彻底摧毁开发所依赖的‘可靠系统’”。Jenney强调,“从而激励更好的代码以及更适当的管理方式。”

Jenny提供了好的故障注入测试的示例:

•    Linear Memory Availability Cycling – Exposing the application under test to varying RAM availability, with the change being a fixed increment from maximum to minimum and back again.

•    Random Memory Cycling – Varying RAM availability, with the change being a random increment between fixed maximum and minimum values.

•    Linear Network Up and Down Bandwidth Availability – Exposing the AUT to parallel bandwidth degradation, with the change being a fixed increment from maximum to minimum and back again; and exposed to cross-over degradation, where the up and down bandwidth are opposite.

•    Network Packet Fuzzing – Randomly corrupting network packet I/O to watch for unstable behavīor or the lack of unstable behavīor. In security testing, often the application that doesn’t fail is the most interesting. 

以上的每一个测试都会导致一些“有趣”的行为,Jenney说,“很小的网络带宽或者有限的系统内存都是强制系统崩溃和暴露各种各样有趣的性能问题的好方法,当然也会暴露功能方面的问题。”

注:时间特别仓促,不当之处,请指出,谢谢!


TAG: IT英语

 

评分:0

我来说两句

Open Toolbar