Software Testing-How To Design Test Case

来源:互联网 发布:js a href click 编辑:程序博客网 时间:2024/05/17 07:20

软件测试实例


1,黑盒测试

  • 等价类+边界值

    流程:

    1,根据输入需求划分有效等价类与无效等价类(对有效等价类的条件取反),并且对每个等价类进行编号

    2,根据有效等价类的取值范围进行边界值划分

    参考:

输入项 有效等价类 无效等价类
输入项 等价类 边界值
用例编号 覆盖用例 输入集合 预期集合
  • 因果图

    流程:

    1,根据需求描述提炼以下序列(原因,结果)

    2,对原因进行抽象提炼(eg:add,delete,update,search等原因可以总结为修改数据)

    3,根据需求描述画图···(常用∩∪~三个符号上线)

    4,(可选)因果图转换为判定表并设计测试实例

    参考:

原因 结果
输入条件 原因聚簇 中间结果 抽象聚簇 输出结果 结果聚簇 测试用例 Y/N
用例编号 输入 预期结果
  • 决策表

    流程:

    1,同因果图,区别在于提炼序列变更为条件,动作

    2,遍历所有动作导致的可能结果并填表(表格参考见)

    3,根据化简规则(同消消乐的规则)对决策表进行化简

    参考:

1 2 3 … N 条件聚簇 动作聚簇
编号 输入条件 输入数据 预期结果

2,白盒测试

  • 逻辑覆盖测试

    分类以及概念:

名称 概念 语句覆盖 每个语句至少执行一次 判定覆盖 每个判定每个分支至少执行一次 条件覆盖 每个判定每个条件获得各种可能的取值 条件判定覆盖 条件∩判定 条件组合覆盖 各种条件的各种组合至少执行一次 路径覆盖 所有可能的路径被执行一次

参考:

#include <stdio.h>  void main(){    float A,B,X;    scanf("%f%f%f",&A,&B,&X);    if((A>1)&&(B==0))      X=X/A;    if((A==2)||(X>1))      X=X+1;    printf("%f",X);  }

1,绘制流程图

2,根据要求设计测试用例(丫不废话么)

eg:

1,语句覆盖,满足条件(A=2,B=0,X>1)的随意来一组

2,判定覆盖,每个判定一组约束条件,非本组的判定条件取反即可(A>1,B=0,X<=1)(A=2,B!=0,X>1)

3,条件覆盖,分解条件如下(A>1|A<=1)(B=0|B!=0)(A==2|A!=2)(X>1X<=1)设计用例覆盖以上条件即可

4,条件判定覆盖,根据判定得出覆盖路径,筛选条件设计满足该路径的条件即可

5,条件组合覆盖,通过第一个判定

  if((A>1)&&(B==0))

可以得出以下组合的判定组合:

((A>1)&&(B!=0))

((A>1)&&(B==0))

((A<=1)&&(B!=0))

((A<=1)&&(B==0))

以此类推可以得出所有的该程序段的条件组合覆盖测试用例

6,路径覆盖,通过流程图转化为控制流图即可进行路径覆盖的测试用例的设计

  • 基本路径测试

    流程:

    1,绘制控制流图

    2,计算环路复杂度

    3,找出独立路径

    4,设计覆盖独立路径的测试用例

    参考:

    1,参考流程图(好像没有什么区别)三大结构(顺序,循环,选择)

    2,边-节点+2|判定节点+1|区域数量

    3,独立路径,每次至少(也可以多一点)引入一条新的,尚未执行的语句。该类路径的数量与环路复杂度相等

    4,看具体需求了

0 0
原创粉丝点击