- 什么是软件测试(software testing)
(来自wikipedia)
描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
换句话说,软件测试是一种实际输出与预期输出间的审核或比较过程。
软件测试的经典定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否满足设计要求进行评估的过程。
- 什么是软件的质量
ISO 9126 是一个用来评估软件的国际标准。该标准分为4个部分:quality model、external metrics、internal metrics、和quality in use metrics。
quality model(ISO9126-1)代表最新的(和持续的)用来表征软件的软件质量控制、软件质量保证和软件过程改进(SPI)
ISO 9126-1 软件质量模型定义了6个主要的质量特征,即:
- Functionality(功能性)
- Reliability(可靠性)
- Usability(可用性)
- Efficiency(效率)
- Maintainability(可维护性)
- Portability(可移植性/轻便性)
功能性是最重要的质量特征,没有功能性就没有其他的质量特征。
以上这些质量特征可以分解为很多子特征。以下分别描述各特征的子特征。
Functionality的子特征:
- Suitability:这是重要的功能性特征,指软件功能的适当性(符合规格)。
- Accurateness:这是指功能的正确性,一台ATM会提供现金分发功能,但是这个数额是否正确?
- Interoperability:一个给定的软件组件或系统的功能通常不是孤立的。这个子特征关切一个软件组件与其他组件或系统之间的交互的能力(功能之间的相互影响)。
- Compliance:在某些行业(或政府)法律和准则需要遵守的地方,例如SOX。这个子特征提出了软件的合规功能。
- Security:这个子特征涉及到未经授权的访问软件功能。
Reliability的子特征:
- Maturity:这个子特征关切软件故障的频率。
- Fault tolerance:软件承受(和恢复)组件或环境相关的故障的能力。
- Recoverability:将一个失败的系统恢复到全面运作的能力,包括数据和网络连接。
Usability的子特征:
- Understandability:确定系统功能可以被容易的理解,涉及用户心理模型中的人机交互方法。
- Learnability:考虑不同用户的学习能力,例如,新手、专家、临时工等。
- Operability:对于给定的用户在给定的环境下,软件很容易被操作的能力。
Efficiency的子特征:
- Time behavior:表征对于一个给定的thru put的响应时间,例如transaction rate。
- Resource behavior:表征资源的使用,例如memory、cpu、disk,和网络使用情况。
Maintainability的子特征:
- Analyzability:表征鉴定软件内故障的根本原因的能力。
- Changeability:表征改变一个系统需要花费的努力。
- Stability:改变一个给定系统后,这些改变可能会造成负面影响的敏感度。
- Testability:表征验证(测试)一个系统改变所需要的工作量。
Portability的子特征:
- Adaptability:表征将系统更改到新的规范或运行环境的能力。
- Installability:表征安装软件需要的工作量。
- Conformance:与Compliance的功能性相似,但是这个特征涉及可移植性(portability)。其中一个例子是,开放的SQL一致性涉及到的数据库使用的可移植性。
- Replaceability:软件组件的即插即用方面,即,在一个特定的环境内,交换一个给定的软件组件的容易程度。