测试用例是测试过程中重要的测试工作产品,其质量的高低将直接影响其他相关的测试活动。高效的测试分析与设计过程有助于提升测试用例的质量。而实践过程中,测试分析与设计的过程存在诸多的问题,例如:随意选择功能的业务流、随意选择测试数据、随意选择测试组合等。 “问题驱动的软件测试设计”将构建一个系统化且可操作的测试分析与设计过程,将测试分析与设计分解成不同的阶段和测试活动,以帮助测试人员更好的针对测试对象分析与设计测试用例。 “问题驱动的软件测试设计”的过程定义如下:测试用例分析与设计是根据测试对象信息不断构建模型的过程。通过建立模型,从测试角度了解测试对象、描述测试对象、分析测试对象,并终得到验证该模型的测试用例的过程!其过程由熟悉测试对象、构建测试模型、识别测试用例和选择测试数据4阶段组成,如图1所示。
1)熟悉测试对象 第1阶段:熟悉测试对象。测试人员需要理解测试对象是如何工作的,例如:通过该软件产品可以帮助用户达到什么目标,它能做什么,是如何实现的。理解测试对象的工作原理,是开展一切测试工作的基础。测试人员在测试分析与设计阶段需要考虑的活动有: 首先,测试人员明确针对测试对象(可以是某个功能或者特性),进行测试 分析与设计需要参考的文档有哪些。收集测试分析与设计的参考输入文档是熟悉测试对象的第一步。图2是进行测试分析与设计可能参考的软件工作产品。
其次,针对这些测试分析与设计的参考文档,测试人员如何快速的熟悉测试对象。测试人员在开始实际的测试分析与设计之前,需要从整体上了解要测试什么?主要的手段有:积极主动学习、参与技术评审与讨论,以及参加内部产品与功能培训等。 2)构建测试模型 第2阶段:构建测试模型。它是整个测试分析与设计过程中的难点,也是关键点。该阶段不完全与熟悉测试对象阶段是一个串行的关系,很多的时候可以在熟悉测试对象的时候同步构建测试模型。
表格、图标、流程等是常见的测试模型。通过构建测试模型可以更好的理解测试对象是如何工作的。“问题驱动的软件测试设计”将从以下几个层面进行模型的构建: ·基于测试数据、功能状态、逻辑条件和组合等构建模型; ·基于质量特性列表构建模型 ·基于用户场景和功能交互等构建模型 ·基于质量风险列表构建模型 构建测试模型是希望将测试对象的理解与分析简单化,例如:地球仪是一个很简单的模型,但是通过它我们可以很好的解释地球的自转、白天和黑夜的问题。构建测试模型中需要对测试对象进行工作结构分析WBS,同时需要考虑测试用例的颗粒度和覆盖率要求。 3)识别测试用例 第3阶段:识别测试用例。假如能够在构建测试模型阶段构建了合适的测试模型,识别测试用例这个阶段相对会比较容易。主要的活动有: ·根据测试的颗粒度要求,确定测试覆盖率判断依据; ·确定测试用例的具体步骤; 4)选择测试数据 第4阶段:选择测试数据。测试用例的每个步骤,都有可能涉及到测试数据的选择。因此测试人员需要识别每个步骤中可能的输入参数,然后确定: ·每个参数可能的取值,例如:通过等价类、边界值等方法确定; ·参数之间的可能组合。参数之间并不是独立的,因此如何选择可能的组合方式也是测试人员需要重点考虑的点。例如:两两组合的参数组合选择; ·确定每个参数的实际取值; “问题驱动的软件测试设计”的过程定义是一个不断迭代的过程,即它们是一个不断相互反馈和支持的过程。系统化规范化可操作性的过程有助于测试人员更好的进行测试分析与设计测试用例。