1. 软件测试定义
1.1. 《软件测试的艺术》(1979年,Glen ford Myers):测试是为发现错误而执行的一个程序或者系统的过程。
但是测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。
1.2. 《软件测试完全指南》(1983年,Bill Hetzel):测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。
1.3. 《系统的软件测试》(2002年,Rick,Stefan):测试是为了度量和提高被测软件的质量,对测试软件进行工程设计,实施和维护的整个生命周期过程。
1.4. 经典定义:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。
软件测试应该是对软件形成过程中产生的文档,数据,程序进行的测试,而不仅仅是对程序的测试。
2. 软件测试的目的:
以最少的人力,物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
3. 软件测试的原则:
3.1. 所有的软件测试都应追溯到用户需求
3.2. 应当把“尽早的和不断的进行软件测试”作为软件测试者个座右铭
3.3. 完全测试时不可能的,却是测试后期,为发现错误所付出的代价越大,因此要根据测试错误的概率和软件可靠性的要求,确定最佳停止测试时间
3.4. 测试无法显示软件潜在的缺陷,测试只能证明软件存在错误,而不能证明软件没有错误
3.5. 充分注意测试中的群集现象
3.6. 程序员应避免检查自己的程序
3.7. 尽量避免测试的随意性
4. 软件测试分类
4.1. 按照开发阶段划分:
单元测试:检查每个程序单元(模块)能否正确实现详细设计说明中的模块功能,性能,接口和设计约束等要求,发现模块内部的错误。
集成测试:在单元测试的基础上,将所有程序模块进行有序的,递增的测试。检验程序单元或部件的接口关系。对应概要设计说明。
确认测试:证实软件是否满足预期需求,检测与验证软件是否满足软件需求说明书的要求。
系统测试:在真实或模拟系统运行的环境下,检查完成的程序能否和系统(硬件,外设,系统软件,支持平台)正确配置,连接,以满足用户需求。
验收测试:按照项目任务书或合同,供需双方约定的验收依据文档进行的对整个系统的评审,决定是否接收或拒收系统。
4.2. 按照测试技术划分
白盒测试:通过对程序内部结构分析,检测来寻找问题
黑盒测试:通过对软件外部表现来发现缺陷和错误
灰盒测试:关注输出对于输入的正确性,介于白盒和黑盒之间。通过一些表征的现象,事件,标志来判断内部的运行状态。
4.3. 按照测试实施组织划分
开发方测试: 在软件开发环境下,由开发者检测与证实软件的实现是否满足软件设计说明书或者软件需求说明的要求
用户方测试:在用户的应用环境下,用户检测软件是否符合自己预期的要求。β测试通常被看做一种用户测试,主要是把软件产品有计划地免费分发到目标市场,让用户大量使用,并评价,检查软件。
第三方测试:验证和确认活动(IV&V),使用在技术,管理,和财务上与开发组织具有规定程度独立的组织进行的验证和确认过程。