可靠性和测试
学习目标
学习使软件变得可靠,对于想成为具有竞争力和成功的开发人员是非常重要的。本书大部分将致力于使软件不会失败的开发习惯,技能和实践。本章节的目标是介绍一些关于可靠性软件的一般概念和定义以及用测试作为特定技术实现,来为前面提到的实践和技术打下基础。
这一章节 特别地
2.1 可靠的软件
在计算的早期,程序一般使用者就是编程人员,比方说,一个物理学家可能写个程序来帮助于数值分析来自实验室的数据。如果程序崩溃或运行失常, 那么破坏仅局限于修改程序以改正错误。在近20年,计算机的大量采用,显著地改变了对可靠的程序的需求。现在一般计算机用户不是计算机编程人员且不会接受软件不能工作。现在用户期望软件能正常工作,可靠性是在生产软件时质量方面一直奋斗的目标。可靠性可以被定义为多种方式但我将用ISO9126(ISO/IEC 国际标准2001)标准。
定义:可靠性(ISO 9126)
软件产品在一定条件下能维持一定水平的性能的能力
关于这个定义的核心方面是…维持一定水平的性能,在我们的环境“性能”就是执行必须的功能且不失败的能力:让用户使用软件产品进行工作。非正式化情况下开发者称之为“系统可工作”。
可靠性是使软件有用必须具备的质量之一。另一个质量可能是,它必须执行得很快且高效以至于给用户的反馈不会花太长时间。它必须可用,因此用户可以高效地了解和使用软件,等。下一个章节将“可维护性”作为一个重要的质量来讨论,然而可靠性是质量核心,因为如果软件不可靠那么其它大量的质量将会变得不相干。比如,如果答案是错的,那么即使系统能很快的反馈也将没什么用处。
可靠性是对于软件来说期望很高的一项质量,且研究组织和行业协会已产生大量的技术关注于达成可靠性。下面是一些例子:
我采用了Java或类似的现代面向对象的编程语言,因此这些语言比其它老的类似C, Fortran和BASIC语言有更好的可靠性。检阅是一项重要的技术可以捕获许多不同类型的缺陷,但在本书中我不会做进一步讨论。测试是一项众所周知的技术,但敏捷开发运动特别是测试驱动开发技术使其有了新生。因此我将强调测试和测试驱动开发。本章的剩余部分就致力于用测试的基本定义和工具来打造使用这些技术的基础。
翻译自书籍:Flexible, Reliable Software Using Patterns and Agile Development, Henrik Baerbak Christensen
后面的翻译将陆续更新… 下一篇,2.2 测试的术语