月薪过万的软件测试攻略(十二):测试用例基础(1)
一、测试用例的基本概念
-
概念 :
测试用例是由测试人员在测试执行之前编写的指导测试过程的重要文档,主要包括:用例编号、测试目的、用例描述、预期结果。 -
编写测试用例需要参考:
(1)相关文档(需求文档、用户手册、开发文档)
(2)参考已经开发出来的软件
(3)讨论(开发、需求、用户) -
设计测试用例的方法
(1)等价类划分法
(2)边界值法
(3)因果图法
(4)判定表法
(5)正交排列法
(6)场景法
(7)测试大纲法
(8)状态转换图法
在目前实际应用中,使用较多的是等价类划分法、边界值法、场景法三种方法。
二、等价类划分法
- 应用场合:
只要有数据输入的地方,就可以采用等价类划分方法。按照需求,把无穷多的数据进行分类,从中挑选出代表性数据进行测试。
2.测试思想:
穷举测试是最全面的测试,但是时间成本太高,在实际中不能采用,等价类划分法就是在保证测试质量的同时,使用最小的成本达到最大的覆盖。不做穷举测试(或者说遗漏一些测试数据),是存在风险的,所以如果时间允许的话,可以适当的补充。
- 核心概念
(1)有效等价类:对程序规格有意义、合理的输入数据集合。
- 程序接收到有效等价类数据,应该正确计算、执行————验证软件功能是否实现
(2)无效等价类:对程序规格无意义、不合理的输入数据集合。
- 程序接收到无效等价类数据,应该给出错误提示或者根本不允许输入————验证软件的异常处理能力(健壮性)
4.如何划分
首先要明确测试对象——“第一个数”文本框。
说明:
在测试第一个数的时候,要保证第二个数为正确的。
例:输入-99到99之间的整数
(1)根据需求,划分等价类
- 有效等价类:
-99—99 的整数 - 无效等价类:
A、<-99的整数
B、>99的整数
(2)细化等价类
依据的一般不是显式的需求,而是根据数据在内存中的存储方式或数据类型等。
整数在计算机中采用补码方式存储,正数和负数的补码方式不同,所以有必要把其分开测试。
- 有效等价类:
A、-99—0 的整数
B、0—99的整数 - 无效等价类:
A、小数
B、字符
C、汉字
D、符号
E、<-99的整数
F、>99的整数
(3)建立等价类表(熟练后,直接做这步)
image.png
(4)编写用例
从每个等价类中至少挑选一个代表数据进行测试即可。
- 提示
一般来讲,有效等价类较少,并且通常可以以从需求字面中得到。 无效等价类较多(一般为有效等价类的2-5倍),并且找起来较为困难。这个规律满足程序代码原理,一个功能实现的代码要比异常处理的代码要少。
三、边界值法
- 应用场合:
只要有数据输入的地方,一般可以使用。边界值法和等价类划分法往往一起使用,共同形成一套较为完善的测试方案。
2.测试思想:
找到有效数据和无效数据的分界点(最小值和最大值),对分界点及其两边的点(次边界值)单独进行测试。边界值数据本质上属于等价类范畴,但是需要单独测试,这是一种冗余,但在工程中是必要的。
- 如何划分
例如,输入6-16位的英文
有效数据和无效数据的分界点就是6位(最小值)和16位(最大值),次边界值就是6左右两边的5位和7位,16左右两边的15位和17位。
四、场景法
- 应用场合
(1)在一个界面中,没有太多填写项(甚至没有),所有操作都是通过鼠标的单击、双击、拖拽等完成——适合采用场景法的界面特点
(2)软件的业务逻辑具有有一定的复制性或者具有较强的行业特征,测试人员把自己当成最终的用户,尽量模拟出用户所有重要的操作,可以分成两大类:
A、模拟用户正确的操作——验证软件的业务逻辑、主要功能是否实现(正常流)
B、模拟用户错误的操作——验证软件的异常处理能力(异常流)
2.测试思路:
场景法主要基于两个层面:
(1)业务(需求)层面:要求测试人员精通所有测试软件的业务逻辑、主要功能——成为行业专家
(2)技术层面场景法基于等价类划分,模拟用户正确的操作——有效等价类;模拟用户错误的操作——无效等价类
3.如何划分
(1)基本流(正确流、有效流)——模拟用户正确的操作流程
(2)备选流(错误流、无效流)——模拟用户错误的操作流程
五、实例
目前阶段书写测试用例是结合以上三种方法组成。
比如一个测试注册页面接口测试:
对用户名框的要求是“4到16位(中文,字母,数字,下划线,减号)”
image.png
据此分类来书写测试用例。
正常流:就是全字段都按要求输入有效类
异常流:就是用户名框依次录入无效类,其它框需要保持正确。
六、根据测试思路分析需求
七、软件生命周期
软件生命周期,是软件的产生直到报废或停止使用的生命周期。
image.png- 问题定义。要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认。
- 可行性研究。一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进行可行性分析。
- 需求分析。弄清用户对软件系统的全部需求,编写需求规格说明书(PRD)和初步的用户手册,提交评审。
- 开发阶段。由架构师进行系统详细设计,出具系统详细设计说明书(LLD),接着进行系统概要设计,出具系统概要设计说明书(HLD)。再由开发人员根据LLD、HLD敲代码。
- 测试阶段。对写好的代码进行测试,分为单元测试(UT测试)、集成测试(IT测试)、系统测试(ST测试)、验收测试(UAT测试)。
- 单元测试(UT测试):对开发人员写的一个方法进行测试。
- 集成测试(IT测试):对几个方法或者一个模块进行测试。
- 系统测试(ST测试):对整个系统进行测试。
- 验收测试(UAT测试):如果自己就职甲方公司,就自己的测试员来进行验收,如果是外包,就由客户方来验收。
- 维护阶段。当项目上线后,就要对其进行维护。