白盒测试

一、什么是功能测试?
  a.功能测试根据测试用例逐一对被测系统的各项功能进行验证,验证各项功能是否满足用户的需要(需求规格说明书),关注一个用户使用被测系统的情况


二、什么是性能测试?
  在系统功能已通过测试后,借助测试工具(Loadrunner、Jmeter)在正常、峰值以及异常的情况下来测试被测系统的各项性能指标是否满足用户需求,关注多用户使用被测系统时快不快


三、什么是黑盒测试?
  不考虑系统的内部逻辑结构,把程序看成是一个黑盒子,只考虑系统的输入输出,检查程序是否按照需求规格说明书正常使用
  输入:测试用例中的数据
  输出:被测系统的反馈情况(响应)
  黑盒测试又称为数据驱动测试,基于功能的测试


四、什么是白盒测试?
  白盒测试是通过对程序内部结构进行分析来检测出问题,又称为透明盒测试和逻辑驱动测试,基于代码的测试


五、白盒测试
  1、为什么要做白盒测试?
    在系统中出现一个缺陷往往不是由一个原因导致的,就需要通过白盒测试,提前把每个功能模块都测试一次


  2、白盒测试的目的:
    a.保证程序中所有关键路径都被测试到,防止系统投入生产后用户发现系统问题
    b.便于衡量测试的完整性,完整性:有没有把某个功能点的所有可能情况都测试到
    c.可以测试到程序中所有的真分支、假分支
    d.检查内存泄漏
      c语言:malloc()-->free()
    e.检查程序的异常处理能力,Exception
    f.解决实际实验条件下很难搭建真实测试环境的问题
      测试环境:被测系统(数据库+服务器、代码)、网络、操作系统、测试工具
    g.检查代码是否遵循一定的编码规范

      功能:升温、降温
      驱动模拟温度高于+300->降温
      驱动模拟温度低于-300->升温

      username + passwd
      if(username正确andpasswd正确)
        返回登录成功界面
      else
        提示用户名错误或者密码错误


  3、白盒测试的分类:
    (1)静态白盒测试
      a.什么是静态测试?
        不实际运行被测系统本身,检查文档内容、界面、代码规范等
      b.静态白盒测试
        不实际运行被测系统本身,检查和审查代码的设计、结构,也称为结构化分析
        尽早发现程序中的缺陷,可以发现30%-70%的缺陷,可以为黑盒测试人员提供测试思路
      c.静态白盒测试的策略(方法)
        --桌前走查
        --代码检查
        --代码审查(人员:语言专家、行业专家、程序员、项目经理、测试人员)
        --正式审查
      d.审查单(Checklist):记录审查代码时或者公司内部整理的错误类型
    (2)动态白盒测试
      a.设计测试用例,根据测试用例执行被测程序(代码),验证代码的逻辑结构是否满足需求
      b.设计测试用例的方法:
        语句覆盖
        判定覆盖
        条件覆盖
        判定+条件覆盖
        条件组合覆盖
        路径覆盖
        基本路径测试方法


六、动态白盒测试--逻辑覆盖
  逻辑:代码
  覆盖:测试


  1、语句覆盖:关心代码中的可执行语句,设计足够多的测试用例来执行代码,确保程序中所有的可执行语句都至少被执行一次
    (1)程序流程图的组成:
      菱形--判定语句
      长方形--可执行语句
      箭头--程序流向
      圆角长方形--程序开始、结束
      判定M:a>0 and b>0 真分支Y
        a<=0 or b<=0 假分支N
      判定Q:a>1 or c>1 真分支Y
        a<=1 and c<=1假分支N
      1) 需求:把程序中所有可执行语句都至少测试一次
      2) 找到程序中所有可执行语句
        可执行语句1
        可执行语句2
        可执行语句3
      3) 如果要执行语句1,程序必须执行判定MY,要执行语句2,程序必须执行判定QY,执行完判定M和判定Q,就会执行语句3
      4) 找到满足用例的条件
        MY:a>0 and b>0
        QY:a>1 or c>1
      5) 设计测试
        a=9,b=16,c=8

  2、判定覆盖:设计足够多的测试用例来执行被测程序,把程序中所有判定的真分支、假分支至少执行一次
    判定M:a>0 and b>0 真分支Y
      a<=0 or b<=0 假分支N
    判定Q:a>1 or c>1 真分支Y
      a<=1 and c<=1假分支N
    1) 需求:测试程序中所有判定的真、假分支
    2) 找到程序中所有的真、假分支
      分支1:MY
      分支2:MN
      分支3:QY
      分支4:QN
    3) 程序执行M判定后,会执行到Q判定,所有程序执行一次可以覆盖两个分支
      a:MY->QY b:MN->QN
    4) 找到满足用例的条件
      a:a>0 and b>0 and a>1 or c>1
      b:a<=0 or b<=0 and a<=1 and c<=1
    5) 设计测试用例
      a:a=6,b=19,c=20
      b:a=,b=,c=

  3、条件覆盖:设计足够多的测试用例,来执行被测程序,使得程序中所有 (判定) 中的所有 (条件) 的所有 (取值) 都至少被执行一次
    判定M:a>0 and b>0 真分支Y
      a<=0 or b<=0 假分支N
    判定Q:a>1 or c>1 真分支Y
      a<=1 and c<=1假分支N
    1) 需求:测试程序中判定中条件的取真、假值
    2) 找到程序中所有的取值
      取值1:a>0 真
      取值2:a<=0 假
      取值3:b>0 真
      取值4:b<=0 假
      取值5:a>1 真
      取值6:a<=1 假
      取值7:c>1 真
      取值8:c<=1 假
    3) 分析
      程序执行一次可以覆盖4个取值,a b a c
        a: a 真 b 真 a 真 c真
        b: a 假 b 假 a 假 c假
    4) 设计测试用例
      a: a=12,b=15,c=14
      b: a=0,b=-23,c=1


  4、条件组合覆盖:设计足够多的测试用例,来执行被测程序,使得程序中所有条件取值组合都至少被执行一次
    判定M:a>0 and b>0 真分支Y
      a<=0 or b<=0 假分支N
    判定Q:a>1 or c>1 真分支Y
      a<=1 and c<=1假分支N
    1) 需求:测试所有条件取值的组合
    2) 找到所有条件取值组合
      组合1:a>0 and b>0
      组合2:a>0 and b<=0
      组合3:a<=0 and b<=0
      组合4:a<=0 and b>0
      组合5:a>1 and c>1
      组合6:a>1 and c<=1
      组合7:a<=1 and c<=1
      组合8:a<=1 and c>1


  5、路径覆盖:设计所有的测试用例,来执行被测程序,使得程序中所有的可执行路径至少被执行一次
    判定M:a>0 and b>0 真分支Y
      a<=0 or b<=0 假分支N
    判定Q:a>1 or c>1 真分支Y
      a<=1 and c<=1假分支N
    1) 要求:测试所有的可执行路径
    2) 找到程序中所有的可执行路径
      路径1:MY->QY
      路径2:MY->QN
      路径3:MN->QY
      路径4:MN->QN

  6、基本路径测试方法
    (1)基本路径测试方法跟路径覆盖类似,至少路径覆盖适合简单的程序,复杂的程序使用基本路径测试方法计算出所有的关键路径
    (2)基本路径测试方法是根据程序(代码)画出控制流图,根据控制流图计算圈复杂度(可执行路径数),根据圈复杂度导出独立路径(程序怎么执行,有哪些路径),根据独立路径设计测试用例
    (3)画控制流图
      a.圆圈:一条或者多条语句
      b.箭头:程序的控制流向
      c.圆圈可以是判断语句,如果是判断语句发出的箭头必须有一个终止的节点
      d.一个圆圈称为一个节点
      e.由节点和箭头圈定的范围称为一个区域,区域用来计算圈复杂度,区域外的范围也应该计为一个区域
    (4)计算圈复杂度
      a.V(G)=区域数
      b.V(G)=边(箭头)-节点(圆圈)+2
      c.V(G)=判定节点+1,不适合case多分支语句
    (5)导出独立路径
      路径1:4→14
      路径2:4→6→7→ 13→4→14
      路径3:4→6→9→10→13→4→14
      路径4:4→6→9→12→13→4→14

原文地址:https://www.cnblogs.com/KalosOwen/p/8987068.html