• 黑盒测试与白盒测试


    边界值测试的效率有四个评价指标:用例数量,是否冗余,用例的覆盖范围和是否方便错误追踪,根据这四个指标我们对不同的边界值测试进行了评估。

    等价类测试则有强组合形式的覆盖和弱组合形式的覆盖,可根据用例的规模和数量选用合适的形式进行测试的覆盖。同时应注意的一点是等价类的划分要清晰合理,否则会出现原输入中不存在输入条件,比如上课提到的年月日输入的等价类划分,很可能就会因为忽略了输入之间的约束条件导致等价类划分不正确。

    场景法的核心在于基本流和备选流的场景设计,将使用频率多,发生可能性大的事件流(该事件流具有最大的风险可能性)作为基本流,将判定或循环判定的不同触发条件引起的事件流作为备选流构造场景图,再根据场景图得到可能的场景,此时不能仅将场景图作为一个图来考虑,还需考虑实际情况,即基本流和备选流之间的制约关系来考虑不同的场景。此外,如果同一个校验点有多个备选流且备选流的起点和重点是一样的话,可以考虑将这些备选流合并以简化场景图。

    边界值测试重点在于考查边界值及附近的数据,等价类测试侧重于找到整个输入域中最具有代表性的数据,而场景法则注重对于事件流的理解

    白盒测试主要用于单元测试和集成测试,通常不用于系统测试,但是有些方法和思路可以为系统测试做参考,比如白盒测试中的路径测试对路径的覆盖就可以为黑盒测试中的场景法中基本流和备选流的遍历提供参考意义。白盒测试主要侧重于程序的源代码,即实现的细节,针对性很强。

    白盒测试的主要方法有:逻辑覆盖,包括语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖等(覆盖标准发现错误的能力呈由弱到强);基路径测试;静态白盒测试。

    逻辑覆盖

    逻辑覆盖主要侧重于程序的逻辑结构,根据不同逻辑结构(顺序结构,判断分支和循环)的风险程度组合使用覆盖指标来衡量。

    语句覆盖保证每条可执行语句都被至少执行一次,它的覆盖形式类似于等价测试中的弱组合的形式的覆盖,需要注意的的是屏蔽陷阱,即在与,或关系中,如果前一个判定条件的取值真假会屏蔽后一个语句的真假值(或:前一个取真,后一个不论真假整个表达式的值都为真,与的话类似)。因为语句覆盖侧重的是语句所以无法发现控制流的缺陷。

    分支覆盖是保证每个判定节点的取真和取假至少执行一次,也是一种弱组合形式的覆盖。然而判定覆盖没有测试到每个简单逻辑判定条件的正确性,所以出现了条件覆盖,即对每个子判定条件进行覆盖。为了结合判定覆盖和条件覆盖的利弊,出现了判定/条件覆盖,但是虽然理论上的效果很好,实际操作却存在技巧和难度。条件组合是满足每个判定节点中所有简单判定条件的各种可能取值的组合至少执行一次,这种方法也是理论上很好,但是实际的用例数量可能会很大。

    基路径测试

    基路径测试的基础是程序图,圈复杂度决定了基路径的个数(但是结构上的缺陷可能导致路径执行不到或者有冗余),为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到。

    静态白盒测试

    静态白盒测试有:代码检查(包括桌面检查desk checking,代码走查walk through,代码审查Ispection和技术评审review),静态结构分析。

    桌面检查desk checking

    桌面检查(desk checking)是一种传统的检查方法,由程序员检查自己编写的程序。程序员在程序通过编译之后对源代码代码进行分析、检验,并补充相关的文档,目的是发现程序中的错误。

    代码走查walk through

    代码走查walk through就是针对代码,在假想的输入情况下,逐行的浏览代码,走查代码中潜在的缺陷并记录结果的过程。以小组会议方式进行,每小组3-5人。与代码审查不同的是,走查要求与会者扮演计算机的角色让测试用例沿被测程序的逻辑运行,是在模拟动态测试;而代码审查更多的是静态测试。

    代码审查Ispection

    代码审查Ispection是由一组人通过阅读、讨论和争议对程序进行静态分析的过程,以小组会的方式进行。审查小组一般由若干程序员(包括程序代码的设计者)和代码检查人员组成。会前把设计规格说明书、控制流程图、程序文本以及要求、规范、错误检查清单交给与会者,开会时程序作者朗读解释程序,其他人则集中精力,捕捉程序在结构、功能、编码风格等方面的问题。

    静态结构分析

    函数调用关系图和程序控制流图的分析。调用关系图的根部调用点,被多次上层节点调用的底层函数,多接口的情况都是需要重视的。控制流图则关注入出口数量,是否存在孤立节点和最短最长路径的差别来判断函数结构是否健壮和出现缺陷的概率。

  • 相关阅读:
    c#函数重载
    (1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)
    C#给datagridview某行赋值(转)
    好的软件人员必看的六十本书
    C# 语言规范
    spring 排除指定的类或者包扫描
    java web spring 发送邮件
    spring-data-redis和jedis版本对应收集总结
    python 多线程和多进程基本写法
    python 调用nmap
  • 原文地址:https://www.cnblogs.com/Zoe-only/p/4514376.html
Copyright © 2020-2023  润新知