软件工程一元二次方程白盒测试
- 格式:docx
- 大小:99.62 KB
- 文档页数:5
软件测试实验报告白盒测试本页仅作为文档页封面,使用时可以删除
This document is for reference only-rar21year.March
软件测试与质量课程实验报告
实验3:白盒测试
掌握静态白盒测试方法及一般要求
掌握白盒测试用例的设计方法
掌握白盒测试基本测试方法:逻辑覆盖、路径测试。
语句覆盖输入数据路径预期输出1A=2,B=5,C=3,1239不能构成三角形2A=15,B=15,C=1512459等边三角形3A=15,B=15,C=13124679等腰三角形4A=23,B=24,C=25124689一般三角形
判定覆盖输入数据路径预期输出1A=2,B=3,C=5,1239不能构成三角形
语句覆
盖
编号输入数据覆盖语句
1array[8,9,10,11] key 101,2,3,8
2array[8,9,10,11] key 251,2,3,9
3array[8,9,10,11] key 81,2,3,6,7
4array[8,9,10,11] key 91,2,3,4,5
判定覆
盖
编号输入数据路径
1array[8,9,10,11] key 10-
2array[8,9,10,11] key 25--10-11-4-12
3array[8,9,10,11] key 8-9-4-5-6-7
果
果
果
7
-1
5
缺席:扣10分实验报告雷同:扣10分实验结果填写不完整:扣1 – 10
分
其他情况:扣分<=5分总扣分不能大于10分
11。
软件测试中的白盒测试技术与方法软件测试是保证软件质量的重要环节,而其中的白盒测试技术与方法更是不可或缺的一部分。
白盒测试旨在验证和评估软件内部结构、逻辑和算法等方面是否正确,以确保软件系统的稳定性和可靠性。
在本文中,将介绍几种常见的白盒测试技术与方法,以及它们在软件测试中的应用。
一、代码覆盖率测试代码覆盖率测试是一种常见的白盒测试技术,它测试了测试集对软件代码的覆盖率,以评估测试的完整性。
常见的代码覆盖率测试方法包括语句覆盖、判定覆盖、条件覆盖和路径覆盖等。
1. 语句覆盖:该方法要求执行测试用例时,所有的代码语句都要被执行到。
这种方法比较简单,但无法检测出代码中隐藏的逻辑错误。
2. 判定覆盖:该方法要求每个判定语句的两个分支都至少执行一次。
通过判定覆盖可以检测出判定语句导致的逻辑错误。
3. 条件覆盖:该方法要求每个判定语句的所有条件取值至少执行一次,包括真值和假值。
通过条件覆盖可以检测出条件语句的错误。
4. 路径覆盖:该方法要求执行测试用例时,覆盖软件代码所有可能的路径。
路径覆盖可以检测出程序中所有可能的执行错误。
二、静态代码分析静态代码分析是通过对代码进行分析,检测其中的潜在问题和错误。
静态代码分析的常见方法包括代码审查、代码检查工具和代码度量等。
1. 代码审查:通过人工对代码进行审查,检测出潜在的问题和错误。
代码审查可以发现一些常见的编程错误和不规范的代码风格。
2. 代码检查工具:利用专门的工具对代码进行分析,自动检测出代码中的问题和错误。
常见的代码检查工具包括lint、FindBugs和PMD 等。
3. 代码度量:通过对代码进行度量分析,评估代码的复杂性和可维护性。
代码度量可以帮助开发人员找出代码中存在的问题,进而改进代码质量。
三、数据流测试数据流测试是一种基于程序的数据流分析技术,用于检测程序中的潜在问题和错误。
数据流测试的关键是确定程序中的数据流关系,并针对这些关系设计测试用例。
1. 数据流分析:通过对程序中的数据流进行分析,确定数据流之间的依赖关系和变化情况。
白盒测试有哪些方法
白盒测试(White-box testing)主要是针对软件的内部结构和代码进行测试。
下面是一些常见的白盒测试方法:
1. 语句覆盖(Statement coverage):确保每个语句都至少被执行一次。
2. 判定覆盖(Decision coverage):确保每个决策点(如if语句)的所有可能结果都被覆盖到。
3. 条件覆盖(Condition coverage):针对每个决策点,测试每个条件的真假两种情况。
4. 路径覆盖(Path coverage):覆盖所有可能的执行路径,包括顺序和条件语句。
5. 循环覆盖(Loop coverage):测试循环结构,包括循环内部可能的执行次数和循环退出条件。
6. 数据流覆盖(Data flow coverage):测试对变量的定义和使用,包括局部变量的赋值、使用和更新。
7. 边界值分析(Boundary value analysis):测试输入的极端情况和边界条件。
8. 等价类划分(Equivalence partitioning):将输入划分为等价的类别,从每个类别中选择一个测试用例进行测试。
9. 控制流分析(Control flow analysis):分析程序的控制流程,构建控制流图并进行测试。
10. 代码复审(Code review):通过对代码进行审查,发现潜在的问题和错误。
这些方法可以根据具体的测试目标和系统特点进行选择和组合使用,以全面覆盖软件的内部结构和代码的各个方面。
软件测试第5章动态测试技术-白盒测试方法第5章动态测试技术(2)-白盒测试方法教学内容:1.掌握白盒测试的基本概念2.掌握逻辑覆盖、基本路径覆盖白盒测试方法3.理解其他白盒测试方法(循环测试、数据流测试、变异测试、域测试、Z路径覆盖)的内容及其对逻辑覆盖测试的补充4.了解白盒测试方法的选择策略课型:新授课教时:8课时教学重点:1.白盒测试基本概念2.逻辑覆盖测试3.基本路径测试4.开源白盒测试工具的使用方法1.白盒测试概述1.定义:根据程序内部的逻辑结构及相关信息设计测试用例2.主要的黑盒测试方法有2.1逻辑覆盖测试2.2基本路径覆盖测试2.3循环测试2.4程序插装2.5程序变异测试2.6其他白盒测试数据流测试域测试Z路径覆盖符号测试2.逻辑覆盖测试1.概述:1.1考察使用测试数据运行被测程序时对程序逻辑的覆盖程度1.2希望选择最少的测试用例来满足所需的覆盖标准1.3常用的覆盖标准语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径覆盖2.实例2.1题目要求:对下列子程序进行测试procedure example(y,z:real;var x:real);beginif (y>1) and (z=0) then x:=x/y;if (y=2) or (x>1) then x:=x+1;end;该子程序接受x、y、z的值,并将计算结果x的值返回给调用程序。
与该子程序对应的流程图如下:该子程序有两个判定:a: (y>1) and (z=0)c: (y=2) or (x>1)判定a中有两个条件:y>1、z=0判定c中有两个条件:y=2 、x>12.2根据程序的执行流程可知:●当判定a为“假”时,判定C中的x就是输入的x值,此时,相对于输入的x而言,判定C中的“x>1”就是“x>1”●当判定a为“真”时,判定C中的x是经过x=x/y计算后的值,此时,相对于输入的x而言,判定C中的“x>1”实际是“x/y>1”,即“x>y”2.3该子程序有四条可执行路径:路径1 sabcde ,其执行条件(L1)是a为“t”且c为“t”L1= {(y>1) and (z=0)} and{(y=2) or (x/y>1)}= (y>1) and (z=0) and (y=2) or(y>1) and (z=0) and (x> y )= (y=2) and (z=0) or(y>1) and (z=0) and (x> y )路径2 sace ,其执行条件(L2)是a为“f”且c为“f”L2 = not{(y>1) and (z=0)} andnot{(y=2) or (x>1)}= { not (y>1) or not (z=0) } and{ not (y=2) and not (x>1) }= not (y>1) and not (y=2) and not (x>1)ornot (z=0) and not (y=2) and not (x>1)=(y≤1) and (x ≤ 1)or(z ≠ 0) and (y ≠ 2) and (x ≤ 1)路径3 sacde ,其执行条件(L3)是 a 为“f”且c 为“t”L3 = not {(y>1) and (z=0)} and {(y=2) or (x>1)}= { not (y>1) or not (z=0)} and {(y=2) or (x>1)} = not (y>1) and (y=2) ornot (y>1) and (x>1) or not (z=0) and (y=2) or not (z=0) and (x>1) = (y ≤ 1) and (x>1) or(z ≠ 0) and (y=2) or (z ≠ 0) and (x>1)路径4 sabce ,其执行条件(L4)是 a 为“t”且c 为“f”L4 = {(y>1) and (z=0)} andnot {(y=2) or (x/y>1)}= (y>1) and (z=0) and not (y=2) and not (x> y) =(y>1) and (z=0) and (y ≠ 2) and (x ≤ y)3. 语句覆盖:3.1 语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次3.2 执行条件L1(t,t )(y=2) and (z=0) or4. 判定覆盖4.1 判定覆盖(也称分支覆盖)是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次(即判定的每个分支至少经过一次) 4.2 执行条件L3(f,t )和L4 (t,f )或者执行条件L1(t,t )和L2(f,f )● 选择执行条件L3(f,t )和L4 (t,f )● L3 =(y ≤ 1) and (x>1) or (z ≠ 0) and (y=2) or (z ≠0) and (x>1)5.条件覆盖5.1条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次6.判定/条件覆盖6.1判定/条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次,并且,每个判定中的每个条件的所有可能结果都至少出现一次6.27.条件组合覆盖7.1条件组合覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中条件结果的所有可能组合都至少出现一次7.2判定a中条件结果的所有可能组合:①y>1,z=0 ② y>1,z ≠ 0③y ≤ 1 ,z=0 ④ y ≤ 1 ,z ≠ 07.3判定c中条件结果的所有可能组合:⑤ y=2,x>1 ⑥ y=2,x ≤ 1 ;8.路径覆盖8.1路径覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能则要求每条环路至少经过一次)9.逻辑覆盖测试需注意的问题9.1在逻辑覆盖测试时,我们强调“运行这些测试用例时”覆盖了被测程序的哪些判定、条件或路径9.2这表明在使用这些测试用例运行被测程序时,能执行到相应的判定、条件或路径9.3当运行测试数据y = 12时,其执行路径是sacg,覆盖了判定a为真的情况(即覆盖y >10)。
软件工程实验报告学号:姓名:专业:年月实验一:白盒测试一、实验目的巩固白盒测试知识,对于给定的待测程序,能熟练应用基本控制流覆盖方法设计测试用例;能够执行白盒测试过程,并撰写白盒测试分析报告。
二、实验内容白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
测试规划基于产品内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试方法。
白盒测试将被测程序看做一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。
白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。
测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试和基本路径测试。
三、程序代码要求:实现对不少于10个随机输入的数的冒泡排序算法。
#include<iostream>using namespace std;int main(){double a[100];int N;int i = 0, j = 0;cin >> N;//排序元素的个数for (i = 0; i <= N; i++){cin >> a[i];}for (i = 0; i < N-1 ; i++) {for (j = 0; j < N - 1 - i; j++){if (a[j] > a[j + 1]) {int tmp;tmp = a[j];a[j] = a[j + 1];a[j + 1] = tmp;}}}for (i = 0; i < N; i++){cout << a[i] <<" ";}cout << endl;return 0;}四、程序流程图五、测试内容(1)语句覆盖测试测试结果:①②测试结果分析:输入元素时需要输入的元素个数大于最初输入的元素个数。
白盒测试包括哪些测试方法和步骤白盒测试是软件测试中一种重要的测试方式,通过检查程序内部结构、逻辑、代码等来评估系统的正确性和质量。
在进行白盒测试时,测试人员需要使用多种测试方法和步骤来确保软件程序没有隐藏的错误或漏洞。
常见的白盒测试方法1.语句覆盖(Statement Coverage): 这是最基本的白盒测试方法之一,通过执行所有的程序语句至少一次来检查测试用例的完成程度。
2.判定覆盖(Decision Coverage): 确保每个条件语句的每个判定结果都被覆盖到,以充分验证程序的逻辑分支。
3.条件覆盖(Condition Coverage): 确保每个条件的True和False都至少被执行一次,进一步测试程序的逻辑路径。
4.路径覆盖(Path Coverage): 确保程序的所有可能路径都被覆盖到,以检查程序流程的完整性。
5.循环覆盖(Loop Coverage): 针对程序中的循环结构,测试循环的执行次数、边界条件等,确保循环逻辑正确。
白盒测试的基本步骤1.制定测试计划: 确定测试的目标、范围和方法,制定详细的测试计划,明确测试资源和时间。
2.编写测试用例: 根据需求和设计文档编写测试用例,涵盖语句覆盖、分支覆盖等各种覆盖要求。
3.执行测试用例: 按照测试计划执行编写好的测试用例,并记录测试结果,包括通过和失败的情况。
4.分析测试结果: 对测试结果进行分析,查找失败的用例产生的原因,定位问题的根源。
5.修改代码: 根据测试结果对代码进行修改和调试,修复出现的错误或漏洞。
6.重新测试: 在修改代码后重新执行相应的测试用例,确认问题是否已经解决。
7.结束测试: 当所有测试用例都通过,确认软件符合要求时,测试即可结束。
总的来说,白盒测试是一种全面、细致的测试方式,需要结合多种测试方法和步骤来保证软件质量和稳定性。
通过充分的白盒测试,可以有效减少软件在生产环境中出现的问题,提高软件的可靠性和性能。
软件测试中的黑盒测试和白盒测试在软件开发过程中,测试是不可或缺的一个环节。
软件测试的目的是评估软件系统在某些条件下的行为,以检测软件是否符合设计规范,是否满足用户需求。
为了验证软件系统的正确性和健壮性,人们开发了各种测试技术,其中最常用的是黑盒测试和白盒测试。
黑盒测试黑盒测试是一种测试技术,它将软件系统视为一个未知的黑盒子,只测试软件系统的输入和输出,而不关心软件系统的内部结构和实现细节。
测试人员只关注系统的可用性、完整性、正确性、稳定性、安全性等方面,通过一系列的测试用例来检验软件的功能是否正常、是否符合用户需求。
黑盒测试通常只能检测软件系统的功能缺陷,对于软件的性能缺陷和安全性缺陷等其他方面的问题无法有效地检测。
黑盒测试的特点是测试人员对系统的内部结构和实现一无所知,只关注软件系统的功能和性能,以用户的角度去测试软件。
黑盒测试充分利用测试人员的测试技能和经验,直接从用户的角度出发,对软件进行功能和性能测试,为软件的质量保证提供了有效的手段。
白盒测试白盒测试是一种测试技术,它将软件系统视为一个透明的白盒子,测试人员可以直接看到软件系统的内部结构和实现细节,通过检查软件系统的源代码和内部数据结构来测试软件系统的正确性。
白盒测试不仅可以检测软件系统的功能缺陷,还可以有效地检测软件系统的性能缺陷和安全性缺陷等其他方面的问题。
白盒测试的特点是测试人员可以知道软件系统内部的结构和实现细节,可以在测试过程中直接访问软件系统的源代码和内部数据结构,检查软件系统的正确性和健壮性。
白盒测试不仅需要测试人员具备深厚的测试技术和经验,还需要测试人员具备良好的程序设计和编码能力,以便理解和分析软件系统的内部结构和实现细节。
黑盒测试和白盒测试的比较黑盒测试和白盒测试各有优缺点,根据不同的测试目的和测试情况,选择不同的测试技术可以得到更好的测试效果。
对于黑盒测试和白盒测试的比较,可以从以下几个方面进行了解和分析。
1. 测试方法黑盒测试是从用户的角度出发,以功能和性能为主要目标,测试人员只需要关注系统的输入和输出,可以通过场景测试、边界测试、等价类测试等方法进行测试。
4.完成软件白盒测试技术中的逻辑覆盖测试应用设计实验。
(理论考试重点内容实践)
一元二次方程白盒测试要求
1) 自备C语言程序(可从C语言程序设计的教科书上摘录若干典型程序,其他C++、C#、Java
程序均可);
#include
#include
using namespace std;
int main()
{
float a,b,c,mid,x1,x2,real,image;
cout << "请输入三个实数:";
cin >>a>>b>>c;
cout <<"\n方程";
if(fabs(a)<= 0)
cout << "不是二次方程,解为:"<< -c/b<
mid= b*b-4*a*c;
if(fabs(mid)<= 0)
cout <<"有两个相等的实数根:"<<-b/(2*a)<
{
x1=(-b+sqrt(mid))/(2*a);
x2=(-b-sqrt(mid))/(2*a);
cout << "有两个不相等的实数根:"<
else
{
x1 = -b/(2*a);
x2 = sqrt(-mid)/(2*a);
cout <<"有两个复数根:"<
}
}
2) 根据该程序绘制对应的程序流程图;
3) 分别根据程序流程图给出符合语句覆盖、判定覆盖、条件覆盖、路径覆盖以及判定/条
件覆盖和条件组合覆盖的的测试用例以及预期的运行结果;
语句覆盖
测试用例 期望结果 路径 测试结果
A=0 b=任意c=任意 不是二次方程
1-2
A=1 b=6 c=4 求两个不等实根 1-2-3-4-5-9 X1=-0.38 x2=-2.618
A=1 b=4 c=4 两个相等的实数根 1-2-3-4-6-7-9 X1=x2=2
A=6 b=6 c=2 求两个复数根 1-2-3-4-6-8-9 X1=-0.5+0.866i
x2=-0.5-0.866i
判定覆盖、条件覆盖、路径覆盖以及判定/条件覆盖和条件组合覆盖
测试用例 期望结果 路径 测试结果
A=0 b=任意c=任意 不是二次方程
1-2
A=1 b=6 c=4 求两个不等实根 1-2-3-4-5-9 X1=-0.38 x2=-2.618
A=1 b=4 c=4 两个相等的实数根 1-2-3-4-6-7-9 X1=x2=2
A=6 b=6 c=2 求两个复数根 1-2-3-4-6-8-9 X1=-0.5+0.866i
x2=-0.5-0.866i
4) 根据程序流程图画出流图,并确定线性独立路径的基本集合,然后给出符合各集合的测
试用例;
路径1:1-2-12
路径2:1-2-3-4-5-10-11
路径3:1-2-3-4-6-7-9-10-11
路径4:1-2-3-4-6-8-9-10-11
5) 根据上述测试用例执行程序,对比实际运行结果和预期运行结果,结果比对最好采用表格
的形式。
预期运行结果 实际运行结果
不是二次方程
求两个不等实根
X1=-0.38 x2=-2.618
两个相等的实数根
X1=x2=2
求两个复数根
X1=-0.5+0.866i x2=-0.5-0.866i
6) 对以上实验结果进行适当地分析与总结。
本次实验主要是运用白盒测试的方法,设计测试用例。白盒测试主要包括语句覆盖、判
定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。白盒测试试图穷举路径测试,
一般来说,穷举路径测试是不可能的,即使每条路径都测试了,也还是有可能出错。通过本
次实验,还了解了各种覆盖的区别与联系。