如何做好测试用例的设计
蔡:如何做好测试用例的设计呢?
郑:测试用例设计是每个测试从业人员最主要的测试活动之一。为了做好测试用例的设计,我们必须考虑下面几个因素。
明确参考输入
第一,做好测试用例设计,需要首先明确它有哪些参考输入。以我为例,我是做系统测试的,因此测试对象的需求规格说明是最主要的测试设计参考。但是实际面临的问题是需求常常不完善,因此纯粹依赖于需求规格说明肯定是不全面的。根据我的经验,下面的这些输入也应该经常考虑:用户需求、开发文档、标准与规范、测试经验知识库等。
测试经验知识库是测试人员以前做类似项目的测试经验、收集与分析的缺陷类型分类等,都是开展测试用例设计的基础。例如,我们的测试用例模板中的测试类型定义,除了参考 ISO 9126 质量模型,其中的重要输入就是以前项目的测试经验和缺陷分类分析。
旁观者说:有多少公司收集和存储了项目的历史数据?又是否做了分析和利用?
关注功能之间的交互
第二,做好测试用例设计,除了考虑被测对象功能之外,也需要关注被测功能与其他功能模块之间的交互。由于每个测试人员负责各自的功能模块,往往会导致整个测试对象不同功能模块之间的接口、相互作用和耦合等分析不够充分,而这些是影响测试对象质量的重要因素。例如,在我们当前的项目中,通用的交互测试点有主备倒换、内存使用、内存泄漏、CPU使用、数据备份/恢复、版本升级、系统重启等。
旁观者说:相对于开发人员来说,功能交互是测试人员的优势,我们要在这方面好好发挥。
采用合适的设计技术与方法
第三,有了测试用例设计的输入与交互分析之后,采用合适的测试用例设计技术与方法,有助于做好测试用例的分析。根据《软件测试设计》中提出的“问题驱动的软件测试设计”观点,可以从下面四个方面考虑进行测试设计,以解决测试设计中面临的问题。
1.挑战 1:被测对象的逻辑组合和输入数据的组合是非常庞大的,而穷尽测试是不可能的。经典测试设计中的一些技术与方法,在保证测试覆盖率与质量的情况下,对减少测试用例的数目是非常有效的。例如,在项目测试中引入了“组合测试”技术。
2.挑战 2:软件产品的不同利益相关者对产品的质量要求是不一样的,如何满足他们各自的质量要求?基于质量特性的测试设计有助于我们选择合适的质量特性。测试设计中要求 100%的测试类型覆盖率,可以更好地满足不同利益相关者对质量的不同要求。
3.挑战 3:测试时间与资源总是非常有限的,如何平衡测试时间、成本与质量之间的关系是每个测试人员都需要考虑的。基于风险的测试设计可以帮助我们有效地解决这个问题。例如,先给模块确定测试优先级,然后分析每个模块存在的主要风险,并按照不同风险级别开展测试设计活动,以尽快尽早发现严重程度高的缺陷。
4.挑战 4:测试人员面对的需求经常是不完善的、经常变更的。除了前面提到的完善测试用例设计的参考输入之外,基于经验的测试设计也可以帮助测试人员在这种情况下做得更好。例如,根据以前发现的缺陷和用户现场反馈的缺陷,进行缺陷分类分析和评估。另一个策略是更多地采用探索性测试,更好地发挥测试人员的主观能动性与分析能力。
做好评审
第四,在测试用例设计过程中,发挥团队的力量分析和评审测试点,其得到的效率和有效性会更好。例如,通过在测试分析与设计过程中应用思维导图工具,帮助我们拓宽测试思路,增加测试条目。测试团队的放射性思维可以很好地帮助我们提升测试用例设计的效率和有效性。
测试用例的颗粒度没有严格的标准,我的观点是只要它们满足测试目的,符合产品特点、开发特点和测试过程等要求,有助于我们更好地发现缺陷和开展测试活动,测试用例的颗粒度就是合适的。