zoukankan      html  css  js  c++  java
  • 白盒测试方法

    白盒测试是单元测试阶段常用到的测试方法,其特点有:​

    (1)可以构成测试数据,使特定程序部分得到测试;

    (2)有一定的充分性度量手段;

    (3)可获得较多工具支持;

    (4)通常只用于单元测试。

    下边通过一段代码来看一下白盒测试中的逻辑覆盖:

    那么为了清晰,我们画出一个该程序的流程图:

     

    1、语句覆盖

    语句覆盖是最弱的逻辑覆盖准则。要求设计足够多的测试用例,使得每一条语句至少被执行一次​。

    对于示例来说​,可以设计:

    {x=4,y=6,z=9}执行路径:abd

    (理解:不能短路任何语句,比如路径走acd就会短路语块1)​

    2、分支覆盖

    ​要求设计足够多的测试用例,使得每一个判定的​每一个分支至少各执行一次。

    ​对于示例来说​,可以设计:

    {x=5,y=4,z=9}执行路径:abe

    {x=2,y=6,z=9}执行路径:acd​

    (理解:只要将每个判定即每个菱形框的真假都各取过一次即可,比如走路径abd和ace也是可以的)​

    3、条件覆盖

    ​要求设计足够多的测试用例,使得每一个判定的​每一个条件的每一个取值(真或假)至少各执行一次。

    对于示例来说​,可以设计:

    {x=4,y=4,z=11}  条件取值:TFTF

    {x=2,y=6,z=9}  条件取值:FTFT

    {x=5,y=4,z=9} 条件取值:TTFF

    (理解:只要将每个判定即每个菱形框里的每个条件真假都各取一次,但注意,比如TFTF时由于第二个判定里的逻辑运算符是||,那么条件y>5不执行,同理,FTFT时z<10不执行,就引出了第三条测试用例)

    4、分支条件覆盖

    ​要求设计足够多的测试用例,使得每一个判定的​每一个条件的每一个取值(真或假)至少各执行一次,并且使得每一个判定的​每一个分支至少各执行一次。

    对于示例来说​,可以设计:

    {x=4,y=6,z=9}  条件取值:TTTT 执行路径:abd

    {x=2,y=4,z=11}  条件取值:FFFF 执行路径:ace

    {x=5,y=6,z=11} 条件取值:TFFT 执行路径:acd

    (理解:先满足每个条件的真假都各取一次,最好使用TTTT和FFFF,这样肯定会满足abd和ace路径,那么再考虑执行过程中TTTT中的第4个T和FFFF中的第2个F被屏蔽的问题,再加一条TFFT的就好了,因为此时分支已经全部覆盖,所以第三条不用考虑分支覆盖的问题)​

    5、条件组合覆盖

    ​要求设计足够多的测试用例,使得每一个判定的​每一个条件(同一个判定中)的可能的组合至少被各执行一次。

    对于示例来说​,可以设计:

    {x=4,y=4,z=11}  条件取值:TFTF

    {x=4,y=6,z=9}  条件取值:TTTT 

    {x=2,y=6,z=9} 条件取值:FTFT 

    {x=2,y=4,z=11} 条件取值:FFFF

    (理解:将每一个判定框中的条件组合再重新组合,比如第一个判定框中的两个条件的取值组合TT__、TF__、FT__、FF__和第二个判定框中的两个条件的取值组合__TT、__TF、__FT、__FF进行组合,但这8个组合必须都出现一次。所以说这个例子中条件组合判断的测试用例至少4个)

    ​6、路径覆盖

    ​要求设计足够多的测试用例,覆盖程序中的所有可能路径。

    对于示例来说​,可以设计:

    {x=4,y=6,z=9}  执行路径:abd

    {x=5,y=4,z=9}  执行路径:abe

    {x=4,y=6,z=11} 执行路径:acd

    {x=2,y=4,z=11} 执行路径:ace

    (理解:将每一个判定的分支组合起来,并保证每个判定的每个分支的所有可能组合都出现,比如第一个判定框可能为真,也可能为假。若第一个判定框为真,那么就有abd和abe的可能组合;若第一个判定框为假,那么就有acd和ace的可能组合,所有的可能情况就出来了,不难看出,至少也需要4个测试用例)

  • 相关阅读:
    Ubuntu 13.10 x64 安装 Eclipse Android SDK Java开发IDE
    域名 TTL 查询
    mysql 常用设置:字符集编码、自动完成(自动提示)、监听外网ip
    PHP 设置:timezone、error_log
    数字发行:电子书、电影、游戏、音乐
    细节:php array会把string key自动转成int吗?
    REST URI设计:版本号放在http header中,rewrite配置
    Linux时区设置
    Linux添加sudo用户
    php curl常见错误:SSL错误、bool(false)
  • 原文地址:https://www.cnblogs.com/xcnpeng/p/7202732.html
Copyright © 2011-2022 走看看