在明确了测试需求之后,就开始针对测试项进行测试设计,即找到相应的测试方法,找到测试的入口,分解测试项,以及针对具体的测试点设计测试环境、输入数据、操作步骤,并给出期望的结果。不是每个测试人员都能胜任测试用例的设计工作,一般要求具有较高能力的测试人员来完成,资深测试人员往往更合适测试用例的设计工作。测试设计,需要设计人员透彻地理解产品的特性、系统架构、功能规格说明书、用户场景以及具体的实现技术等。
测试设计是测试过程中关键的工作,是测试执行的基础。当我们面对一个项目或一个测试任务时,从用户需求出发,基于业务背景,理解产品特性及其每一个功能点,分析其不同的操作剖面、应用场景,挖掘或整理出其质量需求,确定测试范围,识别出测试项,并定义其优先级,完成测试需求的工作。通过测试集,将服务于同一个测试目标、特定阶段性测试目标或某一运行环境下的一系列测试用例有机地组合起来,有助于使用测试,提高测试的复用性。
测试设计解决“如何测”的问题。要采取正确、恰当的方法进行用例设计,包括借助业务流程图、数据流图、UML图和后面几章要学习的设计方法等,根据软件功能、系统结构、数据、质量属性等逐步展开,设计出有效、覆盖面全的用例。在测试用例设计中,不仅要设计哪些软件正常使用或正面的测试用例,还要设计异常情况的或负面的测试用例,构建合理的、层次清楚的测试框架。
不同的测试类型(功能测试、性能测试、安全性测试等),其测试设计技术是不一样的;不同的级别(单元测试、集成测试、系统测试等),具体的设计方法和技术也不一样。软件测试设计,不仅要根据需求文档、功能设计规格说明考虑功能特性、测试需求,而且要综合考虑被测软件的质量目标、系统结果、输入/输出等决定设计思路、设计方法等。不同的应用、不同的测试方法或不同的阶段,测试设计方法是不一样的。相应的设计方法将在以后的章节中进行详细介绍。测试设计会受到一系列因素的影响,例如采用的技术和平台、项目进度、可用资源、用户沟通渠道等。在设计过程中,综合考虑这些因素,可参考设计流程,会达到良好的效果。
①采用测试用例的模板,参考已有的范例。
②要求先设计工作流程图、数据流图。
③要求测试人员相互审查、提问。
④集体审查测试用例,邀请客户、产品设计人员、开发人员等参加。
一个软件项目的最终质量,与测试执行的程度与力度是密不可分的。测试用例构成了设计和制订测试过程的基础,因此测试用例的质量在一定程度上决定了测试工作的有效程度。测试用例是为某个测试目标而编制的一组包含测试输入(数据以及步骤)、执行条件及预期结果的测试实例,以便测试某个程序是否满足某个特定需求。其本质是从测试的角度对被测对象各种特性的细节展开。通俗地讲,就是把测试的操作步骤和要求按照一定的格式用文字描述出来。测试用例的 3 个主要内容:输入包括输入数据以及操作步骤;执行条件指测试用例执行的特定环境和前提条件;预期结果(输出)是在指定的输入和执行条件下的预期结果。
假如某应用软件:Windows系统环境运行、单机版,测试该应用软件的安装项,应该怎么设计测试内容?测试设计部分内容举例,见表 3.1。
表 3.1 设计测试内容举例
续表
按照测试设计说明的描述,对每一个测试项进行具体的测试用例设计。测试用例对每一个测试描述了输入、如何操作及预期的结果。测试用例的规模根据所要测试的软件项目的规模和复杂度来制定。测试设计用例可以参考以下要素:
①用例的编号:由测试引用的唯一标识符。定义测试用例编号,便于查找测试用例,便于测试用例的管理和跟踪。
②测试标题:对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。
③测试项:准确、具体地描述所测试项及详细特征,应该比测试设计说明中所列的特性更加具体。
④测试环境要求:该测试用例执行所需的外部条件,包括软、硬件具体指标以及测试工具等。
⑤特殊要求:对环境的特殊需求,如所需的特殊设备、特殊设置(例如对防火墙设置有特殊要求)等。
⑥测试技术:对测试所采用的测试技术和方法的描述和说明。
⑦测试输入说明:提供测试执行中的各种输入条件。
⑧操作步骤:提供测试执行过程的步骤。
⑨预期结果:提供测试执行的预期结果,预期结果应该根据软件需求中的输出得到。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。
●测试用例之间的关联:用来标识该测试用例与其他测试用例之间的依赖关系。
●测试用例设计人员和测试人员,测试日期。
在设计测试用例时,还需遵循一些基本原则。用成熟测试用例设计方法来指导设计;保证测试用例数据的正确性和操作的正确性;测试用例能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的数据以及极限的输入数据、操作和环境设置等;测试执行结果的正确性是可判定的;对同样的测试用例,系统的执行结果应当是相同的;足够详细、准确和清晰的用例测试步骤。
以上可以看出测试设计用例就是一个文档,描述输入、动作、时间或者一个期望的结果,其目的是确定应用程序的某个特性是否正常工作,并且达到程序所设计的结果。如果执行测试用例,软件在这种情况下不能正常运行,而且问题会重复发生,那就表示已经测试出软件有缺陷,这时候就必须将软件缺陷标示出来,通知软件开发人员。软件开发人员接到通知后,在修正了问题之后,又返回给测试人员进行确认,确保该问题已修改完成。
对于一个测试人员来说,测试用例的设计编写是一项必须掌握的能力。但有效设计和熟练编写测试用例却是一项十分复杂的技术,测试用例编写者不仅要掌握软件测试的技术和流程,而且还要对整个软件(不管从业务上,还是对被测软件的设计、功能规格说明、用户试用场景以及程序/模块的结构方面)都有比较透彻的理解和明晰的把握,稍有不慎就会顾此失彼,造成疏漏。因此,在实际测试过程中,通常安排经验丰富的测试人员进行测试用例设计,没有经验的测试人员可以从执行测试用例开始,随着项目进度的不断进展,以及对测试技术和对被测软件的不断熟悉,可以不断积累测试用例的设计经验,然后逐渐参加设计测试用例。