测试用例分析与设计是整个软件测试过程中非常重要的测试活动,测试对象的规格说明是测试人员开展测试分析与设计的主要参考输入。而在测试实践中基于测试对象规格说明得到的测试用例,在测试覆盖率、测试效率、测试有效性和测试质量等方面的表现却是差强人意。 “问题驱动的软件测试设计”解决方案的提出,希望为测试人员提供一个系统化专业化的测试分析与设计思维过程,帮助测试人员提升测试分析与设计能力,强化测试用例设计技能。本文将从下面3个方面阐述“问题驱动的软件测试设计”解决方案: ·测试分析与设计面临的主要挑战 ·问题驱动的软件测试设计的架构 ·问题驱动的软件测试设计的过程 1.测试分析与设计面临的主要挑战 测试分析与设计实践过程中,测试人员常常会发现测试覆盖率、测试效率、测试有效性和测试质量等方面不尽人意,为什么? 测试分析与设计是一个需要不断倾注测试人员学习与思考的脑力活动。如何在合适的时候向你的测试对象选择合适的问题进行提问,不仅需要测试人员深入了解测试对象,同时需要了解和应用各种测试分析与设计的技术与方法。而在这过程中,测试人员在测试分析与设计过程中还面临4大主要挑战: a)测试对象的各种输入组合和运行环境的组合是无穷的,而穷尽测试是不可能的。测试人员面临的挑战是如何在几乎无穷的测试组合中选择合适的组合,同时保证测试的覆盖率和发现重要的缺陷; b)如何更好的满足利益相关者对产品质量的要求。产品质量本身是带有主观性质的,产品的不同使用者,其对产品质量的要求是不同的。如何站在不同利益相关者的立场,更好的考虑和覆盖他们的不同的质量要求,是测试人员面临的第2个挑战; c)作为测试分析与设计的测试对象规格说明,经常是不完善的、遗漏的、矛盾的、变更的,甚至没有规格说明可供参考。在这种情况下,测试人员应该如何更好的开展测试工作?这是测试人员面临的第3个挑战; d)测试时间和测试资源总是非常有限的,而测试人员面对的测试组合几乎是无穷的。而且,在开发和测试之间发生时间和资源冲突的时候,测试往往处于被压缩的不利境况;如何在有限的时间和资源下,更好的完成测试任务,是测试人员面临的第4个挑战; 2.问题驱动的软件测试设计的架构 “问题驱动的软件测试设计”解决方案的提出,希望从上述的4个问题入手,帮助测试人员从测试分析与设计的角度,不断的改进由于这些问题而导致的测试困境。针对上述涉及的4大主要挑战,“问题驱动的软件测试设计”提出了4个不同的测试分析与设计维度,有针对性的改进这些问题带来的不良影响: a)基于规格说明的测试设计的主要目的: 有效减少测试用例的数目 避免测试用例之间的冗余 减少测试用例数目与覆盖率之间的平衡 b)基于质量特性的测试设计的主要目的: 获取利益相关者的不同质量要求 识别测试用例以满足不同质量要求 构建适合自己的质量特性列表 c)基于经验的测试设计的主要目的: 识别更多的隐现和显现的测试需求 基于缺陷和经验设计测试用例 应对需求的不断变更 d)基于风险的测试设计的主要目的: 有效选择测试重点 测试过程中的动态调整 测试过程中的快速响应 “问题驱动的软件测试设计”所涉及的4个维度测试分析与设计思维过程,并不是独立的,它们之间是综合应用的过程。
3.问题驱动的软件测试设计的过程 测试分析与设计是一个系统化的过程,它有不同的阶段和活动所组成。“问题驱动的软件测试设计”过程主要有下面的阶段和活动组成: a)熟悉测试对象 识别测试输入文档 学习测试对象/评审测试对象 b)构建测试模型 确认测试模型与颗粒度要求 基于参数、状态、逻辑、组合等构建模型 基于质量特性列表构建模型 基于用户场景和功能交互等构建模型 基于质量风险列表构建模型 c)识别测试用例 确定测试颗粒度 确定测试覆盖率 确定测试用例步骤 d)选择测试数据 识别输入参数 识别参数的可能取值 确定参数的可能组合 确定参数的实际取值