一、正确认识测试设计
测试设计是从特定的测试依据中得到用例,用于实现特定测试覆盖的方法。上面中的测试依据指的是有关测试的信息,比如项目背景、业务需求、领域知识、团队、进度、预算、风险等等,这些因素在经过测试分析后就是特定的测试依据,它们影响着测试设计与执行。测试设计是测试整个过程的总纲,通常是测试人员的测试思路的体现。在测试界中,有着测试设计是测试的灵魂,也是测试人员的必修课之说。
二、测试设计的原则及要考虑的因素
在测试过程中,测试人员不可能穷举所有的测试场景或组合,因此在设计测试用例时,要学会抓住测试的要点或关键点,做合理的取舍,这些要点或关键点需要进行充分分析与设计,以达到理想的覆盖率。测试设计主要考虑的因素如下。
测试设计的基本思路:
· 设定测试项包含哪些测试类型,比如功能测试、性能测试、安全性测试、可靠性测试、其他测试等。能清楚了解此次的测试类型是否有遗漏。
· 设定测试项的优先级,先设计高优先级测试项的测试用例,再设计低优先级测试项的测试用例。如果缺少风险分析意识或是风险分析能力不足,就先把所有测试项的测试用例写出来,然后再组织挑选测试用例的优先级。
· 测试用例在设计时,需要将具有相类似功能的测试项进行抽象并归类,不是简单的编写,更不是简单地复制文档的内容,设计测试用例是需要思考和优化的。
· 先设计主流程的、正向的测试用例,再设计逆向的、负面的(异常的、非法操作的)、扩展性的流程或功能的测试用例。
· 试图找出系统或组件的薄弱环节、边界点等,因为这些特殊区域存在更多的缺陷,需要得到更多的测试来降低测试的风险,达到所设定的测试目标。
以下根据上面思路,设计出的例子:
三、如何运用测试设计的方法
1、测试设计方法有很多,主要有以下几种:
2、不同阶段如何运用的测试设计方法
在需求、项目或是产品的测试过程中,在不同的测试阶段,存在不同的测试方法。以开发阶段划分,测试过程可以分为单元测试、集成测试、系统测试和验收测试。
· 单元测试
单元测试是对程序模块(自己开发模块或是自己系统)进行正确性的检验。如果单元测试目标是达到100%判定覆盖率,那测试设计方法就要采用判定逻辑的逻辑覆盖方法,通过分析和设计,达到测试目标。
· 集成测试
集成测试是在单元测试的基础上,将所有的程序(系统)进行整合的验证。程序的整合由接口完成。集成测试的目标是覆盖所有的接口功能及接口性能的验证,那测试方法就会存在功能性的、非性能的验证。
· 系统测试
系统测试是验证系统所有的功能、模拟所有软件用户的操作。如果系统功能测试目标是覆盖其各种应用场景,这时测试就要基于场景的设计方法,以求达到测试计划中定义的测试目标。
从上面的分类可以看到,逻辑覆盖、基本路径覆盖等属于白盒方法,一般应用于单元测试或代码层次上,但逻辑覆盖不局限于代码层也可以应用于业务层,这时就需要我们画出业务流程图,通过对业务流程图的分析,设计测试用例覆盖其判定或分支、基本路径,达到业务流程的覆盖,这样才能更好地支持业务的正常运行。所以说,没有任何单一的测试手段就能满足测试设计的需求,而是运用多种方法,才能满足测试需求。无论是单元测试、集成测试还是系统测试,都是有一定的应用场景和测试目标,或者应该说,在特定的场景下,需要选择更合适的方法。因此,在软件测试各个阶段中,没有最好的测试设计方法,只有最适合的设计方法。