1 等价类划分法
解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,以此发现更多的软件缺陷。
等价类划分法即把所有可能输入的数据划分为若干个区域,然后从每个区域中取少数有代表性的数据进行测试即可。
有效等价类: 满足需求的数据 无效等价类: 不满足需求的数据
需求: 等价类划分: 测试点:
2 边界值法
边界值法通常被视为对等价类划分法的一种补充。测试经验告诉我们,程序在处理边界数据的时候较容易出错,所以要取稍高于或稍低于边界的一些数据进行测试。
上点: 边界上的点(正好等于) 离点: 距离上点最近的点 内点:范围内的点
举个🌰: 对于开区间(2,9):上点:2,9;离点:3,8; 对于闭区间[2,9]:上点:2,9;离点:1,10;
使用步骤: 分析需求??进行等价类划分,明确有效等价类和无效等价类??划分边界值??编写测试用例
输入条件规定了值的范围: 取刚到到这个范围的边界值,以及刚刚超越这个范围边界的值作为输入数据。(如:两位整数加法器数的范围为-99—99,则应测试-99,-100和99,100)
输入条件规定了值的个数: 如: 要求1-6个字符,需要测试0、1、2个字符和5、6、7个字符 每页最多显示10条数据,就应该准备数据,使能够查询出9、10条、11条、1条、0条数据
界值分析不是从某等价类中随便挑一个作为代表,而是这个等价类的每个边界都要作为测试条件
常见边界值: 文本框接收字符个数 报表的第1行和最后1行 数值元素的第1个和最后1个 循环的第1次、2次和倒数第1次、2次
3 判定表法
判定表法表示的是有多个输入和多个输出,而且输入和输出有相互组合依赖的关系。
判定表的组成部分: 条件桩:问题的所有条件(系统所有的输入) 动作桩:问题的所有输出(系统可能采取的操作) 条件项:针对条件桩的取值(在所有可能条件下的真假值) 动作项:条件项的各种取值情况下的输出结果(在输入项的各种取值情况下应采取的动作)
使用步骤: ?? 列出所有的条件桩和动作桩 ?? 填入条件项 ?? 填入动作项。得到初始判定表 ?? 简化判定表(合并相似规则或相同动作)
4 因果图法
因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。 因果图法要考虑输入条件的相互制约及组合关系,以及输出条件对输入条件的依赖关系。
因果图的“因”——输入条件 因果图的“果”——输出结果
因果图中的基本符号: 通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。
- 恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现
- 非(~):若原因出现,则结果不出现;若原因不出现,则结果出现
- 或(V): 若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现
- 与(V) :若几个原因都出现,则结果才出现;若其中一个原因不出现,则结果不出现
因果图中的约束条件:
- 互斥:最多有一个可能成立
- 包含:至少有一个必须成立
- 屏蔽:a成立时b不成立;a不成立时,b的值不一定
- 唯一:三个原因中有且只有一个成立
- 要求:一个出现另一个一定出现
使用步骤: ??找出所有原因(即输入条件或输入条件的等价类) ?? 找出所有结果(即输出结果) ?? 明确所有输入条件之间的制约关系以及组合关系(哪些条件不能组合到一起,哪些条件可以组合到一起) ?? 明确所有输出条件之间的制约关系以及组合关系(哪些输出结果不能同时输出,哪些输出结果可以同时输出) ?? 找出什么样的输入条件组合会产生哪种输出结果 ?? 把因果图转换成判定表 ?? 编写测试用例
举个🌰: 一卡通自动充值 需求: 系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能为50元或100元。 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功; 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元; 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元; 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功; 若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误; 若选择充值按钮后不输入纸币,提示错误 step1: 找到所有输入条件并编号 ① 输入50元 ② 输入100元 ③ 选择充值50元 ④ 选择充值100元
step2: 找到所有输出并编号 a 完成充值、退卡 b 提示充值成功 c 找零 d 提示错误
step3: 找到所有输入、输出的制约关系 输入:
- 条件1和条件2不能组合
- 条件3和条件4不能组合
- 条件1和条件3可以组合
- 条件1和条件4可以组合
- 条件2和条件3可以组合
- 条件2和条件4可以组合
- 条件1234可以单独出现
输出:
- 输出a和d不能组合
- 输出b和d不能组合
- 输出a和b必须组合
- 输出a、b、c组合
- 输出c、d可以组合
- 输出d单独存在
step4: 找出什么样的输入条件组合会产生哪种输出结果
step5: 把因果图转换成判定表
5 正交排列法
正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法。
正交表: 一种特制的表,一般的正交表记为:Ln(m^k)
- n:表的行数(需要测试组合的次数)
- K:表的列数(控件的个数(因素的个数,或因子个数))
- m:每个控件包含的取值个数(各因素的水平数,即各因素的状态数)
举个🌰: 字体:仿宋、楷体、华文彩云 字符样式:粗体、斜体、下划线 颜色:红色、绿色、蓝色 字号:20号、30号、40号 ?? 根据所测程序中控件的个数(因素)以及每个控件的取值个数(水平),选择L9(3^4)正交排列表 ?? 把控件及其取值列举出来映射到正交排列表中 ?? 根据映射好的正交排列表编写测试用例
很多情况下无法找到合适的正交表,就要使用正交表生成工具allpairs 使用步骤: ?? 在文本文档制作取值表(只列出数据即可,不用编号)并保存(不要更改任何格式,例如文件叫Test.txt ) ?? 把 Test.txt 放在allpairs文件夹中 ?? 打开终端,使用cd命令进入allpairs文件夹 ?? 在终端 输入allpairs.exe Test.txt>文件名.txt
6 场景法
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。
当拿到一个测试任务时,需要先要关注它的主要功能和业务流程是否正确实现,这时需要场景法来完成测试。当业务流程测试没有问题(该软件的主要功能没有问题)时,我们再重点从边界值、等价类等方面对控件进行测试。 在冒烟测试时也主要采用场景法进行测试。
业务流程测试: (1)作用:
- 功能的组合,业务流程的实现是客户价值的真正体现
- 测试团队内部分工,容易忽略多功能组合情况的测试
(2)关注点:
- 关注多功能组合使用, 整个流程能走通
- 不关注单个功能中的具体需求细节
(3)执行时机:
- 功能基本可用后
- 软件上线前,再次进行业务流程的回归测试
举个🌰: QQ登陆
- 输入正确的账号和密码后点击“登录”按钮,程序能正常登录
- 输入正确的账号,错误的密码后点击“登录”按钮,程序应给出错误提示
- 输入正确的账号,不输入密码,点击“登录”按钮,程序应给出错误提示
- …
7 流程分析法
流程分析法主要是针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,是从白盒测试设计方法中的路径覆盖分析法借鉴过来的一种方法。
流程分析法适用于有先后顺序的测试。常用于业务流程测试、安装流程测试等。
什么是流程图? 流程图是对过程、算法、流程的一种图像表示, 在技术设计、 交流及商业简报等领域有广泛的应用。通常用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。有时候也被称之为输入-输出图。 流程图的常用符号: 使用步骤: 明确需求 ?? 画出流程图 ?? 编写用例(从流程图开始到结束,有几条路径就是几个用例)
8 错误推测法
测试人员凭借自己的直觉、测试经验、发散思维去设计一些容易导致软件出错的测试点,也可看作是对等价类划分法和边界值分析法的一个补充。
在一般情况下,程序在处理空格、空的、边界值、超长字符串、全角字符串、0以及单引号等情况下较容易出错。
9 状态迁移法
通过状态迁移法找到所有被测对象的所有状态,和状态的转化过程,以此编写测试用例。 状态迁移法不关注具体模块的具体功能,关注状态转化过程流程是否正确。
图: 用线把点连接起来,图是闭环的 树: 没有闭环的图
- 根节点: 位于树根部的节点,一个树只有一个根节点
- 叶子节点:处于树最末端的节点,叶子节点是树的尽头
- 分支节点:位于分支上的节点
使用步骤: ?? 分析需求,找到所有状态 ?? 绘制状态迁移图 ?? 根据图绘制状态迁移树 ?? 根据树编制测试用例(从根结点到叶子节点就是一条路径,一条路径就是一条测试用例,有多少叶子节点就有多少条用例)
10 测试方法的选择
(1)拿到一个测试任务时,先关注它的主要功能和业务流程、业务逻辑是否正确实现,考虑使用场景法。
(2)需要输入数据的地方,考虑采用等价类划分法。
(3)在任何情况下都必须采用边界值分析法。这种方法设计出的测试用例发现程序错误的能力最强。
(4)如果程序的功能说明中含有输入条件的组合情况,则一开始就应考虑选用因果图和判定表法。
(5)对于参数配置类的软件,需要考虑参数之间的组合情况,考虑使用正交排列法选择较少的组合方式(最少的测试用例获得最大的的测试覆盖率)。
(6)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,则应当再补充更多的测试用例。
(7)采用错误推断法再追加测试用例。
|