实验5_白盒测试上机实验

实验5_白盒测试上机实验
实验5_白盒测试上机实验

实验五白盒测试

一、实验目的

1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术

和方法;

2、通过实验和应用,逐步提高和运用白盒测试技术解决实际测试问题的能力。

3、掌握决策表和因果图的测试用例设计方法

二、实验内容

1.

程序代码如下:

int result(int x, int y, int z) Array {

int k=0,j=0;

if((x

k=x+y;

if((x==10)||(y>3))

j=x*y;

return k+j;

}

要求:

写出以上程序的语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、多条件组合覆盖测试用例。

答:语句覆盖:令x=10,y=11,z=4.满足“x3”这两个条件,刚好覆盖了路径1—2—4.

判定覆盖:

条件覆盖:

对于第一个判断:x>y取真时为T1,取假时F1

z<5取真时为T2,取假时F2

对于第二个判断:x=10取真时为T3,取假时F3

y>3取真时为T4,取假时

F4

判定——条件覆盖:

多条件组合覆盖:

2.

问题:插入函数int insert(int a[],int val,int pos)。

功能:将成绩插入到成绩数组的指定位置,数组最大可以容纳200个成绩。

参数:a为成绩数组,val为成绩值,pos为插入的位置(应在1——实际成绩个数+1之间)

返回值:插入失败返回-1(如超过范围),成功返回实际长度(即实际成绩个数)Java 代码如下:

int insert(int a[],int val,int pos){

1 int i ;

2 int len=getArrValConut(a) ;//获取数组a中实际成绩个数

3 if(pos<1|| pos>len) //验证实际范围

4 return -1 ;

5 if(len=200)//验证是否超过数组最大长度

6 return -1 ;

7 for(i=len-1 ;i>=pos ;i--)//从插入位置开始后移,以将插入位置空出

8 a[i+1]=a[i] ;

9 a[pos-1]=val ;//插入

10 return len ;

}

要求:

1、静态代码检查,程序中哪几处有问题?找出并更正

2、画出程序控制流图

3、计算环路复杂性

4、确定独立路径集

5、给出针对每条独立路径的测试用例(注意数组的前置状态:如当前实际成

绩个数)

1、静态代码检查,程序中哪几处有问题?找出并更正

if(len=200) if(len==200)

for(i=len-1 ;i>=pos ;i--) for(i=len-1 ;i>=pos-1 ;i--)

2、画出程序控制流图

三、测试心得体会

此次试验在代码方面耗时间比较多,最主要的是代码不熟,希望在接下来的日子加强这方面的训练。

实验1-白盒测试实验报告

实验1-白盒测试实验报告

第一章白盒测试 实验1 语句覆盖 【实验目的】 1、掌握测试用例的设计要素和关键组成部 分。 2、掌握语句覆盖标准,应用语句覆盖设计测 试用例。 3、掌握语句覆盖测试的优点和缺点。 【实验原理】 设计足够多的测试用例,使得程序中的每个语句至少执行一次。 【实验内容】 根据下面提供的程序,设计满足语句覆盖的测试用例。 1、程序1源代码如下所示: #include void main()

{ int b; int c; int a; if(a*b*c!=0&&(a+b>c&&b+c>a&&a+c>b)) { if(a==b&&b==c) { cout<<"您输入的是等边三角形!"; } else if((a+b>c&&a==b)||(b+c>a&&b==c)||(a+c> b&&a==c)) { cout<<"您输入的是等腰三角形!"; } else if((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a* a+c*c==b*b)) { cout<<您输入的是直角三角形"; }

else { cout <<”普通三角形”; } } else { cout<<"您输入的不能构成一个三角形!"; } } 输入数据预期输出 A=6,b=7,c=8普通三角形 A=3,b=4,c=5直角三角形 A=4,b=2,c=4等腰三角形 A=1,b=1,c=1等边三角形 A=20,b=10,c=1非三角形 2、程序2源代码如下所示: void DoWork(int x,int y,int z) {

实验二 白盒测试

白盒测试实验 一实验内容 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法; 2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合 覆盖、路径覆盖进行测试。 3、通过试验和应用,要逐步提高和运用白盒测试 技术解决实际测试问题的能力; 4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法; 5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例, 测试报告等) 二实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。 对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。

语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。 判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。 条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。 判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。 条件组合覆盖是指选择足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位找条件组合)。 注:a,条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 b,不同的判断语句内的条件取值之间无需组合。 c,对于但条件的判断语句,只需要满足自己的所有取值即可。 选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。 路径覆盖是分析软件过程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。 三实验方法 1、语句覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=1,y=-1 0 F T acdf 2、判定覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=1,y=-1 0 F T acdf 3、条件覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=-1,y=-1 0 T T acdf 4、判定/条件覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=-1,y=-1 0 T T acdf

软件测试实验二(三角形白盒测试)报告

实验二测试报告 一、核心程序代码 /** 判断三角形的类 */ public class TriangleTestMethod { /** 判断三角形的种类。参数a, b, c分别为三角形的三边, * 返回的参数值为0,表示非三角形; * 为1,表示普通三角形; * 为2,表示等腰三角形; * 为3,表示等边三角形。 */ public static int comfirm(int a, int b, int c) { if((a + b > c) && (b + c > a) && (a + c > b)) { // 判断为三角形 if((a == b) && (b ==c)) // 判断为等边三角形 return 3; if((a == b) || (b == c) || (a == c)) // 判断为等腰三角形 return 2; else // 判断为普通三角形 return 1; } else { // 为非三角形 return 0; } } }

二、程序流程图 ① N a + b > c && b + c > a && a + c > b Y ② Y a == b && b ==c N ④ a == b || b == c || a == c N Y ③⑥⑦⑤ Return 3 Return 1 Return 2 Return 0 Exit 三、测试用例 1.语句覆盖测试用例: 输入期望输出覆盖对象测试结果 Case1 Case2 Case3 Case4 a=1, b=2, c=3 a=3, b=4, c=5 1 2 3 ①,⑤0 1 2 3 ①,②,④,⑥ ①,②,④,⑦ ①,②,③ a=3, b=3, c=4 a=3, b=4, c=5 2.判定覆盖测试用例 输入期望输出覆盖对象测试结果 Case11 Case12 Case13 Case14 a=1, b=2, c=3 a=3, b=4, c=5 a=3, b=3, c=4 a=3, b=4, c=5 1 2 3 ①,⑤0 1 2 3 ①,②,④,⑥ ①,②,④,⑦ ①,②,③

软件测试实验报告(测试计划+黑盒测试+白盒测试)

河北民族师范学院 软件测试课程设计报告 题目:NextDate函数 姓名: 班级: 学号: 指导老师: 2014.10.9 目录 第1章软件测试的概念和设计要求 (3) 1.1 测试目的 (3) 1.2 测试选题 (4) 1.3测试人员 (4) 1.4测试方法 (4) 1.5 测试资料及参考书 (4) 1.6关于黑盒测试 (4) 1.7 关于白盒测试 (5) 1.8、黑盒测试与白盒测试的比较 (6) 1.9 软件测试过程 (6) 1.10数据整理 (7) 第2章NextDate函数问题 (8) 2.1NextDate函数的黑盒测试 (8) 2.1.1.问题描述: (8) 2.1.2.程序代码(开发环境:Windowsxp xp、java): (8) 2.1.3.测试方法 (9) 2.1.4.测试用例设计 (9)

2-2NextDate函数的白盒测试 (11) 2.2.1核心程序代码 (11) 2.2.2程序流程图 (12) 2.2.3 测试用例 (12) 2.2.4程序控制流图 (14) 设计心得与体会 (14) 第1章软件测试的概念和设计要求 1.1 测试目的 1.练习和掌握软件测试管理的一般过程与步骤; 2.掌握测试管理的人工过程和能够通过相关管理软件实现以下工作: a)配置软件资产信息、软件需求、软件模型和缺陷数据库; b)创建和管理多个测试组和用户; c)配置测试环境、编写详细测试计划、安排测试进度; d)设计测试脚本、测试用例; e)实施测试、执行测试和评估测试。 1.2 测试选题 NextDate函数; 1.3测试人员 张@@:软件测试计划及相关资料的编写与收集。 李@@:对特定问题编写程序代码,并对其进行黑盒测试。 王@@:对特定问题编写程序代码,并对其进行白盒测试。 1.4测试方法 对于选题,使用黑盒测试技术,测试内容包括等价类划分测试、边界值分析测试、决策表方法使用。 使用白盒测试技术,测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试及基本路径测试。

[求职简历]白盒测试实验报告

软件测试实验二 一:实验目的 1.通过实验熟悉测试用例设计 2.通过实验熟悉白盒测试 二:实验内容1: 1.用java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法: void DoWork(int x,int y,int z) { int k=0,j=0; if((x>3)&&(z<10)) { k=x*y-1; //语句块1 j=sqrt(k); } if((x= =4)||(y>5)) { j=x*y+10; //语句块2 } j=j%3; //语句块3 } 试验内容2: 1、画出上面函数的流程图。 2、分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例(注意测试用例的格式)。 3、执行每个测试用例,执行完毕后填写测试用例。

二:程序 public class Test { static void dowork(int x,int y,int z) { int k=0,j=0; if((x>3)&&(z<10)) { k=x*y-1; j=(int)Math.sqrt(k); } if((x==4)||(y>5)) { j=x*y+10; } j=j%3; System.out.println("k="+k); x>3 and z<10 x==4 or y>5 k=x*y-1 j=sqrt(k) T F T a c e b j=j%3 j=x*y+10 F d

System.out.println("j="+j); } public static void main(String[] args) { dowork(4,6,5); } } 三:设计测试用例 1.语句覆盖 x=4,y=6,z=5 2.判定覆盖 x,y,z (x>3) and (z<10) (x=4) or (y>5) 执行路径4,6,7 真真ace 2,5,10 假假abd 3.条件覆盖 x>3为真,记为T1 x>3为假,记为-T1 z<10为真,记为T2 z<10为假,记为-T2 x=4为真,记为T3 x=4为假,记为-T3 y>5为真,记为T4 y>5为假,记为-T4 x,y,z 执行路径覆盖条件覆盖分支3,5,5 abe -T1,T2,-T3,T4 be 4,4,11 abe T1,-T2,T3,-T4 be 4.判定—条件覆盖 x,y,z 执行路径覆盖条件覆盖分支 1 4, 4, 5 ace T1,T2,T3,T4 ce 2 2, 6,11 abd -T1,-T2,-T3,-T4 bd 5.条件组合覆盖 1.X>3,Z<10,记为T1,T2 2.X>3,Z>=10,记为T1,-T2 3.X<=3,Z<10,记为–T1,T2 4.X<=3,Z>=10记为–T1,-T2 5.X=4,Y>5 记为T3,T4

实验二 白盒测试 (2)

实验二白盒测试 一、实验目的 1、掌握白盒测试的基本方法; 2、掌握白盒测试用例的编写。 二、实验要求 1、根据给出的程序分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例。 2、输入数据进行测试,填写测试用例。 三、实验内容 1、用C++或者Java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法:void DoWork(int x,int y,int z) { int k=0,j=0; if((x>3)&&(z<10)) { k=x*y-1; //语句块1 j=sqrt(k); } if((x= =4)||(y>5)) { j=x*y+10; //语句块2 } j=j%3; //语句块3 } 要求: (1)画出上面函数的流程图。

(2)分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条 件组合测试、路径测试设计测试用例(注意测试用例的格式)。 语句覆盖: 用例:x=4,y=6,z=8 判定覆盖: 用例1:x = 4 , y = 6 , z = 8 用例2:x = 3 , y = 5 , z = 8 条件覆盖: 用例1:x=3,y=8,z=8 用例2:x=4,y=5,z=13 判定-条件覆盖: 用例1:x=4,y=8,z=8 用例2:x=3,y=5,z=13 条件组合测试 用例1:x=4,y=8,z=8 用例2:x=4,y=3,z=13

用例3:x=2,y=8,z=8 用例4:x=2,y=3,z=13 路径测试: 用例1:x=4,y=8,z=8 用例2:x=4,y=3,z=13 用例3:x=6,y=2,z=8 用例4:x=2,y=3,z=13 (3)执行每个测试用例,执行完毕后填写测试用例。 2、用C++或者Java编写“计算被输入日期是星期几,例如公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几。”测试用例; 程序说明: A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数; B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)。 要求: (1)分析各种输入情况,结合程序输出结果,并给出详细测试用例; (2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例; (3)决策表测试法; ①列出输入变量month、 day、 year的有效等价类;(条件桩) ②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩) ③画出决策表(简化); ④根据决策表,给出详细测试用例。 代码: #include using namespace std; int main(){ int x=1,year, month, day; while(x) { int i, num=0,total, total1, total2; cout<<"请输入年份: "; cin>>year; cout<<"请输入月份: "; cin>>month; cout<<"请输入日期: "; cin>>day; //求得输入年份之前一年末的总天数 for(i=1; i

白盒测试实验报告

实验报告 一、实验目的 1.熟练掌握如何运用基路径测试方法进行测试用例设计。 2.初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。 二、实验内容 1、题目 前一日函数PreDate是NextDate的逆函数(代码实现见下),实现功能为:输入1800 年到2050 年之间的某个日期,函数返回这一天的前一天的日期。(此处不考虑无效输入)请采用基路径方法对前一日函数进行测试用例设计,并利用程序插装技术对测试用例的判定覆盖率进行检查分析。 代码:(被测函数为PreDate) #include"" typedef struct MyDate{ int month; int day; int year; }MyDate; MyDate PreDate(MyDate date); int Leapyear(int year); void Print(MyDate date); MyDate PreDate(MyDate date) //输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据{ yesterday; = ; // initialization = ; = ; days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31}; //初始化每月天数,其中2月不确定,初始化为0 >1) else {

==1) { } if==3) { (Leapyear) { } else { } } else { } } yesterday; } Leapyear(int year) { ((year%4==0&&year%100!=0) || (year%400==0)) 1; return 0; } void Print(MyDate date) { ("%d--%d--%d\n",,,; } 2、测试用例设计 1)控制流图

软件测试白盒测试实验报告

7.使用白盒测试用例设计方法为下面的程序设计测试用例: ·程序要求:10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球。 ·程序设计思路:第一次使用天平分别称5个球,判断轻的一边有假球;拿出轻的5个球,拿出其中4个称,两边分别放2个球;如果两边同重,则剩下的球为假球;若两边不同重,拿出轻的两个球称第三次,轻的为假球。 【源程序】 using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; namespace Test3_7 { [TestFixture] public class TestGetMinValue { [Test] public void AddTwoNumbers() { Random r = new Random(); int n; int[] a=new int[10]; n = r.Next(0, 9); for (int i = 0; i < a.Length; i++) { if (i == n) a[i] = 5; else a[i] = 10; } GetMin gm = new GetMin(); Assert.AreEqual(n,gm.getMinvalue(a)); }

} public class GetMin { public int getMinvalue(int[] m) { double m1 = 0, m2 = 0, m3 = 0, m4 = 0; for (int i = 0; i < 5; i++) { m1 = m1 + m[i]; } for (int i = 5; i < 10; i++) { m2 = m2 + m[i]; } if (m1 < m2) { m3 = m[1] + m[0]; m4 = m[3] + m[4]; if (m3 > m4) { if (m[3] > m[4]) return 4; else return 3; } else if (m3 < m4) { if (m[0] > m[1]) return 1; else return 0; } else return 2; } else { m3 = m[5] + m[6]; m4 = m[8] + m[9]; if (m3 < m4) { if (m[5] > m[6]) return 6;

白盒测试实验报告-范例

实验报告书 实验一白盒测试 学生姓名:李庆忠 专业:计算机科学与技术学号:1341901317

白盒测试实验报告 一实验内容 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法; 2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合 覆盖、路径覆盖进行测试。 3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力; 4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法; 5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例, 测试报告等) 二实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。 流程图如下图所示 实验代码 #include"stdio.h"

int main() { int x,y,z; scanf("%d%d",&x,&y); if((x>0)&&(y>0)) { z=x+y+10; } else { z=x+y-10; } if(z<0) { z=0; printf("%d\n",z); } else { printf("%d\n",z); } return 0; } 语句覆盖是指选择足够的测试,使得程序中每个语句至少执行一次。如选择测试x=1,y=1和x=1,y=-1可覆盖所有语句。 判定覆盖是指选择足够的测试,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。选择测试x=1,y=1和x=1,y=-1可覆盖所有判定。 条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。选择测试x=1,y=1和x=-1,y=-1可覆盖所有条件。 判定/条件覆盖是指选择足够多的测试,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。选择测试x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。 条件组合覆盖是指选择足够的测试,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位找条件组合)。 注:a,条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 b,不同的判断语句内的条件取值之间无需组合。 c,对于但条件的判断语句,只需要满足自己的所有取值即可。 选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。 路径覆盖是分析软件过程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。

白盒测试和黑盒测试实验报告

软件质量保证与测试 实验指导 计算机工程学院

测试环境配置 1.setting Junit (1) start Eclipse Select windows-preferences-java-build path –class path variables (2) click new, the figure of new variable entry is shown. (3) name JUNIT_LIB

select file-选择JUnit 插件所对应的JAR文件所在地,在Eclipse的安装目录的plugins目录中 2.JUNIT的组成框架 其中,junit.framework 和junit.runner是两个核心包。 junit.framework 负责整个测试对象的框架 junit.runner 负责测试驱动 Junit的框架又可分为: A、被测试的对象。 B、对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。

C、测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。 D、测试结果的描述与记录。(TestResult) 。 E、每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure) F、JUnit Framework中的出错异常(AssertionFailedError)。 JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test 的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法。 3.JUnit中常用的接口和类 Test接口——运行测试和收集测试结果 Test接口使用了Composite设计模式,是单独测试用例(TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。 它的public int countTestCases()方法,它来统计这次测试有多少个TestCase,另外一个方法就是public void run(TestResult ),TestResult是实例接受测试结果,run方法执行本次测试。 TestCase抽象类——定义测试中固定方法 TestCase是Test接口的抽象实现,(不能被实例化,只能被继承)其构造函数TestCase(string name)根据输入的测试名称name创建一个测试实例。由于每一个TestCase在创建时都要有一个名称,若某测试失败了,便可识别出是哪个测试失败。 TestCase类中包含的setUp()、tearDown()方法。setUp()方法集中初始化测试所需的所有变量和实例,并且在依次调用测试类中的每个测试方法之前再次执行setUp()方法。tearDown()方法则是在每个测试方法之后,释放测试程序方法中引用的变量和实例。 开发人员编写测试用例时,只需继承TestCase,来完成run方法即可,然后JUnit获得测试用例,执行它的run方法,把测试结果记录在TestResult之中。 Assert静态类——一系列断言方法的集合 Assert包含了一组静态的测试方法,用于期望值和实际值比对是否正确,即测试失败,Assert类就会抛出一个AssertionFailedError异常,JUnit测试框架将

最新白盒测试实验报告-范例

广西科技大学计算机学院《软件测试技术》实验报告书 实验一白盒测试 学生姓名:xxxx 学号:xxxx 班级:xxxx 指导老师:xxxxx 专业:计算机学院软件工程 提交日期:2014年10月20日

白盒测试实验报告 一实验内容 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法; 2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合 覆盖、路径覆盖进行测试。 3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力; 4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法; 5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例, 测试报告等) 二实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。 对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。

语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。 判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。 条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。 判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。 条件组合覆盖是指选择足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位找条件组合)。 注:a,条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 b,不同的判断语句内的条件取值之间无需组合。 c,对于但条件的判断语句,只需要满足自己的所有取值即可。 选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。 路径覆盖是分析软件过程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。 三实验方法

白盒测试实验报告

白盒测试实验报告 一实验内容 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法; 2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合 覆盖、路径覆盖进行测试。 3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力; 4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法; 5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例, 测试报告等) 二实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。 对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。 语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。如上例选择测

试用例x=1,y=1和x=1,y=-1可覆盖所有语句。 判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。 条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。 判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。 条件组合覆盖是指选择足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位找条件组合)。 注:a,条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 b,不同的判断语句内的条件取值之间无需组合。 c,对于但条件的判断语句,只需要满足自己的所有取值即可。 选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。 路径覆盖是分析软件过程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。 三实验方法 1、语句覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=1,y=-1 0 F T acdf 2、判定覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=1,y=-1 0 F T acdf 3、条件覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=-1,y=-1 0 T T acdf 4、判定/条件覆盖 测试用例输入输出magic 判定M的取值判定N的取值覆盖路径 x=1,y=1 12 T F abef x=-1,y=-1 0 T T acdf 5、条件组合覆盖

软件测试-实验2-白盒测试案例分析

实验2 白盒测试 一、实验目的与要求 1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用 2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力 3、掌握路径法测试 二、实验设备 1、电脑PC 三、实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。 1、语句覆盖 语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。 2、判定覆盖 又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。 判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。 3、条件覆盖、条件判定覆盖 条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。 条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。 4、条件组合覆盖 又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。线性地增加了测试用例的数量。 5、基本路径法 在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。在基本路径测试中,设计出的测试用例要保证在测试中程序的每条可执行语句至少执行一次,在基本路径法中,需要使用程序的控制流图进行可视化表达。

白盒测试实验报告范本

实验一:白盒软件测试 一、实验目的 通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。 二、实验内容 背景: 被测测试程序功能:计算被输入日期是星期几; 程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几; 测试环境:Windows vista、Dev C++; 说明:本次测试采用插桩测试法,由于程序简单,手动输入测试用例。 程序说明: A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数 B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0) (1)分析各种输入情况,结合程序输出结果,并给出详细测试用例; (2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例; (3)决策表测试法; ①列出输入变量month、 day、 year的有效等价类;(条件桩) ②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩) ③画出决策表(简化); ④根据决策表,给出详细测试用例。 代码:(被测部分为while循环内部语句) #include using namespace std; int main() { int x=1,year, month, day; while(x) { 1.int i, num=0,total, total1, total2; 2.cout<<"请输入年份: "; 3.cin>>year; 4.cout<<"请输入月份: "; 5.cin>>month;

白盒测试方法实验报告

实验报告 课程名称软件测试题目白盒方法测试 院系信息工程学院 班级计算机 学号 学生姓名 指导老师 日期 2019年

一、实验题目 白盒方法测试 二、实验目的 使学生能够更进一步理解白盒测试方法。 能够区分语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。 区分语句覆盖、判定覆盖、条件覆盖的异同,掌握其测试用例设计方法和程序特征; 三、实验环境 Windows系统平台和Dev-C++开发环境。 四、实验内容 某程序的逻辑设计如下图所示,自行分析程序结构,请为该程序设计测试用例使其分别满足:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,并按照测试用例测试程序,完善测试用例各项内容的填写。 #include using namespace std; int main() { int F=0; int T=0; int x,y; cin>>x>>y; if(x>=50&&y>=50) { F=1;} if(x+y>80) { T=2; } else { T=3; } cout<

4 五、实验步骤 1.依据程序逻辑结构图分析程序结构,找出程序的各种组合。 2.依据实验要求设计测试用例使测试达到特定覆盖。 3.选择自己熟悉的语言编写程序。 4.用各种测试用例测试程序。 5.1语句覆盖 特点:语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每 条语句至少被执行一次。在本例中,可执行语句是指语句块1到语句块4中的语 句。 优点:可以很直观地从流程图得到测试用例,可以测试所有的执行语句。 缺点:语句覆盖不能准确的判断运算中的逻辑关系错误。假设第一个判断语 句if(x>=50 && y>=50)中的“&&”被错误地写成了“||”,即if(x>=50 || y>=50),使 用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖。 在六种逻辑覆盖标准中,语句覆盖标准最弱的。

实验一_白盒测试

实验一白盒测试 实验目的 1、掌握白盒测试的基础知识,了解白盒测试又叫结构性测试,是基于 被测程序的源代码的测试方法; 2、掌握白盒测试的主要检查内容、测试目的及实施步骤; 3、掌握白盒测试的3种基本测试方法:逻辑覆盖、路径测试和数据流 测试; 实验要求 1、复习教材的有关内容,掌握白盒测试的3种基本测试方法; 2、掌握一门编程语言,能编写代码并执行程序; 3、对具体程序的源代码,能分别使用3种测试方法设计测试用例,并 实施测试、分析测试结果; 实验设备与器材 a)硬件:P4以上计算机,512M内存以上,2G以上空闲硬盘空间 b)软件:Windows操作系统、java程序设计软件、office系列软件 实验原理 1、白盒测试的目的和检查内容; 2、白盒测试的基本方法; 3、根据白盒测试方法设计测试用例及实施测试。 实验内容 1、使用例子---三角形问题来进行路径测试。 以下是问题陈述:

三角形问题接受三个整数a、b、c作为输入,用做三角形的边。整数a、b、c 必须满足以下条件: C1: 1≤a≤200 C4: a<b+c C2: 1≤b≤200 C5: b<a+c C3: 1≤c≤200 C6: c<a+b 程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。如果输入值没有满足这些条件中的任何一个,则程序会通过输出信息来进行通知,例如,“b的取值不在允许取值的范围内。”如果a、b和c取值满足c1、c2和c3,则给出以下四种相互排斥输出中的一个: 1、如果三角形等边,则程序的输出是等边三角形。JUnit 2、如果恰好有两条边相等,则程序的输出是等腰三角形。 3、如果没有两条边相等,则程序输出的是不等边三角形。 4、如果c4、c5和c6中有一个条件不满足,则程序输出的是非三 角形。 对上述问题进行以下测试工作: 1)对上面的问题陈述,使用自己熟悉的编程语言(java)写出程序; public class test{ public static void main (String arg[]){ Scanner input=new Scanner(System.int); System.out.print("请输入3条边(中间空格隔开)"); double a=input.nextDouble(); double b=input.nextDouble(); double c=input.nextDouble(); int s1=0,s2=0; if(a>0&&b>0&&c>0&&a<200&&b<200&&c<200){ if(a+b>c&&b+c>a&&c+a>b){ if(a==b&&b==c)

2020关于三角形问题的白盒测试实验报告123

关于三角形问题的白盒测试实验报告 一、实验目的 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;二、实验内容 1、题目内容描述 针对实验一编写的源代码进行白盒测试。要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。执行测试用例,并分析测试结果 2、测试用例的编写 根据条件绘制程序流程图如下: 开开 scanf(%d,%d, %d,&1< m_num1 <200&1< m_num2<200 &1< m_num3 <200) 开 N 开m_num1+m_num2<= m_num3 开 开

cout<<"开开开开 m_num1+m开开"<

开 <<"开开开开开 "<

1213 14 采用逻辑覆盖设计测试用例并执行测试用例:(1)语句覆盖:输入 M_num1 3 3 3 3 (2)判定覆盖 输入 M_num1 3 M_num2 4 M_num3 5 1-2-3-6-7-8-10-11-12-14 一般三角形 测试路径 测试结果 M_num2 2 4 3 3 M_num3

相关文档
最新文档