群辉服务器建设的网站,南阳做网站 汉狮公司,安徽专业网站建设大全推荐,frontpage做网站教程转自#xff1a;http://wenda.tianya.cn/wenda/thread?tid758a1e447e62b7dfhlja 白盒测试作为测试人员常用的一种测试方法#xff0c;越来越受到测试工程师的重视。白盒测试并不是简单的按照代码设计用例#xff0c;而是需要根据不同的测试需求#xff0c;结合不同的… 转自http://wenda.tianya.cn/wenda/thread?tid758a1e447e62b7dfhlja 白盒测试作为测试人员常用的一种测试方法越来越受到测试工程师的重视。白盒测试并不是简单的按照代码设计用例而是需要根据不同的测试需求结合不同的测试对象使用适合的方法进行测试。因为对于不同复杂度的代码逻辑可以衍生出许多种执行路径只有适当的测试方法才能帮助我们从代码的迷雾森林中找到正确的方向。本文介绍六种白盒子测试方法语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 白盒测试的概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的因此我们要进行白盒测试。 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法盒子指的是被测试的软件白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 白盒的测试用例需要做到 ·保证一个模块中的所有独立路径至少 被使用一次 ·对所有逻辑值均需测试 true 和 false ·在上下边界及可操作范围内运行所有循环 ·检查内部数据结构以确保其有效性 白盒测试的目的通过检查软件内部的逻辑结构对软件中的逻辑路径进行覆盖测试在程序不同地方设立检查点检查程序的状态以确定实际运行状态与预期状态是否一致。 白盒测试的特点依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。 白盒测试的实施步骤 1.测试计划阶段根据需求说明书制定测试进度。 2.测试设计阶段依据程序设计说明书按照一定规范化的方法进行软件结构划分和设计测试用例。 3.测试执行阶段输入测试用例得到测试结果。 4.测试总结阶段对比测试的结果和代码的预期结果分析错误原因找到并解决错误。 白盒测试的方法总体上分为静态方法和动态方法两大类。 静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。 动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。 白盒测试的优缺点 1. 优点 ·迫使测试人员去仔细思考软件的实现 ·可以检测代码中的每条分支和路径 ·揭示隐藏在代码中的错误 ·对代码的测试比较彻底 ·最优化 2. 缺点 ·昂贵 ·无法检测代码中遗漏的路径和数据敏感性错误 ·不验证规格的正确性 六种覆盖方法 首先为了下文的举例描述方便这里先给出一张程序流程图。本文以1995年软件设计师考试的一道考试题目为例图中红色字母代表程序执行路径。 1、语句覆盖 1主要特点语句覆盖是最起码的结构覆盖要求语句覆盖要求设计足够多的测试用例使得程序中每条语句至少被执行一次。 2用例设计如果此时将A路径上的语句1—〉T去掉那么用例如下 X Y 路径 1 50 50 OBDE 2 90 70 OBCE 3优点可以很直观地从源代码得到测试用例无须细分每条判定表达式。 4缺点由于这种测试方法仅仅针对程序逻辑中显式存在的语句但对于隐藏的条件和可能到达的隐式逻辑分支是无法测试的。在本例中去掉了语句1—〉T去掉那么就少了一条测试路径。在if结构中若源代码没有给出else后面的执行分支那么语句覆盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行而往往这种错误会经常出现。再如在Do-While结构中语句覆盖执行其中某一个条件分支。那么显然语句覆盖对于多分支的逻辑运算是无法全面反映的它只在乎运行一次而不考虑其他情况。 2、判定覆盖 1主要特点判定覆盖又称为分支覆盖它要求设计足够多的测试用例使得程序中每个判定至少有一次为真值有一次为假值即程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。 2用例设计 X Y 路径 1 90 90 OAE 2 50 50 OBDE 3 90 70 OBCE 3优点判定覆盖比语句覆盖要多几乎一倍的测试路径当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性无须细分每个判定就可以得到测试用例。 4缺点往往大部分的判定语句是由多个逻辑条件组合而成如判定语句中包含AND、OR、CASE若仅仅判断其整个最终结果而忽略每个条件的取值情况必然会遗漏部分测试路径。 3、条件覆盖 1主要特点条件覆盖要求设计足够多的测试用例使得判定中的每个条件获得各种可能的结果即每个条件至少有一次为真值有一次为假值。 2用例设计 X Y 路径 1 90 70 OBC 2 40 OBD 3优点显然条件覆盖比判定覆盖增加了对符合判定情况的测试增加了测试路径。 4缺点要达到条件覆盖需要足够多的测试用例但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真而不考虑所有的判定结果。 4、判定/条件覆盖 1主要特点设计足够多的测试用例使得判定中每个条件的所有可能结果至少出现一次每个判定本身所有可能结果也至少出现一次。 2用例设计 X Y 路径 1 90 90 OAE 2 50 50 OBDE 3 90 70 OBCE 4 70 90 OBCE 3优点判定/条件覆盖满足判定覆盖准则和条件覆盖准则弥补了二者的不足。 4缺点判定/条件覆盖准则的缺点是未考虑条件的组合情况。 5、组合覆盖 1主要特点要求设计足够多的测试用例使得每个判定中条件结果的所有可能组合至少出现一次。 2用例设计 X Y 路径 1 90 90 OAE 2 90 70 OBCE 3 90 30 OBDE 4 70 90 OBCE 5 30 90 OBDE 6 70 70 OBDE 7 50 50 OBDE 3优点多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例使得判定中每个条件的所有可能结果至少出现一次每个判定本身的所有可能结果也至少出现一次。并且每个条件都显示能单独影响判定结果。 4缺点线性地增加了测试用例的数量。 6、路径覆盖 1主要特点设计足够的测试用例覆盖程序中所有可能的路径。 2用例设计 X Y 路径 1 90 90 OAE 2 50 50 OBDE 3 90 70 OBCE 4 70 90 OBCE 3优点这种测试方法可以对程序进行彻底的测试比前面五种的覆盖面都广。 4缺点由于路径覆盖需要对所有可能的路径进行测试包括循环、条件组合、分支选择等那么需要设计大量、复杂的测试用例使得工作量呈指数级增长。而在有些情况下一些执行路径是不可能被执行的如 If !AB If !AD-- 这两个语句实际只包括了2条执行路径即A为真或假时候对B和D的处理真或假不可能都存在而路径覆盖测试则认为是包含了真与假的4条执行路径。这样不仅降低了测试效率而且大量的测试结果的累积也为排错带来麻烦。 总结 白盒测试是一种被广泛使用的逻辑测试方法是由程序内部逻辑驱动的一种单元测试方法。只有对程序内部十分了解才能进行适度有效的白盒测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性尤其对于大规模复杂软件。因此我们不能穷举所有的逻辑路径即使穷举也未必会带来好运穷举不能查出程序逻辑规则错误不能查出数据相关错误不能查出程序遗漏的路径。 那么正确使用白盒测试就要先从代码分析入手根据不同的代码逻辑规则、语句执行情况选用适合的覆盖方法。任何一个高效的测试用例都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果而是尽可能全面地覆盖每一个逻辑路径。 转载二http://www.cnblogs.com/yinluhui0229/articles/2051482.html 判定覆盖 与 条件覆盖 的区别 判定覆盖只关心判定表达式的值真/假而条件覆盖涉及到判定表达式的每个条件的值真/假。 举个最简单的例子方便理解 判定表达式a1 or b1 用判定覆盖设计的测试数据 a5 判定表达式的值为“真” a0 判定表达式的值为“假” 这里不需要管b的取值就已经满足判定覆盖的条件了。 用条件覆盖设计的测试数据 a5 条件a1的值为“真” a0条件a1的值为“假” b5 条件b1的值为“真” b0 条件b1的值为“假” 这里不考虑 a1 or b1 这个表达式的取值的情况但必须把a1 和 b1 这两个条件的取值考虑全。 转载于:https://www.cnblogs.com/diegodu/p/4514118.html