blog/docs/auto/func/case-design.md

317 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 常用测试用例设计方法
date: 2020-06-18 19:29:48
tags: [测试用例]
categories: [功能测试]
author: Anges黎梦
---
八大方法及综合策略
## 一、等价类法
### 概述:
根据程序对数据的要求,把程序的输入域划分成若干个部分
区分出哪些数据是有效的,哪些数据是无效的,(有效等价类与无效等价类)
从每个部分中选取少数代表性数据作为测试用例
### 步骤:
划分等价类
细化等价类 (对等价类进行编号)
建立等价类表
编写测试用例
### 要点:
被选为测试用例的数据在测试中的作用等价于这一类中的其他值
如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
如果等价类中的一个测试不能捕获缺陷,那么选择该类中的其他测试也不会捕获到缺陷
## 二、边界值法
### 概述:
找到测试数据的边界点,也就是有效等价类和无效等价类的边界点
对边界点数据专门进行测试
### 步骤:
找到测试数据的边界点, 分析出上点、离点、内点
根据上点、离点、内点写出测试用例
### 要点:
如果输入条件规定了值的范围,则应取边界点数据,以及边界点两边的数据进行测试
如果输入条件规定了值的个数,则用最大个数及其两边的点、最小个数及其两边的点作为测试数据
根据规格说明的每个输出条件,使用前面的原则
根据规格说明的每个输出条件,应用前面的原则
如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
## 三、因果图法
### 概述:
在一个模块或一个界面中,有多个控件,这些控件存在约束关系或组合关系,且输出依赖于输入条件,则可以使用因果图法
### 步骤:
找出所有的输入条件
找出所有的输出条件
明确所有输入条件之间的制约关系以及组合关系
明确所有输出条件之间的制约关系以及组合关系
找出怎么样的输入条件组合会产生那种输出结果
根据因果图写出判定表
根据判定表写出测试用例
### 要点:
恒等、或V、与、非~、互斥E、包含I、唯一O、要求R、屏蔽M
因果图法主要考虑控件之间条件的组合关系
每个控件的条件不宜过多,最好为2个
控件较多,或每个控件的条件过多,不宜用因果图法
## 四、判定表法
### 概述:
判断表主要侧重输入条件之间的逻辑关系(画因果图只是一个辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例)
### 步骤:
找出所有的输入条件
找出所有的输出条件
明确所有输入条件之间的制约关系以及组合关系
明确所有输出条件之间的制约关系以及组合关系
找出怎么样的输入条件组合会产生那种输出结果
根据因果图写出判定表
根据判定表写出测试用例
### 要点:
判定表的组成:
适合使用判定表设计测试用例的条件:
规格说明以判定表的形式给出,或很容易转换成判定表
条件的排列顺序不影响执行哪些操作
规则的排列顺序不影响执行哪些操作
当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
## 五、正交法
### 概述:
能够使用最小的测试过程集合获得最大的测试覆盖率
### 步骤:
根据所测程序中控件的个数以及每个控件的取值个数,选取一个合适的正交排列表
把控件以及取值列出来,并对取值进行编号
把控件以及取值映射到正交排列表中
根据映射好的正交排列表编写测试用例
### 要点:
#### 一、 n阶拉丁方
用n个不同的拉丁字母排成一个n阶方阵, 每个字母在任一行、任一列中只出现一次
#### 二、 正交拉丁方:
设有两个n阶的拉丁方如果将它们叠合在一起恰好出n2个不同的有序数对
#### 三、 正交表是一种特制的表,记为:
m是每个控件包含的取值个数
K表示控件的个数
n是表的行数, n=k*(m-1)+1
n=k1*(m1-1)+k2*(m2-1)+…kx*(mx-1)+1
L为正交表的代号
Ln(m1^k1 m2^k2...mx^kx)
正交排列法的局限性:
基本都要求每个控件中取值的个数要相等,这在实际软件中很少遇到
正交表的性质:
每一列中,不同的数字出现的次数相等
任意两列中数字的排列方式齐全而且均衡
即:
正交表的两大优越性,“均匀分散性,整齐可比性”
通俗的说,每个因素的每个水平与另一个因素各水平各碰一次,这就是正交性
种类:
各列水平数均相同的正交表
混合水平正交表
L84*24——一个控件有4个属性4个控件有2个属性
## 六.场景法
### 概述:
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程
在冒烟测试时也主要采用场景法进行测试
### 步骤:
根据说明,描述出程序的基本流及各项备选流
根据基本流和各项备选流生成不同的场景
对每一个场景生成相应的测试用例
### 要点:
#### 一、 基本流:
按照正确的业务流程来实现的一条操作路径(模拟正确的操作流程)
#### 二、 备选流
导致程序出现错误的操作流程(模拟错误的操作流程)
## 七.大纲法
### 概述:
在一个程序或程序的某个模块中,涉及到多个窗口,每个窗口中能够完成多个动作
这些窗口又相互联系, 为了弄清窗口和窗口之间的关系,或者说动 作和动作之间的关系,可以使用测试大纲方法
### 步骤:
找出所有的窗口以及每个窗口的输入动作
找到各个窗口之间的联系,并据此编写测试用例
### 要点 (综合策略)
为了测试程序的业务逻辑、业务流程、主要功能的正确性,错误处理能力,使用场景法设计测试用例
需要输入数据的地方,进行等价类划分,包括输入条件和输出条件的等价划分
使用边界值分析方法补充用例
可以用错误推测法追加一些测试用例
对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准或发现还有遗漏,应该再补充足够的测试用例
如果程序的功能说明中含有输入条件和输出条件的组合情况, 则一开始就可选用因果图法或判定表方法
对于参数配置类的软件,要考虑各个参数之间的组合情况,使用正交排列法
为了更真实模拟用户的操作流程、顺序,可以使用状态转换图方法设计测试用例
如果程序的模块有多个窗口,并有相关联的操作,可以使用测试大纲方法设计测试用例
## 八、状态转换图法
### 概念:
找出软件所有的状态以及导致这些状态发生变化的所有输入动作
进而用图形的方法把相关联的输入动作和状态联系在一起,真实模拟用户的操作顺序流程
### 步骤:
找出程序的所有输入动作,并进行编号
找出程序的所有状态
找出什么动作会导致什么状态发生,画出状态转换图
把相关联的动作和状态联系起来,设计测试用例
### 要点:
两个重要的概念:(核心)
软件的状态
输入的动作
状态转换图法小结:
每种状态至少访问一次 【无论用什么方法,每一种状态都必须测试】
测试看起来最常见最普遍的状态转换 【根据产品说明书,通过与客户、开发人员沟通,了解哪些操作更常用、更重要】
测试状态之间最不常用的分支 【这些分支是最容易被产品设计者和程序员忽视的】
测试所有错误状态及其返回值 【错误没有得到正确处理、错误提示信息不正确等情况是常有的】
## 九、综合策略
为了测试软件的业务流程,业务逻辑,基本功能的正确性,错误处理能力,采用场景法编写用例
需要输入数据的地方,进行等价类划分,包括输入条件和输出条件的等价划分
使用边界值分析方法补充测试用例
可以用错误分析法追加测试用例
对照程序的逻辑,检查测试用例的逻辑覆盖程度,如果没有达到覆盖标准或发现有遗漏,则要补齐用例
如果软件的功能说明里有输入条件和输出条件的组合情况,一开始就考虑用因果图和判定表方法
对于有参数配置的软件,要考虑各个参数的组合情况,则可以用正交排列表法来设计测试用例
为了模拟用户的操作流程,顺序,则可以用状态转换图法设计测试用例
如果一个软件或一个界面里有多个窗口,每个窗口可以完成多步动作,且每个窗口之间存在联系,可以采用大纲法来设计用例