美文网首页测试小记
10年腾讯测试经验告诉你白盒测试是什么及其测试方法

10年腾讯测试经验告诉你白盒测试是什么及其测试方法

作者: 北国的秋天 | 来源:发表于2021-11-28 22:47 被阅读0次

    白盒测试,也称为结构化测试、基于代码的测试,是一种测试用例设计方法,已知产品的内部工作过程,通过测试证明每种内部操作是否符合设计规格要求。

    它基于程序的控制结构;是基于-一个应用代码的内部逻辑知识;基于覆盖全部代码、分支、路径、条件,导出测试用例。

    白盒测试产生的测试用例检查点:

    保证一个 模块中的所有独立路径至少被使用一-次;

    对所有逻辑值均需测试true 和false ;

    在上下边界及可操作范围内运行所有循环;

    检查内部数据结构以确保其有效性。

    逻辑细节测试的原因:

    逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。当我们设计和实现主流之外的功能、条件或控制时,错误往往开始出现在我们工作中。日常处理往往被很好地了解,而“特殊情况“的处理则难于发现。

    我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。程序的逻辑流有时是违反直觉的,这意味着我们关于控制流和数据流的一-些无意识的假设可能导致设计错误,只有路径测试才能发现这些错误。

    笔误是随机的。当一个程序被翻译为程序设计语言源代码时,有可能产生某些笔误,很多将被语法检查机制发现,但是,其他的会在测试开始时才会被发现。笔误出现在主流上和不明显的逻辑路径上的几率是一样的。

    1逻辑覆盖

    语句覆盖、判断覆盖、条件覆盖

    2语句覆盖

    语句覆盖就是设计若干个测试用例,运行被测程序,使得每一-条可执行语句至少执行次。

    3判断覆盖

    判定覆盖就是设计若千个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。

    判定路径覆盖( Decision-to-Decision Paths Coverage,DDP Coverage )是判定覆盖的一个变体。这里的判定指的是一个序列语句,其起始位置是函数入口或一个判定(如If,while,switch等)的开始,结束位置是下一个判定的开始。

    通过计算哪些判定路径已经走过,哪些没有走过,我们就可以得到DDP覆盖率了。其公式如下:

    DDP覆盖= (至少被执行到一次的判定路径数量) / (系统中判定路径总数)

    4条件覆盖

    条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

    判定一条件覆盖

    判定一条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。

    条件组合覆盖

    条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

    更改条件判定覆盖( Modified Conditions/Decisions Coverage,MC/DC Coverage )

    是判定条件覆盖的一个变体。更改条件判定覆盖主要为多条件测试提供了方便,通过分析条件判定的覆盖来增加测试用例,防止测试的指数上升趋势。

    MC/DC标准满足下列需求:

    被测试程序模块的每个入口点和出口点都必须至少被走一次。并且每一个程序判定的结果至少被覆盖一次。

    通过分解逻辑操作,程序的判定被分解为基本的布尔条件表达式,每个条件独立的佣于判定的结果,覆盖所有条件的可能结果。

    ◆分支条件组合覆盖 ( Branch Condition Combination Coverage )是一种比判定条件覆盖更强的覆盖。它的含义是,设计一定的测试用例,使得每个分支的各操作数值的组合都遍历一次。其计算公式如下:

    分支条件组合覆盖= (被评价到的分支条件组合数) 1 (分支条件组合总数)

    5函数覆盖

    有很多测试工具,例如TrueCoverage ,Logiscope 等,都提供了函数覆盖的概念,函数覆盖是针对系统或一一个子系统的测试的,它表示在该测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大。函数覆盖是一一个比较容易自动化的技术,同时也易于理解。其公式如下:

    函数覆盖= (至少 被执行一次的函数数量) / ( 系统中函数的总数)

    由于函数覆盖也是基于代码的,因此你可以把其归入到白盒的范畴内。

    6基本路径测试

    在程序控制流程图的基础上,导出可以执行的路径集合,设计测试用例。

    Z路径覆盖是路径覆盖的一一个变体。路径覆盖是白盒测试最为典型的问题。着眼于路径分析的测试可称为路径测试。完成路径测试的理想情况是做到路径覆盖。对于比较简的小程序实现路径覆盖是可能做到的。但是如果程序中出现多个判断和多个循环,可能的路径数目将会急剧增长,达到天文数字,以至实现路径覆盖不可能做到。。

    为了解决这一问题,我们必须舍掉- -些次要因素,对循环机制进行简化,从而极大地咸少路径的数量,使得覆盖这些有限的路径成为可能。我们称简化循环意义下的路径覆盖为Z路径覆盖。

    这里所说的对循环化简是指,限制循环的次数。无论循环的形式和实际执行循环体的欢数多少,我们只考虑循环一次和零次两种情况。也即只考虑执行时进入循环体--次和跳过循环体这两种情况。

    对于程序中的所有路径可以用路径树来表示。当得到某-程序的路径树后,从其根结点开始,一次遍历,再回到根结点时,把所经历的叶结点名排列起来,就得到一个路径。如果我们设法遍历了所有的叶结点,那就得到了所有的路径。

    当得到所有的路径后,生成每个路径的测试用例,就可以做到Z路径覆盖测试。

    5函数覆盖

    有很多测试工具,例如TrueCoverage ,Logiscope 等,都提供了函数覆盖的概念,函数覆盖是针对系统或-一个子系统的测试的,它表示在该测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大。函数覆盖是--个比较容易自动化的技术,同时也易于理解。其公式如下:

    函数覆盖= (至少被执行一 -次的函数数量) / ( 系统中函数的总数)

    由于函数覆盖也是基于代码的,因此你可以把其归入到白盒的范畴内。

    6基本路径测试

    在程序控制流程图的基础上,导出可以执行的路径集合,设计测试用例。

    Z路径覆盖是路径覆盖的一个变体。路径覆盖是白盒测试最为典型的问题。着眼于路径分析的测试可称为路径测试。完成路径测试的理想情况是做到路径覆盖。对于比较简的小程序实现路径覆盖是可能做到的。但是如果程序中出现多个判断和多个循环,可能的路径数目将会急剧增长,达到天文数字,以至实现路径覆盖不可能做到。

    为了解决这一问题,我们必须舍掉- -些次要因素,对循环机制进行简化,从而极大地咸少路径的数量,使得覆盖这些有限的路径成为可能。我们称简化循环意义下的路径覆盖为Z路径覆盖。

    这里所说的对循环化简是指,限制循环的次数。无论循环的形式和实际执行循环体的次数多少,我们只考虑循环- -次和零次两种情况。也即只考虑执行时进入循环体一次 和跳过循环体这两种情况。

    对于程序中的所有路径可以用路径树来表示。当得到某一程序的路径树后,从其根结点开始,一次遍历,再回到根结点时,把所经历的叶结点名排列起来,就得到一个路径。如果我们设法遍历了所有的叶结点,那就得到了所有的路径。

    当得到所有的路径后,生成每个路径的测试用例,就可以做到Z路径覆盖测试。

    条件测试路径选择

    当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构。

    对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例;

    对于连锁型分支结构,若有 n个判定语句,需要有2n个测试用例,覆盖它的2n条路径。

    当n较大时将无法测试。

    循环测试路径选择

    循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环。

    简单循环

    零次循环:从循环入口到出口

    次循环:检查循环初始值

    二次循环:检查多次循环

    m次循环:检查在多次循环

    最大次数循环、比最大次数多- -次、 少- -次的循环。

    嵌套循环

    对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值;

    逐步外推,对其外面-层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取”典型”值。

    反复进行,直到所有各层循环测试完毕。

    对全部各层循环同时取最小循环次数,或者同时取最大循环次数。

    人连锁循环

    如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。但如果几个循环不题相独立的,则需要使用测试嵌套循环的办法来处理。

    非结构循环

    这一类循环应该使用结构化程序设计方法重新设计测试用例。

    最后:【可能给你带来帮助的教程】

    点击免费领取软件测试资料 100+ 名企测试内推资源倾情分享,我的学习基地

    这一些资料,对做【软件测试】的朋友而言应该是较为完整了,这类学习资料也陪伴我走过了最艰难的路程,希望也可以帮助到你!万事要尽早,尤其是技术行业,一定要提升技术功底。

    相关文章

      网友评论

        本文标题:10年腾讯测试经验告诉你白盒测试是什么及其测试方法

        本文链接:https://www.haomeiwen.com/subject/rzlrxrtx.html