软件测试的定义
IEEE给出两个规范、约束的测试定义:
- 在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价。测试是评测
- 分析某个软件项以发现和现存的和要求的条件之差别(即错误)并评价此软件项的特性。测试时度量
Glenford Myers在《软件测试的艺术》一书中提出:测试是为了发现错误而执行的一个程序或系统的过程。
测试的5个特征:
- 可以从需求开始,而不仅仅是代码 狭义测试仅仅是针对代码的,广义是针对软件产品生命周期
- 既是静态活动也是动态活动 静态不执行程序来评测,动态设计测试用例并执行
- 用来预防失效 更早发现错误并解决
- 有助于在软件生命周期中尽早发现问题 ,以降低修复缺陷所需的成本 越到后期修正错误的成本越高
- 过程中应创建可重用的测试件 测试项在不同的程序时相似的,则可以重用
- 测试时程序的执行过程,目的在于发现错误
- 一个好的测试用例在于能发现至今尚未发现的错误
- 一次成功的测试是发现了至今尚未发现的错误的测试
- 测试是为了证明程序有错,而不是证明程序无错误
当前关于软件测试目的的几种观点:
- 软件测试的目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性 带来2个问题,一是将时间浪费在无关紧要的bug上,二是浪费时间在实际中可能不会发生的缺陷
- 软件测试的目的就是保证软件质量 混淆测试和质量保证工作的边界,二者关注的方向是不同的
正确的软件测试的目的概念是验证需求,bug是这个过程的产品而不是目标
软件测试的关键问题:
- 软件测试是证伪而非证真
- 尽早地和不断地进行软件测试 考虑到成本成本问题,越早成本越低
- 重视无效数据和非预期使用习惯的测试 还有一些普通用户使用,会有误操作,合法与非法的操作
- 程序员应该避免检查自己的程序 第三方来测试效果会更好
- 充分注意测试中的群集现象 二八原则,80%的错误在20%的程序中
- 用例要定期评审 督促测试人员修改测试用例,使重用性更好
- 应当对每一个测试结果做全面检查 强检测比较明显,弱检测比较隐蔽,更需注意
- 测试现场保护和资料归档 现场保护使错误被认可,资料归档为后期的分析
- 软件测试的经济型原则 穷尽测试代价太高,使用合适的方法来测试
软件质量保证的定义:
软件质量是贯穿软件项目整个生命周期的有计划和有系统的活动。经常针对整个项目质量计划执行情况进行评估,检查和改进,向管理者、顾客或其他方提供信任,确保项目质量与计划保持一致。