测试目的
测试可以完成许多事,但最重要的是可以衡量正在开发的软件的质量。这种观点预先假定软件中存在等待被发现的缺陷,并且这种观点很少被反驳,甚至也不存在争议。
有若干因素促成了使测试成为任何软件开发投入中高优先级的重要性。这些因素包括:
- 降低程序的开发成本。推迟测试投入可能会在开发周期的早期阶段产生最低限度的节省,但在以后的开发中必定会增加成本。通常的估计显示:问题如果直到程序实际运行时才被发现和加以解决,解决问题所需的费用比在开发周期的早期解决该问题所需的费用要多 40 - 100 倍。
- 确保应用程序的行为与向客户解释的完全一样。对于绝大多数应用程序来说,应用程序使用方面的最不理想的结果就是不可预测性。
- 降低总拥有成本。通过使提供的软件在外观和行为上与文档中说明的一样,客户需要的培训时间更少,需从产品专家获得的支持也更少。
- 发展客户忠诚度和口碑市场份额。与试图依靠满是错误和缺陷的代码来建立客户群相比,发现只有经过彻底测试才能提供这种质量的程序是否成功要容易得多。
组织测试投入
开发周期中,越早使测试成为投入的一部分越好。规划对于成功的测试投入至关重要,部分是因为它在设置预期值方面需要做大量的工作。在测试计划中考虑预算、日程和性能可以增加测试确实发生的可能性,并且高效实惠。规划还确保不会忘记或重复测试,除非重复测试对于回归测试是必要的。
基于要求的测试
软件规范的要求部分的确不止是设置基准和列出功能。它还提供关于产品的所有测试的基础。毕竟,测试通常识别基于规范中的说明引起、导致或允许软件中的意外行为的缺陷;因此,测试小组应该参与规范编写过程。规范编写者在提出要求时应保持下列标准:
- 所有要求都应该是明确的,只能以一种方式解释。
- 所有要求都必须可以以一种确保程序编译的方式来测试。
- 所有要求都应该是绑定的,因为客户要求这样。
应该在编写规范的时候就开始设计测试案例。从规范对测试案例开发的支持程度的观点来分析每个规范。开发测试案例的实际操作迫使您以更具批评性的眼光来考虑规范。
制定测试计划
测试计划勾勒出整个测试过程,且包括个别的测试案例。要制定一个可靠的测试计划,必须系统地浏览程序,确保覆盖范围是彻底的并且没有不必要的重复。正式的测试计划建立一个不依赖于偶然的随机测试的测试过程。
与开发一样,测试可以很容易成为一项使自身长存的任务。因此,应用程序规范以及随后的测试计划应该定义随应用程序提供的可接受的最低质量。
测试计划方法:瀑布式与进化式
两种常用的测试方法是瀑布式方法和进化式方法。
瀑布式方法是一种传统的测试方法,它直接从每个人在各阶段中工作的开发小组开始,从要求分析传给各种类型的设计和规范,然后传给编码、最终测试直至发布。对于测试小组,这意味着等待最终规范,然后遵守开发所制定的模式。这种方法的一个显著缺点是排除了测试在过程的早期阶段识别问题的机会;因此,最好只在复杂性有限的小项目中使用它。
另一种方法是进化式方法;在这种方法中,您开发应用程序的一个模块化片段(或单元),测试它,修复它,对它感到有些满意后添加另一个增加功能的小片段。然后将这两个单元作为一个集成组件进行测试,测试过程中不断增加复杂性。下面是这种方法的某些优点:
- 您有低成本的机会来重新评估要求并简化设计,因为您对应用程序有更好的了解。
- 不断地交付工作的有用产品。如果以优先顺序添加功能,可以随时停止开发并且知道已完成最重要的工作。
- 不用试图制定一个巨大的测试计划,而是可以从小的模块化片段开始,这些小片段将成为最终的大测试计划的组成部分。过渡期间,可以使用小片段来查找错误。
- 可以向测试计划添加新的部分或者深入新的领域,并且使用每个部分。
关于不同方法的争论范围非常大,远远超出了本文档的范畴。如果这里的建议看起来不适合您的项目,您可能需要进行更深入的研究。
优化
优化是一个与测试紧密相关的过程。优化是通过优化软件、硬件或两者来识别和消除瓶颈的过程。优化过程由四个主要阶段组成:收集、分析、配置和测试。在优化应用程序的第一阶段,需要收集数据以确定基准性能。然后通过分析这些数据,可以提出识别潜在瓶颈的理论。在配置或代码中做出调整并记录了所做的调整后,必须重复初始测试并确定您的理论是否被证明是正确的。如果没有基准性能数据,就不可能确定修改是有益于应用程序还是阻碍了应用程序。有关更多信息,请参见性能调整概述。
请参见
测试