软件测试的定义
- 证明软件不存在错误的过程
- 证明程序能够正确运行的过程
- 验证软件功能是否满足用户需求的过程
软件测试的定义随着发展而不断扩展,但软件测试最基本的活动就是找bug。
不同的定义只是说明了测试的目的以及如何来衡量测试是否成功。
软件测试的发展
- 软件调试
- 独立的软件测试(1950~)
- 软件测试的第一次定义(1973~Bill Hetzel),软件测试就是对程序能够按预期的要求运行建立起一种信心
- 软件成为专门的学科(1980~)
- 开发与测试的融合(2000~)
测试与调试的区别
- 目的不同
测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。 - 参与角色不同
测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。调试由开发人员完成。 - 执行的阶段不同
测试贯穿整个软件开发生命周期,调试一般在开发阶段。
软件测试的目的和原则
目的:验证软件有或没有问题。
原则:以客户为中心,遵循软件测试的规范、流程、标准和要求。
通过分析错误产生的原因、阶段及错误发生的趋势。测试可以:
- 帮助项目管理者了解当前软件开发过程中的缺陷,以便及时纠错、改进。
- 帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。
- 让开发人员知道错误产生的重灾区,加强自测试。
- 让客户清楚我们可以向他们提交一份满意的答卷。
根据测试的目的,测试可以分为两类:
- 为了验证程序能正常工作的测试;
- 为了验证程序不能正常运行的测试
测试用例
测试过程中可能会遇到以下问题:
- 不知道是否较全面的测试了所有功能
- 测试的覆盖率无法衡量
- 对新版本的重复测试很难实施
- 存在大量冗余测试,影响测试效率
测试用例的产生就是为了解决上诉问题。
测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
开发模型和测试模型
瀑布模型(Waterfall Model)
瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。
优点:
- 强调开发的阶段性;
- 强调早期计划及需求调查;
- 强调产品测试。
缺点:
- 依赖于早期进行的唯一一次需求调查,不能适应需求的变化;
- 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
- 风险往往在后期的测试阶段才显露,因而失去及早纠正的机会。在前期阶段未发现的错误会传递并扩散到后面的阶段,而在后面阶段发现这些错误时,可能已经很难回头再修正,从而导致项目的失败。
- 可以运行的产品很迟才能被看到。这会给项目带