软件测试 - 白盒测试
白盒测试的基本原理
关注对象
-
源代码:
阅读源代码,检验代码的规范性,并对照函数功能查找代码的逻辑缺陷、内存管理缺陷、数据定义和使用缺陷
-
程序结构:
使用与程序设计相关的图标,例如函数调用图、算法流程图,找到程序设计的缺陷,或评价程序的执行效率
优势
- 针对性强,便于快速定位缺陷
- 在函数级别开始工作,缺陷修复的成本低
- 有助于了解测试的覆盖程度
- 有助于代码优化和缺陷预防
不足和弊端
- 对测试人员要求高
- 成本高,准备时间长
白盒测试的经济学问题
- 通过测试无法证明,被测软件系统是没有缺陷的
- 软件测试的经济学问题
- 应对策略二:白盒测试
- 对每一种可能的执行路径进行测试,是否可行
控制流分析技术
控制流分析技术要解决的问题
- 什么因素导致程序结构变得复杂?
- 如何衡量程序结构的复杂程度?
- 控制程序执行流程发生变化的主要因素是什么?
- 如何测试这些因素,并确保测试的效率?
线性结构
void func1(int a){
int b;
b = a 1;
printf("a=%d,b=%d\n",a,b);
}
只有一条可执行路径
条件判定结构
void func2(int a){
int b = 0;
if(a>1){
b = a 1;
}else{
b = a - 1;
}
printf("a=%d,b=%d\n",a,b);
}
void func3(int a){
int b = 0;
switch(a){
case 0:b = a;nreak;
case 1:b = a;nreak;
case 2:b = a;nreak;
default:break;
}
printf("a=%d,b=%d\n",a,b);
}
while-do循环结构
void func4(int a){
int b = 0;
int i = 1;
while(i < 10){
b = b a*i;
i ;
}
printf("a=%d,b=%d\n",a,b);
}
do-while循环结构
void func5(int a){
int b = 0;
int i = 1;
do{
b = b a*i;
i ;
}while(i < 10)
printf("a=%d,b=%d\n",a,b);
}
控制流分析内容
关注判定节点固有的复杂性
- 焦点:判定表达式
- 方法:逻辑覆盖测试
关注判定结构与循环结构对执行路径产生的影响
- 焦点:路径
- 方法:独立路径测试
关注循环结构本身的复杂性
- 焦点:循环体
- 方法基于数据的静态分析
逻辑覆盖测试
逻辑覆盖测试基本准则:
对程序代码中所有的逻辑值均需要测试真值和假值的情况
int func6(int a,int b,int c,int x){
1 if((a>1)&&(b>2))
2 x= c 1;
3 if((a==3)&&(x>3))
4 x= c 1;
5 printf("a=%d,b=%d,c=%d,x=%d\n",a,b,c,x);
6 return x;
}
控制流图
-
代码包含两个简单的判定结构
-
每个判定结构由两个子条件构成
-
4个基本逻辑判定条件
T1:a>1
T2:b<2
T3:a==3
T4:x>3 -
图中T表示True,也就是取真分支
-
F表示False,即取假分支
-
Lij表示执行pi,pj两个子路径
-
4条执行路径
L13:p1→p3
L14:p1→p4
L23:p2→p3
L24:p2→p4
语句覆盖测试
语句测试基本准则:
设计测试用例时,需要保证程序中每一条可执行语句至少应执行一次
测试用例设计
语句覆盖是最弱的一种覆盖标准,它主要存在两种弊端
- 关注语句,而非关注判定节点
- 对隐式分支无效
判定覆盖测试
- 判定覆盖也称为分支覆盖
- 设计测试用例时,应保证程序中每个判定节点取得每种可能的结果至少一次
- 判定覆盖相当于对控制流图进行边覆盖
条件覆盖测试
- 设计测试用例时,应保证程序中每个复合判定表达式中,每个简单判定条件的取真和取假情况至少执行一次
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggakic
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13