测试理论与方法----测试流程第三个环节:设计测试用例

测试流程第三个环节:设计测试用例:怎么测<------>测试需求的提取:测什么

5、测试用例

  1. 描述:测试用例(TestCase):是一份关于【具体测试步骤】的文档,是为了达到最佳的测试效果或高效揭露软件中潜藏的bug,精心设计少量且具有代表性的测试场景和测试数据。

  2. 测试用例=测试场景=测试步骤+测试数据+预期结果

  3. 分析:测试用例就是设计一种情况,软件在该情况下是可以正常运行,且能够达到预期结果的。如果软件在该情况下不能正常运行,或未达到预期结果,就证明发现了bug,需要提交给开发进行确认和修复。修复完成后,再用同一条用例进行验证,确保已修复完成。

  4. 测试用例的编写

    测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注
    • 测试用例编号:给设计好的每一个测试用例生成唯一的序列号 0001-9999

      参考写法:TestCase_项目名称 _模块名称 _子模块名称 _功能名称 _测试类型 _0001

      注意:名称可以简写,比如汉语拼音的首字母;当换了新的功能或新的模块,编号要重新生成;

      测试类型:功能测试 Function,性能测试 Performance,界面测试 UI

    • 测试项/测试用例标题

      思路:关联本条测试用例设计的目的,一句话做概述,描述这一条用例是做什么的

      写法:具体的角度+验证功能

      ​ 例:测试需求:密码:6-18位------>设计用例:验证6位长度密码的注册操作

      ​ 密码:小于6位------>设计用例:验证5位长度密码的注册操作

      ​ 密码:大小写字母,数字----->设计用例:验证纯大写字母注册操作 验证纯小写字母注册操作 验证纯数字注册操作 验证字母+数字组合注册操作....

      参考话术:验证XXXX的操作 XXXX情况下的验证 XXXX操作的验证

    • 依赖用例:可选可写的

      概述:指的是当前用例的设计,需要用到其它用例的支持,就把关联的用例编号写到该位置

      例:针对信贷系统后台:用户管理模块设计用例------>依赖于前台成功注册用户用例

    • 测试步骤:最核心的部分

      概述:根据测试项,整理出详细的操作步骤(测试过程),简单清晰明了

      ​ 例:验证直角三角形判定

      ​ 测试步骤:

      ​ ①输入第一条边:3

      ​ ②输入第二条边:4

      ​ ③输入第三条边:5

      ​ ④点击提交按钮

      备注:好的测试步骤,任何一个人都是可以执行的,也不会有任何的歧义

    • 测试数据/输入数据

      概述:指的是测试步骤中用到的数据

    • 预期结果

      概述:指的是按照测试步骤和测试数据操作完成后,应该会出现的结果

      例:预期结果:提示"直角三角形"

    • 测试结果

      概述:写的是实际结果和预期结果对比后产生的结果值:

      通过(成功):实际结果和预期结果一致

      不通过(失败):实际结果和预期结果不一致

      阻塞:因为一些其它的原因(不是本公司所能解决的),导致当前用例无法执行

    • 测试人:写的是执行测试用例人员名字

      注意:测试结果和测试人一定是执行测试后,才来进行填写的内容!!!

    • 备注:可选可写的

      概述:做一些额外的补充说明,比如执行用例时,所需要的硬件,软件,网络环境... 谷歌浏览器10.0

  5. 测试用例的作用

    ① 有效性:执行测试重要参考

    ②可复用性:良好的测试用例可以重复使用

    ①易组织性:再小的项目也会有大量的用例,用例也是随着版本的更新不断完善

    ④可评估性:用例通过率是检查代码质量的参考标准

    ⑤可管理性:测试用例的设计也是检查测试工作效率的标准

    ⑥测试用例的设计对于测试需求的覆盖率:一定是100%

6、黑盒测试用例设计方法

  1. 提供方法的选择:

    • 测试数据:等价类划分法,边界值分析法
    • 测试步骤:因果图法,判定表法,正交实验法,场景法,功能图法
  2. 测试数据的选择:

    • 等价类划分法:划分数据区间

      思想:依据【需求】,将程序的输入域,划分成若干个部分,从每个部分中再选取【少量且具有代表性】的数据,作为测试用例(测试数据),选取的数据就代表了该整体。

    • 等价类划分法分类:

      有效等价类 :依据需求,划分出来【有意义,合理的数据】构成的集合区间

      ​ 例:163邮箱:手机号快速注册:密码:8-16位长度构成的密码数据都是有效的----->有效等价类 数据类型:大小写字母,数字构成的数据----->有效

      无效等价类 :依据需求,划分出来【无意义,不合理的数据】构成的集合区间

      ​ 例:163邮箱:手机号快速注册:密码:长度:两个无效等价类:小于8位的数据 大于16位的数据 数据类型:特殊符号构成的数据----->无效

    • 等价类划分原则(了解)

      ①按照【区间】来划分:如果输入项中规定了【取值范围】或【值的个数】,划分出:一个有效等价类和两个无效等价类

      ​ 例:成绩输入框:规则:[0,100]分数----->有效:0<=成绩<=100 无效:成绩<0 成绩>100 身份证号码输入框:规则:18位------>有效:18位 无效:大于18位 小于18位

      ②按照【数值】来划分:如果输入项中规定了n个值,每个值都必须测试,划分出:n个有效,一个无效

      ​ 例:某一所大学的福利:如果学校中教师的身份:教授,副教授,院长,系主任,都可以得到一套房子

      ​ 四个有效:教授身份的人构成的集合区间,副教授身份的人构成的集合区间,院长身份的人构成的集合区间,系主任身份的人构成的集合区间

      ​ 一个无效:除了上述四个身份以外的人构成的集合区间

      ③按照【数据集合】来划分:如果输入项中规定了输入值的集合,划分出:一个有效,一个无效

      ​ 例:名字需求:首个字符必须是字母

      ​ 一个有效:以字母开头的数据构成的集合区间

      ​ 一个无效:不以字母开头的数据构成的集合区间

      ④按照【规则】来划分:如果输入项中规定了必须要遵守规则的情况下,划分出:一个有效(满足规则的所有数据),若干个无效(从不同角度违反规则)

      ​ 例:需求:校内电话拨打外线号码以9开头

      ​ 有效:9开头+外线号码

      ​ 无效:非9+外线号码 9+非外线号码 非9+非外线号码

      ⑤其它情况:

      ​ (1)如果输入项是一个布尔量,划分出:一个有效,一个无效

      ​ (2)在已知划分好的等价类基础上,有些情况还可以继续进一步划分出更小的等价类

      ​ 例:名字需求:一个无效:不以字母开头----->以数字开头的所有数据 无效,以特殊符号开头的所有数据 无效......

    • 等价类划分法设计测试用例(分析思路)

      ①建立等价类表:梳理思路,划分出每一个输入项的有效等价类,无效等价类

      输入条件 有效等价类 无效等价类

      ②给划分出来的每一个等价类生成一个唯一的编号

      ③==设计一条用例,尽可能多的覆盖有效等价类(能用一条用例完成的,就不考虑第二条),直到把所有的有效等价类全部覆盖完成。==

      ④==设计一条用例,只覆盖一个无效等价类==

      注意:当以某一个输入项进行违反规则设计测试用例时,其他的输入项均看成是满足/符合规则


回顾

  1. 测试需求:"测什么"

  2. 测试用例:"怎么测"

  3. 黑盒测试:

    测试数据选择:等价类边界值法

    测试步骤设计:因果图判定表法 场景法 正交实验法 功能图法

    等价类划分法:思想:输入项----->划分集合区间:有效等价类:有意义,合理 无效等价类:无意义,不合理


  1. 边界值分析法

    • 前提:成绩判定 :[90,100] 优秀,[70,90) 良好,[60,70) 及格,[0,60) 不及格

      if(grade>=90 && grade<=100){

      ​ alert("优秀")

      }

    • 概述:大量的测试工作经验告诉我们,大部分的错误往往发生在边界(并不是程序的内部),针对边界设计用例,能够发现更多的缺陷。边界值法是对等价类法的补充:通过等价类划分区间,结合边界值选取测试数据(边界数据)

    • 边界:指的是输入或输出范围中,恰好处于边界,刚刚超越边界,边界以下的

    • 边界值法设计用例(分析思路):

      ①确定好边界的情况:输入项或输出的边界

      ②选取边界数据作为测试数据:刚刚等于,刚刚大于,刚刚小于的边界值

    • 边界值分析法原则(了解)

      ①如果输入项规定了【取值范围】:则取刚达到的,刚超越(大于+小于)

      ​ 例:成绩输入项:需求:0<=成绩<=100 测试数据:0 100 101 -1

      ​ 价格输入项:[1.0,10.0] 测试数据:1.0 10.0 10.1 0.9

      ​ 价格输入项:[1.00,10.00] 测试数据:1.00 10.00 0.99 10.01

      ②如果输入项规定了【值的个数】,则取最大个数值,最小个数值,比最大值大一,比最小值小一

      ​ 例:一个文件(数据表)能够接收1-255条记录:测试数据:1 255 256 0

      ③1和2中的原则,也可以用于输出结果的判定

      ​ 例:软件查询功能:至少每次会显示1条查询结果,最多不超过20条查询结果,测试数据:1 20 0 21

      ④如果是输入或输出是一个有序序列,测试数据:序列中的第一个元素,序列中最后一个元素

      ​ 例:三部电梯:一部:1-4楼,二部:1-9楼,三部:1,4,6楼,怎么测?

      ⑤分析需求规格说明书,找出其它可能存在的边界条件:次边界值:隐藏的边界值

      ​ 例:月份输入框:1-12 MySQL:数据类型:字段名 tinyint -128到127

    小总结:等价类划分法用于测试数据的区间划分,划分完成后就可以借助于边界值分析法,选取具体的测试数据:测试数据=等价类+边界值

  2. 测试用例评审

    1. 目的:可以让用例的结构更加清楚,覆盖用户场景更加全面(设计不合理,遗漏的找出来),也是提高用例设计水平方式之一
    2. 参与人员:测试部门相关人员,公司其它人员,客户(第三方)

7、黑盒测试用例设计方法(二)

针对测试步骤的设计方法

1、因果图法

  1. 思想:适用于【多种输入条件的组合】,设计测试用例,根据输入项的组合情况,以及约束关系,输出条件的因果关系,分析出可能会产生的组合场景,进行用例设计。

  2. 因果图法分析过程

    ①根据需求说明书,找出原因(条件)和结果之间的关系,画出因果图

    ​ 原因和结果关系:

    ​ 恒等:只要有条件a,一定会有结果b

    ​ 非:只要有条件a,一定不会有结果b

    ​ 或:abc三个条件只要满足其中一个,就会有结果d

    ​ 与:abc三个条件必须同时满足,才会有结果d

    ②根据需求说明书,给因果图加上约束条件

    ​ (1)原因和原因之间的约束条件:

    ​ 互斥E:abc三个条件,最多成立一个

    ​ 包含I:abc三个条件,至少成立一个

    ​ 唯一O:abc三个条件,有且只能成立一个

    ​ 要求R:a条件的操作,要求b条件必须保持一致

    ​ (2)结果和结果之间的约束条件

    ​ 屏蔽M:只要有结果a,就会屏蔽结果b

    ③根据因果图,转换出判定表(在表中整理出因果关系)

    ④判定表中每一个列,都是一条测试用例

小总结:因果图判定表法套路:根据需求说明----->分析因果关系----->画出因果图----->生成判定表----->根据表中的每一个列设计测试用例

2、判定表法

  1. 概述:"判定表驱动法",用来分析多个条件下,执行不同的组合操作情况------>分析工具:找出原因和结果(因为有些需求是比较明确,我们可以直接跳过因果图,利用判定表分析)

  2. 判定表组成

    条件桩:指的是所有的输入条件(原因)

    条件项:指的是每一个输入条件的取值

    动作桩:指的是所有的输出结果

    动作项:指的是所有输出结果的取值

    规则:表中的每一个列,一个规则就是一条测试用例

  3. 判定表法设计用例:

    ①假如有n个条件,且每一个条件只有两个取值(0或1),那么故有2n个规则

    ②确定条件桩和动作桩:列出所有的输入条件和输出结果(问题和结果)

    ③分别填写条件项和动作项,生成初始化的判定表

    ④简化、合并、去重相似的规则或相同的动作(简化后的判定表是大家至少要设计的测试场景,不能再少了)

小总结:不管是因果图,还是判定表,最终的目的:实现不同条件之间的组合,产生不同结果的验证操作(因果图判定表法)


回顾

测试数据:等价类边界值法

测试步骤:因果图判定表法:功能:多条件组合情况


3、场景法(功能+业务)

  1. 概述:模拟用户使用软件时的操作场景(在不同的场景下来测试系统软件),主要测试系统的业务流程(毕竟一个软件的功能相当于是一个业务流程的体现)

  2. 场景法分析过程

    1. 场景法一般是由基本流和备选流组成:软件功能操作时,对应的各种{正确+错误}场景

      基本流:指的是从执行程序开始,到程序执行结束,整个过程是【没有任何错误的场景】,将软件运行的流程正确的分析和表达出来。

      备选流:指的是在基本流的基础上,会发生的【各种错误情况】所生成的场景。

      例:ATM取款机:取钱功能:

      ​ 基本流:正确的操作流程:插卡-------输入密码------选择取钱功能------输入取款金额-----确认出钱------退卡

      ​ 备选流:各种错误情况:备选流一:密码输错三次,锁卡,备选流二:卡里余额不足,备选流三:取款机器没钱......

    2. 场景法在设计测试用例时,都是来源于【基本流和备选流之间组成的不同组合】生成的测试场景,一个场景就是一条测试用例

      注意:一个完整的软件,基本流是固定的,因为基本流是功能业务最明确的体现,所以基本流是一个正确的操作流程或业务流程,没有任何其他错误的情况。备选流是在基本流的操作过程中出现的其他流程和分支(错误)

    3. 场景法用例设计:

      1. 确定基本流和备选流

        例:根据案例描述,能够确定一个基本流和四个备选流

      2. 根据基本流和备选流的组合生成场景

        例:根据上述案例,生成的场景有:

        ​ 场景一:基本流

        ​ 场景二:基本流+备选流1

        ​ 场景三:基本流+备选流1+备选流2

        ​ 场景四:基本流+备选流3

        ​ 场景五:基本流+备选流3+备选流1

        ​ 场景六:基本流+备选流3+备选流1+备选流2

        ​ 场景七:基本流+备选流3+备选流4

        ​ 场景八:基本流+备选流4

      3. 针对每一个场景设计测试用例(一个场景是一条用例)

      4. 如果有相似的场景,记得去重

        案例分析2:

        用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这是需要使用账号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。

        根据上述需求,结合场景法设计测试用例(购物功能)

        (1)确定基本流和备选流

        ​ 基本流:进入购物网站-----选择物品------登录账号------付钱------生成订购单

        ​ 备选流:

        ​ 备选流一:账号不存在

        ​ 备选流二:账号密码错误

        ​ 备选流三:卡里余额不足

        ​ 备选流四:卡里没钱

        (2)根据基本流和备选流生成场景

        ​ 场景一(购物成功):基本流

        ​ 场景二(账号不存在):基本流+备选流1

        ​ 场景三(账号密码错误):基本流+备选流2

        ​ 场景四(卡里余额不足):基本流+备选流3

        ​ 场景五(卡里没钱):基本流+备选流4

        (3)根据每一个场景设计测试用例

  3. 错误推测法

​ 思想:是一种【基于经验和直觉】的测试方法,来推测程序中所有可能存在错误的地方,从而更有针对性的设计测试用例:列出程序中所有会存在或出现错误的特殊情况

​ 例:针对计算器的除法功能:设计用例:关注一下:除数为0的情况验证

  1. 探索性测试

思想:测试人员一边学习和了解软件系统的特性,一边进行测试工作的开展,学习和测试是同步进行,从而了解软件更多的相关信息,从而设计测试用例。

4、正交实验法

  1. 概述:利用【正交表】对实验进行整体分析,设计、综合比较,实现通过【最少的实验次数找到较好的生产条件】,以达到最优的效果。从大量的实验中,选取具有代表性的实验点,放入到正交表,进行数据分析和实验的实施。

  2. 思想(设计测试用例分析):

    1. 在实验中,把影响实验结果的量称为实验因素/因子,简称"因素/因子"

      解析:在测试中,把影响测试结果的量称为"因素"----->输入项/输入条件

    2. 在实验中,每个因素所处的不同状态或状况,被称为因素的水平,简称"水平"----->因素的取值

      解析:在测试中,水平相当于是每个输入项的取值

    3. 利用正交设计助手,生成正交表

      备注:根据因素和水平的个数,选择合适的正交表:L4_2_3:会创建一个3因素2水平的正交表,生成4次实验:L实验次数_水平个数 _因素个数;如果没有合适的正交表,就选择稍大一点的

    4. 正交表中生成的每一个实验,就是一条测试用例

      例:做实验:Word内容进行排版操作,请根据正交实验法,设计测试用例

      第一步:找出影响word内容排版的因素有哪些?

      ​ 字体大小 字体颜色 字体样式

      第二步:确定每个因素的取值(选取一下每个因素的不同状态)

      ​ 字体大小:水平:12 18 36

      ​ 字体颜色:黑色 绿色 紫色

      ​ 字体样式:水平:宋体 黑体 楷体

      补充:3因素3水平:有3个因素点,每个因素点是有3个取值; 4因素5水平:有4个因素点,每个因素点是有5个取值

  3. 正交表特性:

    1. 表中每个列的值出现的次数是一样的,保证每个因素的水平值参与实验几率是一致的

    2. 表中任意两列横向组成的数据对,出现的次数是一样的,保证因素和水平的组合参与实验的概率也是一致的

  4. 典型的应用场景:软件中【设置模块】的测试用例

练习:利用正交实验助手,完成下列需求的实验生成

5、测试大纲法和Monkey测试

  1. 测试大纲法

    思想:主要用于多个窗口,以及每个窗口之间包含的多种操作,这些窗口操作之间又存在一定的联系,为了更清楚窗口与窗口之间的关系,可以借助于测试大纲法。为了列清楚各种测试条件之间的关系,把过程转化成大纲的形式来进行描述。(弄清楚上一步操作和下一步之间的联系,上一个窗口和下一个窗口之间的关系)

    应用场景:测试安装、卸载的功能操作;测试窗口之间的跳转关系;它也是着眼于需求的一种测试方法:梳理清楚需求之间的关系

  2. Monkey测试:它是一种没有书面测试用例的测试方法,需要通过一系列的Monkey命令来完成测试,整个测试过程充满随机性。它更偏向于测试程序的稳定性,进行压力测试的一种手段。

    缺点:测试过程往往不真实,会有较多的冗余(重复)的操作,测试的覆盖率很难达标。

6、测试用例设计方法综合选择策略(重点掌握)

  1. 针对任何有输入项数据的选择操作,必须等价类边界值法。
  2. 如果程序的功能说明中含有输入条件的组合情况,则一开始就要考虑因果图判定表法。
  3. 对于业务流程清晰的系统软件,可以利用场景法贯穿整个测试流程。
  4. 对于参数配置类的软件功能,可以利用正交实验法选择较少的参数组合达到最佳的测试效果。
  5. 利用错误推测法,再追加一些测试用例
  6. 如果用例的设计没有达到测试需求的全面覆盖,需要再补充足够多的测试用例

回顾

场景法:基本流(正确,没有任何错误场景)+备选流(各种错误的场景)

正交实验法:因素+水平

错误推测法:经验+直觉

探索性测试:学习和了解软件特性+测试工作

测试大纲法:安装,卸载功能测试,窗口与窗口之间跳转

Monkey测试:自动化测试

重点:测试用例设计方法综合选择策略

相关推荐
世间万物皆对象6 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
惜.己12 小时前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
Dnelic-16 小时前
解决 Android 单元测试 No tests found for given includes:
android·junit·单元测试·问题记录·自学笔记
互联网杂货铺17 小时前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
岳哥i20 小时前
前端项目接入单元测试手册
前端·单元测试
go_to_hacker20 小时前
容器安全检测和渗透测试工具
测试工具·安全
惜.己1 天前
Jmeter中的断言(四)
测试工具·jmeter·1024程序员节
半桶水专家1 天前
tcpdump抓取流量包详解
网络·测试工具·tcpdump
小流年 °1 天前
抓包工具Wireshark
网络·测试工具·wireshark