2020-09-23


白盒测试

昨天去面试了两家公司,一个是车企另一个是还算不错的大厂,以至于停更了一天,今日继续!/font>


白盒测试在我面试过程中其实问到的并不算多,但是笔试部分考的不少。

一、白盒测试技术概述

1.基本原理和特点

原理:白盒测试基于软件的源代码,已知产品的内部工作过程,主要是对程序内部结构展开测试,关注程序实现的细节。
但是!!!白盒测试关注的对象并非一行行源码,而是→源代码和程序结构
(1)源代码:直接查看源代码规范性并对照函数功能查找代码的逻辑缺陷、内存管理缺陷、数据定义和使用缺陷。
(2)程序结构:即通过函数调用图、算法流程图等反映程序设计的相关图表找出程序涉及的缺陷。

两大优势
(1)针对性强,测试效率高,通过不同的白盒覆盖指标有助于衡量对被测对象的测试覆盖程度。
(2)在函数级别开始测试工作,缺陷修复的成本低。

2.适用阶段

随着被测对象粒度的变化,白盒测试方法也可以适用于不同的测试阶段:
(1)当被测对象为函数时,白盒测试完成的实对函数代码和结构的测试,关注函数的源代码逻辑是否符合功能的要求。
(2)当被测对象为功能时,白盒测试不再对源码进行检查,更多的是借鉴白盒测试方法的思想完成业务流程的覆盖测试。

二、静态白盒测试(阅读代码)

1.代码检查

通过同行评审的方法来发现缺陷,即基于缺陷预防的思想,以评审会议为形式,多人对软件进行检查从而发现缺陷或获得改进优化的机会。
同行评审的方法分类:审查、团队评审、走查等。

2.静态结构分析

(1)原理
通过分析引入多种形式的图表,帮助人们快速了解程序设计和结构,更好的理解源代码,以及找到程序涉及缺陷和代码优化的方向。
(2)函数调用关系图测试重点(树形图)
a.函数之间的调用关系是否符合要求
b.是否存在递归调用
c.函数调用层次是否太深
d.是否存在孤立的函数
f.根节点是需要优先测试的
g.叶子节点也是要优先测试的
h.接口数量多的节点是需要有优先测试的。
(3)函数控制流图测试重点(节点和边组成的有向图)
a.是否存在多个出口
b.是否存在孤立的语句
c.环复杂度是否太大
d.是否存在非结构化的设计(通常由goto、break等语句造成)

3.静态质量度量法

(1)软件质量
·功能性
·可靠性
·可用性
·有效性
·可维护性
·轻便性
(2)质量度量
优良一般差

!!!重点来了。。。。。

3.对判定的测试

(1)基本原理
由于判定语句的存在导致路径增加因此数据变量可能会被错误的赋值,构成表达式本身可能是多个简单的逻辑条件通过或与关系连接而形成的一个复杂的式子,故对判定表达式的测试主要是通过对程序逻辑结构进行遍历,对源代码种所有的逻辑值均需要测试真值和假值两种情况。
(2)测试用例的设计
1)语句覆盖
设计测试用例时应当保证每条语句都至少执行一次,等同于对图中所有的节点的覆盖.
a.在测试用例方面仅需要使得所有判定表达式均为真即可
b.存在的问题:
关注语句而非判定表达式;
对隐式分支无效。

2)判定覆盖
保证程序中每个判定节点的取真和取假分支至少执行一次
a.测试用例相对于语句覆盖有所增加,且测试重点转向判定节点,具有更强的测试覆盖能力。
b.判定覆盖指标并未彻底分析每个简单的判定条件的取值情况,还是可能会导致遗漏部分缺陷

3)条件覆盖
设计测试用例时应保证程序中每个复合判定表达式种,每个简单判定条件的取真和取假至少执行一次。
a.实现测试进一步覆盖
b.部分用例无法实现条件判断双覆盖

4)判定/条件覆盖
测试用例既要满足判定覆盖中的每个判定节点的取真和取假至少执行一次还要满足条件覆盖中的每一个复杂表达式中的简单判定表达式的取真取假都要至少执行一次。
a.较为完善的覆盖指标
b.找到这样的测试用例太难了,尽管可以拆分||和&&,但是会造成语句的增加进而使得测试用例本身会出现错误

5)条件组合覆盖
测试用例的设计应该满足每个判定节点中,所有简单判定条件的所有可能的取值组合情况应至少执行一次。
a.指标完备
b.测试用例数量惊人

4.对路径的测试

(1)基本原理
路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。
理想情况:路径覆盖
(2)基本路径测试方法
某一程序的每一个独立路径都被测试过那么可以认为程序中的每个语句都已经检验过了即达到了语句覆盖。
1)四个步骤
a.画程序流图
b.计算三环复杂度
c.导出基本路径集
d.根据基本路径集设计测试用例
2)程序控制流图
是对程序流程图简化以后得到的,突出表现程序控制流的结构。
3)程序环复杂度
用于基本路径测试,可以提供:程序基本集的独立路径数量、确保所有语句至少被执行一次的测试。
环复杂度=控制流图中的边数-控制流图中的节点数+2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值