白盒测试:侧重于系统或部件内部机制的测试,类型分为分支测试(判定节点测试)、路径测试、语句测试。
控制流分析(基于程序结构):控制流分析是一类用于分析程序控制流结构的静态分析技术,目的在于生成程序的控制流图,在编译器设计程序分析、程序理解等领域都有重要应用。
逻辑覆盖测试(对判定的测试)的原理:以程序内部的逻辑结构为基础的用例设计方法,它通过对程序的逻辑结构的遍历,来实现测试对程序的覆盖。
测试覆盖率:度量测试完整性的指标,是测试有效性的一个度量。
覆盖率至少被执行一次的总数总数覆盖率至少被执行一次的总数总数覆盖率=至少被执行一次的����总数����总数
测试覆盖率不需要100%,因为覆盖率越高,测试成本越高。
通常可以设置一个覆盖率达标标准。
语句覆盖:设计测试用例时应保证程序中每一条可执行语句至少应执行一次。(点覆盖)
判定覆盖(分支覆盖):设计测试用例时应保证程序中每个判定节点取得每种可能的结果至少一次。或者程序中每个判定的真分支和假分支至少执行一次。(边覆盖)
条件覆盖:设计测试用例时应保证程序中每个复合判定表达式中,每个简单判定条件(子条件)的取真和取假情况至少执行一次。
判定-条件覆盖:设计测试用例时应满足判定节点的取真、取假分支至少执行一次,且每个简单判定条件(子条件)的取真和取假情况也至少执行一次。即判定覆盖+条件覆盖。
条件组合覆盖:条件组合覆盖,设计测试用例时应满足每个判定节点中,所有简单判定条件(子条件)的所有可能的取值组合情况至少执行一次。通过列出真值表的方式来得到完全的覆盖。
路径覆盖:要求设计足够的测试用例,运行被测程序,覆盖程序中所有可能组合的路径。
程序图:简化的程序流程图,不关注源代码细节,只关注程序的基本结构。
环复杂度:用于描述程序结构复杂度的度量。
基本路径测试:在程序的控制流图的基础上,通过分析控制流程的环路复杂性,导出独立可执行路径集合,从而设计测试用例的方法。
静态白盒测试:又称为结构分析,是在不执行程序的条件下审查软件设计、体系结构和代码,从而找出软件缺陷的过程。测试对象是文档、代码等非计算机执行的部分。
同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】
软件测试视频教程观看处:
【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。
源代码和程序结构。
优点:
缺点:
程序结构有:线性结构(顺序结构),条件判定结构,循环结构,以及这些结构的组合。
复杂程度:
线性结构二分支的条件判定多分支的条件判定循环结构线性结构二分支的条件判定多分支的条件判定循环结构线性结构<二分支的条件判定<多分支的条件判定<循环结构
语句覆盖
缺点:关注语句,而非关注判定节点。对隐式分支无效。
判定覆盖(分支覆盖)
局限性:判定覆盖仅关心表达式的整体取值,并不关心表达式如何构成,不能覆盖到每个子条件的所有取值情况,由此导致测试的漏洞。
条件覆盖
局限性:条件覆盖并不能确保满足判定覆盖。
判定-条件覆盖(分支-条件覆盖)
条件组合覆盖
优点:
- 条件组合覆盖准则满足语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖准则;
- 方法简单;只需要找到所有简单条件,并列出真值表,穷尽所有组合情况即可。
局限性:
- 条件组合覆盖不能保证所有组合的路径被执行;
- 测试用例太多;
- 冗余严重。
路径覆盖
覆盖面最广。
100%满足路径覆盖,一定能100%满足判定覆盖标准;但并不一定能100%满足条件覆盖和判定-条件覆盖,也就不能满足100%条件组合覆盖。
各种覆盖之间的关系
单独采用任何一种逻辑覆盖方法都不能完全覆盖所有的测试用例,任何一个高效的测试用例,都是针对具体测试场景的。
直观观察法
观察程序图将二维平面分割为封闭区域和开放区域的个数。
公式计算法
方法一:
�(�)=�?�+2
其中,�?是边数,?�?是节点或顶点数。
前提条件:单入口单出口。
例题:
�(�)=�?�+2=10?7+2=5
方法二:
�(�)=�?�+1
前提条件:无孤立节点,强连通图。如果非强连通图,则需要先添加辅助线。如下图的蓝线。
简单地说,强连通图就是图中任意两个点相互可达。
�(�)=�?�+1=11?7+1=5
判定节点法
�(�)=�+1
其中,�?是二分支判定节点的个数。
前提条件:仅计算二分支的判定节点。
如果没有判定节点,只有一条执行路径,则�=1。
如上图,二分支判定节点分别有:A,B,C,D。
因此,�(�)=�+1=4+1=5.
特殊情况的计算
环复杂度的计算公式都有特定的前提条件,遇到特殊情况,则使用其它可以使用的公式。
生成路径地图
确定独立路径集合的规模
计算环复杂度�,则需要�条独立路径。
找出一组独立路径。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。