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