测试设计与测试用例

测试设计是将概括的测试目标转化为具体的测试条件测试用例的一系列活动。

测试分析和设计的主要任务

评审测试依据(需求,系统架构、设计和接口说明),根据依据,确定哪些部分需要测试
评估测试依据和测试对象的可靠性(比如文档没有改变,但是项目具体改变了,因此需要评审测试依据是否可靠),所以测试人员需要参加开发的会议
通过对测试项、规格说明、测试对象行为和结构的分析,识别测试条件并确定优先级
设计测试用例,并确定优先级
确定测试条件和测试用例所需的必要的测试数据

确定测试条件

依据在测试策略或测试计划中确定的测试技术
通过对测试依据和饥饿测试目标的分析,可以确定需要测试的内容,获得测试条件(站在产品角度,用户方的角度去测试)
需求 - > 测试内容

测试用例

测试用例来源于测试依据,测试依据来源于测试需求
测试用例是通过使用在测试计划中确定的测试技术,对于已确定的测试条件进行逐步推敲,精炼而设计出来的重点说明如何具体操作产生何种结果的文档。
测试用例应该具有可重复性可验证性需求可追踪性

测试用例设计包括的关键点:

  • 前提条件,如项目或局部测试环境的需求,及其交付计划
  • 测试步骤,一步一步地操作
  • 测试数据
  • 预期结果(测试成功应该要展示什么的正确结果)

测试用例常用的设计方法

  • 等价类划分法
  • 边界值法
  • 因果图设计法
  • 判定表设计法
  • 正交实验法

等价类划分法

有效等价类定义:由那些对程序的规格说明有意义的、合理的输入数据所构成的集合,反之,就是无效等价类

等价类划分法:

  • 等价类划分的办法是把程序的输入域划分成若干部分
  • 然后从每个部分中选取少数代表性数据当作测试用例
  • 每一类的代表性数据在测试中的作用等价于这一类中的其他值

也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误。反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会差出错误。

等价类划分原则

  1. 如果输入条件规定了取值的范围或值的个数,则可确定一个有效等价类和两个无效等价类(比如 取值范围是0-10,那么小于0和大于10就是两个无效等价类;取值只能取五个,那么小于五个或大于五个都是无效等价类)
  2. 如果一个输入条件说明了一个“必须成立”的情况,则可划分一个有效等价类和一个无效等价类
  3. 如果输入条件规定了输入数据的一组可能的值,而且程序是用不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类(对某一种数的处理模式不同就是一个等价有效类)
  4. 如果我们确定,已划分的某等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此将此等价类进一步划分成更小的等价类
  5. 在确定了等价类之后,建立等价类表,列出所有划分出的等价类

基于等价类划分的用例设计

  1. 明确测试对象对象,非测试对象保证正确
  2. 为每个等价类规定一个唯一的编号
  3. 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
  4. 设计一个新得测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。

等价类的特点

  1. 测试相同的内容,等价类是相同意义上的内容
  2. 如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
  3. 如果等价类种得一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷
  4. 如果正确的划分等价类,可以大大降低测试用例的数量,测试会准确有效
  5. 如果错误的将两个等价类当作一个等价类,那就会遗漏一种测试情况
  6. 不但要考虑有效等价类,也要考虑无效等价类
  7. 仔细划分,审查划分
  8. 过于粗略会漏掉软件缺陷
  9. 组织评审

边界值分析法

边界值分析法是一种补充等价划分的测试用例设计技术,他不是选择等价类的任意元素,而是选择等价类边界的测试用例

边界值分析法不仅充实输入条件边界,而且也从输出域到处测试用例

边界值设计的原则

如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例(最后一个符合和第一个不符合)
比如以a和b为边界,测试用例应当包含a和b以及略大于a和略小于b的值。还应当注意非类型数据,比如要求数字,实际输入却是英文字母

因果图&判定表法

等价类划分法和边界值分析方法都是着重考虑输入条件,而不考虑输入条件的各种组合、输入条件之间的相互制约关系
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多中条件的组合、产生多个相应动作的测试方法,这就需要利用因果图(逻辑模型)

因果图法基于这样的思想:一些程序的功能可以用决策表的形式来表示,并根据输入条件的组合情况规定相应的操作。因此,可以考虑为决策表中的每一列设计一个测试用例,以便测试程序在输入条件的某种组合下的输出是否正确。

概括的说,因果图方法就是从程序规格说明书的描述中找出因(输入条件)和果(输出结果或程序状态的改变),**将因果图转换为判定表,为决策表中的每一列设计一个测试用例,**这种方法考虑倒了输入情况的各种组合以及各个输入情况的相互制约关系

  • 判定表是分析和表达多逻辑条件下执行不同操作的工具,在程序设计发展的初期,判定表已经被当做编写程序的辅助工具,因为它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确
    在这里插入图片描述
    判定表由四个部分组成:
    条件桩(Condition Stub):列出了问题的所有条件,通常认为列出的条件的次序无关紧要
    动作桩(Action Stub):列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。
    条件项(Condition Entry):列出针对它左列条件的取值,在所有可能情况下的真假值
    动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

设计步骤

  1. 分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符(寻找输入输出条件)
  2. 分析软件规格说明中语义的内容,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(分析条件互斥)
  3. 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。
  4. 把因果图转换为判定表
  5. 根据判定表中的每一列设计测试用例

在这里插入图片描述

正交实验法(穷举的时候才会用到)

定义:从大量的试验点中挑选出适量的、有代表性的点,应用依据迦罗卡瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法。

关键值

  • 指标:通常把判断试验结果优劣的标准叫做试验的指标
  • 因此(因素):所有影响试验指标的条件
  • 因子的状态(水平level):而影响实验因子的,叫做因子的状态(因子变量的取值)

正交实验法设计步骤

  1. 提供功能说明,构造因子——状态表;在这里插入图片描述

  2. 加权筛选,生成因素分析表(即计算各因子和状态的权值,删去一部分权值较小,即重要性较小的因子或状态,使最后生成的测试用例集缩减到允许的测试范围)

  3. 利用正交表构造测试数据集
    3.1 如果各个因子的状态数是不统一的,几乎不可能出现军运的情况,必须首先用逻辑命令来组合各因子的状态,作出布尔图
    3.2 根据布尔图得到相应阶数的正交表
    3.3 依照因果图上根节点到叶子节点的顺序逐步替换正交表上的中间节点,得到最终的正交表

  4. 利用正交表每行数据构造测试用例
    查找已有官方的正交表:http://support.sas.com/techsup/technote/ts723_Designs.txt

测试场景设计

针对测试场景设计测试用例

场景法原理

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景形成了场景,而同一事件不同触发顺序和处理结果就形成了事件流。这种在软件设计方面的思想可以引入到软件测试中,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。

场景法基础设计

在这里插入图片描述

  • 每个经过用例的可能路径,可以确定不同的用例场景
  • 从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景(一笔画问题)在这里插入图片描述
  • 根据说明,描述出程序的基本流及各项备选流
  • 根据基本流和各项备选流生成不同的场景
  • 对每一个场景生成相应的测试用例
  • 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

实际测试中用例设计的综合运用

测试用例综合设计

  1. 测试用例项划分
    划分方法的经典方法是瀑布模型,从上到下,逐渐细分,大模块包括小模块,小模块包括更小的模块;要从更多的角度切入系统,把系统切分成一块一块的来进行测试,从而确保测试大项的完整性
  2. 切面设计
    功能点切面:最常见的切面,通常认为页面上的一个按钮就是一个功能点。根据功能的复杂程度,按每个功能进行用例的撰写;隐含切面:完整业务流程的测试,从需求、业务角度进行编写。
  3. 功能点用例设计
    (1)任何情况下都必须使用边界值分析方法,
    经验表明用这种方法设计出测试用例发现程序错误的能力最强
    (2)必要时用等价类划分方法补充一些测试用例
    (3)如果程序的功能说明中含有输入条件的组合情况,则一开始就可以选用因果图法
    (4)如果程序业务复杂度比较高,则适当使用场景补充一部分测试用例
Logo

开源、云原生的融合云平台

更多推荐