白盒测试实验2
白盒测试2

南京信息工程大学实验(实习)报告实验(实习)名称白盒测试2实验(实习)日期2011.5.26得分指导教师徐旦华系计算机专业软件工程年级 08 班次 2 姓名学号 20082344059一、实验目的理解白盒测试的基本方法,掌握语句覆盖、分支覆盖、条件覆盖、路径覆盖等代码覆盖测试策略,并能应用白盒测试技术设计测试用例二实验准备主流PC 机一套,要求安装windows 操作系统和Office 工具及相应编程软件;三实验内容被测程序:寻找最大数程序:max.numbers程序操作说明:从键盘输入3个整数(间隔为空格),找出并输出其中数值最大的那一个。
如果其中有一个以上的最大数(相等的情况),也要表示出来。
#include<stdio.h>1 void main()2 {3 int i,a,b,c;4 i = 0;5 while(i<100) {6 printf("Enter numbers: ");7 scanf("%d %d %d",&a,&b,&c);8 if(a>b)9 {10 if(a>c)11 printf("max. a=%d\n",a);12 else if(a==c)13 printf("max. a=c=%d\n",c);14 else15 printf("max. c=%d\n",c);16 }17 else{18 if(a==b)19 {20 if(a>c)21 printf("max. a=b=%d\n",a);22 else23 if(a==c)24 printf("max. a=b=c=%d\n",c);25 else26 printf("max. c=%d\n",c);27 }28 else{29 if(b>c)30 printf("max. b=%d\n",b);31 else32 if(b==c)33 printf("max. b=c=%d\n",b);34 else35 printf("max. c=%d\n",c);36 }37 }38 i++;39 }40 }实验要求:依据语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、基本路径测试分别给出测试用例。
白盒测试实验报告(2)

白盒测试实验报告,(2)软件学院综合性、设计性实验报告专业:年级/班级:20152016学年第一学期课程名称软件测试指导教师本组成员学号姓名实验地点实验时间2015年12月26日项目名称白盒测试实验类型综合性/设计性一、实验目的1.通过实验熟悉测试用例设计2.通过实验熟悉白盒测试二、实验仪器或设备计科楼计算机三、总体设计(设计原理、设计方案及流程等)程序流程图:程序控制流图四、实验步骤(包括主要步骤、代码分析等)代码分析/**判断三角形的类*/publicclassTriangleTestMethod{/**判断三角形的种类。
参数a,b,c分别为三角形的三边,*返回的参数值为0,表示非三角形;*为1,表示普通三角形;*为2,表示等腰三角形;*为3,表示等边三角形。
*/publicstaticintcomfirm(inta,intb,intc){if((a+bc)(b+ca)(a+ cb)){//判断为三角形if((a==b)(b==c))//判断为等边三角形return3;if((a==b)||(b==c)||(a==c))//判断为等腰三角形return2; else//判断为普通三角形return1;}else{//为非三角形return0;}}}三、测试用例1.语句覆盖测试用例:输入期望输出覆盖对象测试结果Case10①,⑤0a=1,b=6,c=7Case2a=3,b=4,c=51①,②,④,⑥1Case3a=3,b=3,c=42①,②,④,⑦2Case4a=3,b=4,c=53①,②,③32.判定覆盖测试用例输入期望输出覆盖对象测试结果Case11a=1,b=2,c=30①,⑤0Case12a=3,b=4,c=51①,②,④,⑥1Case1 3a=3,b=3,c=42①,②,④,⑦2Case14a=3,b=4,c=53①,②,③33.条件覆盖测试用例输入期望输出覆盖对象测试结果Case5a=1,b=2,c=30F1,T2,T30Case6a=7,b=1,c=60T1,F2,T30Case7a= 1,b=7,c=60T1,T2,F30Case8a=3,b=3,c=42T1,T2,T3,T4,2F5,T6,F7,F 8Case9a=3,b=4,c=32T1,T2,T3,F4,2F5,F6,F7,T8Case10a=4,b=3,c=3 2T1,T2,T3,F4,2T5,F6,T7,F84.条件-判定覆盖测试用例输入期望输出覆盖对象测试结果Case15a=1,b=6,c=70F1,T2,T30(①,②)Case16a=1,b=1,c=60T1,F2,T 30(①,②))Case17a=7,b=1,c=60T1,T2,F30(①,②)Case18a=3,b=4,c =32T1,T2,T3,T4,2F5,T6,F7,F8(①,②,③,⑦)Case19a=4,b=3,c=32F T1,T2,T3,4,2F5,F6,F7,T8(①,②,③,⑦)Case20a=3,b=3,c=42T1,T2 ,T3,F4,2T5,F6,T7,F8(①,②,③,⑦)Case21a=3,b=3,c=33F1,T2,T33 (①,②,③)Case22a=3,b=4,c=51T1,F2,T31(①,②,④,⑥)5.条件组合覆盖测试用例输入期望输出覆盖对象测试结果Case23a=1,b=6,c=70F1,T2,T30Case24a=7,b=6,c=10T1,F2,T30Case2 5a=1,b=7,c=60T1,T2,F20Case26a=3,b=3,c=33T1,T2,T3,3T4,T5Case 27a=3,b=3,c=42T1,T2,T3,T4,F5,F6,F7,T82Case28a=4,b=3,c=32T1, T2,T3,2F4,T5,F6,T7,F8Case29a=3,b=4,c=51T1,T2,T3,1F4,F5,F6,F 7,F8Case30a=3,b=4,c=32T1,T2,T3,2F4,F5,F6,F7,T8备注其他条件组合,无法到达结束基本路径覆盖测试用例输入期望输出覆盖对象测试结果Case31a=7,b=6,c=10A-D0Case32a=1b=6,c=70A-B-D0Case33a=1,b=7, c=60A-B-C-D0Case34a=3,b=3,c=33A-B-C-E-G-3HCase35a=3,b=3,c=4 2A-B-C-E-G-2ICase36a=4,b=3,c=32A-B-C-E-F-2HCase37a=3,b=4,c= 32A-B-C-E-F-J2-HCase38a=3,b=4,c=51A-B-C-E-F-J1-K五、结果分析与总结试验中对于路径测试有了更深的理解,可以更好,更迅速的去划分路径,设计测试用例,通过试验,我对软件测试有了进一步的认识和学习,对白盒测试流程有了较清楚的了解,收获很多。
软件测试-实验2-白盒测试案例分析

实验2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。
1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。
无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。
条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。
4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。
线性地增加了测试用例的数量。
5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。
[工学]实验二白盒测试
![[工学]实验二白盒测试](https://img.taocdn.com/s3/m/3248f0df09a1284ac850ad02de80d4d8d15a01e6.png)
白盒测试基本路径测试用例的设计(实验时间2012.3.14)一、实验目的1、掌握白盒测试用例的设计方法。
2、综合运用所学的白盒测试方法设计测试用例。
二、实验准备1、白盒测试用例的设计方法。
2、测试用例模板。
三、实验内容下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Ele ment的数组V,另一个是数组大小n。
算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( ):void SelectSort ( datalist & list ) {//对表list.V[0]到list.V[n-1]进行排序,n是表当前长度。
for ( int i = 0; i < list.n-1; i++ ) {int k = i; //在list.V[i].key到list.V[n-1].key中找具有最小关键码的对象for ( int j = i+1; j < list.n; j++)if ( list.V[j].getKey ( ) < list.V[k].getKey ( ) ) k = j;//当前具最小关键码的对象if ( k != i ) Swap ( list.V[i], list.V[k] ); //交换}}(1) 试计算此程序段的McCabe复杂性;(2) 用基本路径覆盖法给出测试路径;(3) 为各测试路径设计测试用例。
四、实验步骤(1)画出程序流程图和控制流图,计算复杂度V(G),其计算公式如下:V(G)=区域个数V(G)=边条数-结点数+2V(G)=判定节点个数+1(2)用基本路径覆盖法给出测试路径:独立路径有5条:①③①②⑤⑧……①②⑤⑨……①②④⑥……①②④⑦……(3) 为各测试路径设计测试用例:路径①③:取n = 1路径①②⑤⑧……:取n = 2,预期结果:路径⑤⑧③不可达路径①②⑤⑨……:取n = 2,预期结果:路径⑤⑨③不可达路径①②④⑥⑤⑧③:取n = 2, V[0] = 2, V[1] = 1, 预期结果:k = 1, V[0] = 1, V[1] = 2 路径①②④⑥⑤⑨③:取n = 2, V[0] = 2, V[1] = 1, 预期结果:k = 1, 路径⑨③不可达路径①②④⑦⑤⑧③:取n = 2, V[0] = 1, V[1] = 2, 预期结果:k = 0, 路径⑧③不可达路径①②④⑦⑤⑨③:取n = 2, V[0] = 1, V[1] = 2, 预期结果:k = 0, V[0] = 1, V[1] = 2 五、实验思考(1)良好测试用例的特征?(2)测试用例的组成元素与范例?。
白盒测试实验报告_三角形(2)

白盒测试实验报告——三角形
一、实验目的
(1)巩固白盒测试技术,能熟练应用控制流覆盖方法设计测试用例;
(2)学习测试用例的书写。
二、实验内容
判断三角形类型
输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?如果能构成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。
要求输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。
要求:
为测试该程序的方便,请将三角形判断的算法尽量放入一个函数中。
(1)画出程序的流图;
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖设计测试用例,并写出每个测试用例的执行路径
要求:设计测试用例时,每种覆盖方法的覆盖率应尽可能达到100%
(3)请采用基本路径测试方法对程序进行测试,并给出具体测试用例信息。
(4)通过你的测试,请总结你所使用测试方法发现的Bug。
三、实验要求
(1)根据题目要求编写测试用例
(2)撰写实验报告
(3)有关的实现程序请附到实验报告中
(4)实验报告命名规则:学号后两位+姓名_白盒实验
四、实验报告
(1)程序代码:
7.
8.
(2)程序的流图:
(4)判定覆盖;
(5)条件覆盖:
(6)判定/条件覆盖;
(8)基本路径覆盖;
附录:测试用例书写格式(语句覆盖为例)。
实验2白盒测试

实验2⽩盒测试实验2 ⽩盒测试⼀、实验⽬的1. 了解⽩盒测试的概念。
2. 掌握⽩盒测试的主要⽅法。
3. 掌握⽩盒测试⼯具JUnit的安装和使⽤⽅法。
4. 利⽤⽩盒测试⼯具JUnit,针对⼀个具体问题进⾏测试,掌握测试的基本过程、测试⽤例的编写和测试结果的分析⽅法。
⼆、实验内容1. ⽩盒测试⼯具JUnit的安装和使⽤⽅法。
2. 利⽤⽩盒测试⼯具JUnit测试某个Java类(⿎励测试⾃⼰编写的Java类)。
三、实验要求1. ⾃⼰编写测试⽤例。
2. 使⽤JUnit软件对测试⽤例进⾏测试。
3. 记录并分析测试结果。
四、操作⽅法与实验步骤0. 准备⼯作在Eclipse中新建项⽬Calculator,再创建类Calculator。
该类实现加、减、乘、除四则运算。
为了体验测试过程,故意给出某些错误。
代码如下:public class Calculator {private static int result;public void add(int n) {result=result+n;}public void substract(int n) {result=result-1; 正确的是result=result-n}public void multiply(int n) { 该⽅法待定义,预留接⼝}public void divide(int n) {result=result/1; 正确的是result=result/n }public int getResult() {return result;}}1. 步骤⼀:将JUnit4测试包引⼊Calculator项⽬2. 步骤⼆:⽣成JUnit4测试框架3. 步骤三:在前述⾃动⽣成的测试框架下,⾃⼰编写测试⽤例程序。
4. 步骤四:运⾏测试代码五、测试⽤例测试⽤例代码如下:import static org.junit.Assert.*;import org.junit.After;import org.junit.Before;import org.junit.Test;public class CalculatorTest {private static Calculator calculator=new Calculator();@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}@Testpublic void testAdd() {calculator.add(2);calculator.add(3);assertEquals(5,calculator.getResult());}@Testpublic void testSubstract() {calculator.add(10);calculator.substract(3);assertEquals(7,calculator.getResult());}@Testpublic void testMultiply() {fail("Not yet implemented");}@Testpublic void testDivide() {calculator.add(6);calculator.divide(2);assertEquals(3,calculator.getResult());}}六、测试结果及分析测试运⾏结果如下图所⽰:图2.1 测试运⾏结果图根据报错信息将测试⽤例表补充完整:结合测试⽤例代码和测试结果,分析得错误原因为每⼀次运算调⽤的add()⽅法将输⼊的数据不断累加,⽽⾮初始化,因此对代码做出以下修正:①完善Calculator类中multiply⽅法:public void multiply(int n) {result=result*n;}②在每⼀项测试⽤例前增加语句:calculator.multiply(0);程序修正后测试运⾏结果如下图所⽰:图2.2 修正后的测试运⾏结果图。
实验二 Nextdata实验白盒测试

分析
实验
分析
续
实验
分析
续
实验
分析
续
日
本次实验的收获、体会、经验、问题和教训:
关于白盒测试
测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。
白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
2001.11.30
F1、F3、T4、F5
beji
2001.12.1
2.利用路径覆盖分析NextDate函数
基本路径测试方法
(1)控制流图
图2-1 NextDate函数的控制流图
(2)环形复杂度
方法一:V(G)=5(封闭区域)+1=6
方法二:V(G)=16(边数)—12(节点)+2=6
方法三:V(G)=5(判定节点2、3、4、5、6)+1=6
(3)导出基本路径
根据上面的计算结果,可导出基本路径集,列出程序的独立路径,可得出程序段的的基本路径集中有6条独立路径,每条独立路径为一个独立的测试用例。路径如下。
路径1:1→2→3→10→12
路径2:1→2→3→5→9→12
路径3:1→2→3→5→6→7→12
路径4:1→2→3→5→6→8→12
路径5:1→2→4→5→6→8→12
输入条件
覆盖条件
执行路径
预期输出
测试用例1
2000.2.29
T1、T2
ac
2000.3.1
测试用例2
2001.2.28
F1、T3
bd
2001.3.1
实验二-白盒测试

实验二白盒测试一、实验目的通过本实验,熟悉白盒测试的目的、内容,并掌握白盒测试的基本方法,能够按照具体要求对指定的程序设计测试用例并进行测试。
二、相关知识逻辑覆盖法的六种覆盖标准:1、语句覆盖:设计足够的测试用例,使得程序中的每个语句至少执行一次。
2、判定覆盖:设计足够的测试用例,使得在语句覆盖的基础上,程序中每个判定的取“真”分支和取“假”分支至少都执行一次。
3、条件覆盖:设计足够的测试用例,在语句覆盖的基础上使得程序判定中的每个条件能获得各种可能的结果。
4、判定/条件覆盖:设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
5、条件组合覆盖:设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。
6、路径覆盖:每条可能的路径都至少执行一次。
三、实验内容1、对实验一中编写的三角形程序,画出其程序流程图;分析程序流程图,确定程序分支;(1) 设计分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖的测试用例;(2) 用测试用例对程序进行测试,记录测试结果,并对结果进行分析,如果存在缺陷则修改程序,继续测试;运用逻辑覆盖法的六种覆盖标准设计测试用例,并执行测试,撰写实验报告。
四、实验步骤1、根据其题意,可以得出输入为三个整数:a、b、c为三角形的三条边,再根据以下条件输出其类型:条件一:a>0 条件二:b>0 条件三:c>0条件四:a<b+c 条件五:b<a+c 条件六:c<a+b(1)如果输入值a、b、c不满足条件一、条件二、条件三,程序输出“边的取值不符合要求”。
(2)如果输入值a、b、c不满足条件四、条件五、条件六,程序输出“非三角形”。
(3)如果三条边相等,程序输出“等边三角形”。
(4)如果三条边恰好有两边相等,程序输出“等腰三角形”。
(5)如果三条边都不相等,则程序输出为“一般三角形”。
实验二 白盒测试——基本逻辑覆盖测试方法

实验二白盒测试基本逻辑覆盖——测试方法1、实验目的(1)理解等价类划分方法的内涵;(2)掌握等价类测试健壮性概念;(3)能够使用等价类划分法设计测试用例。
2、实验预习等价类划分测试方法的主要目的是能够对软件进行完备的测试,同时避免冗余测试用例的存在。
等价类的划分关键是确定类的等价关系,根据单/多缺陷假设和健壮性,等价类划分测试方法可以分为弱一般等价类测试、强一般等价类测试、弱健壮等价类测试和强健壮等价类测试四类方法。
3、实验内容及要求现在有一个应用于旅馆住宿管理系统的程序,其包含了用户登录、用户注册和用户结算等功能,需要对该程序进行测试,具体测试任务主要有:(1)旅馆住宿系统用户名字段测试用例设计;(必做)(2)旅馆住宿系统用户注册测试用例设计;(必做)(3)旅馆住宿系统结算功能测试用例设计。
(选做)在任务1中,用户名限制为6~10位自然数,要求使用等价类划分方法设计测试用例。
在任务2中,用户信息主要有登录帐号(6~10位自然数)、真实姓名(大小写的英文字符)、登录密码和确认密码、出生日期(其中有效年份1900~2010)。
任务3中,旅馆房费结算有一定的规则,当游客入住后可根据房间价格、入住天数、入住人是否有会员卡等情况给予折扣结算,房费计算公式为,房费=房间单价×折扣率×入住天数。
折扣率根据住宿人住宿天数(最多30天)、是否有会员卡、入住次数(3次及以下、3次以上)和物品寄存个数的不同有所不同,体现在不同条件下对应的积分不同,10分及10分以上折扣率为7折,10分以下折扣率为9折,具体规则:要求给出所有这些任务的实验步骤以及强健壮等价类测试用例,并给出实际测试结果。
4、实验总结(1) 请确定任务1和任务2的输入和输出变量。
(2) 对于任务1和任务2,在做健壮性测试用例时,给出输入变量的无效区间。
(3) 请结合实验谈一下等价类划分测试方法的优劣。
实验4白盒测试(二)new

南京信息工程大学实验(实习)报告实验四白盒测试(二)一、实验目的理解白盒测试的基本方法,掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等代码覆盖测试策略,并能运用相应的方法设计测试用例二、实验时间2学时三、实验准备主流PC机一套,要求安装windows操作系统和Office 工具及相应编程软件;四、实验内容1. 题目一:使用逻辑覆盖测试方法测试以下程序段void DoWork (i nt x,i nt y,i nt z){1 int k=0, j=0;2 if ( (x>3)&&(z<10))3 {4 k=x*y-1;5 j=sqrt(k);\ 6 }7 if((x==4)||(y>5))8 j=x*y+1O;9 j=j%3;10 }说明:程序段中每行开头的数字(1~10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
2. 题目二:请按要求对下面的java代码进行测试。
代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key的元素。
public int bin Search ( int array[], int key ) {1 int mid, low, high;2 low = 0;3 high = array.len gth-1;4 while ( low <= high ) {5 mid = (low +high)/2;6 if ( key = = array [mid])7 return mid;8 else if ( key < array [mid])9 high = mid -1;10 else11 low = mid + 112 }13 return -1;14 }(1)画出此程序段的控制流图;(2)试计算此程序段的McCabe复杂性;(3)用独立路径覆盖法给出测试路径;并为各测试路径设计测试用例。
软件测试-实验2-静态白盒测试

软件质量保证与测试Array 2013春季教师:实验报告2–静态白盒测试学号: 姓名:1引言【此部分简单介绍静态白盒测试相关技术、PC-Lint等】(至少200字)静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。
静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。
静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
PC-Lint 是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++,PC-Lint 能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而FlexeLint 运行于其它平台,以源代码的形式发布。
PC-lint 在全球拥有广泛的客户群,许多大型的软件开发组织都把PC-Lint 检查作为代码走查的第一道工序。
PC-Lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。
2测试结果记录表1 静态测试结果分析表1233遗漏缺陷分析【列出你认为静态测试应该可以发现、但被遗漏的缺陷】表2 静态测试遗漏缺陷表44其他的测试代码【你还能想到哪些在编程中容易出现的缺陷?请写出示例代码,记录测试结果。
实验二-白盒测试方法应用

实验报告
2014 课程名称 实验题目 实验目的、要求 – 2015 软件测试 学年第 2 学期 任课老师: 班级 实验时间 座号 实验日期: 提交日期: 淘宝店 530213 姓名 2015.3.24 2015.3.24 实验二、白盒测试方法应用
实验目的及要求:
1 掌握白盒测试方法(逻辑覆盖法、基路径测试法等)的应用 淘宝店 530213
预期输出
覆盖组合号 p1p3p4(T1T2) p1p3p4(T1T3) p1p2(T1)
2
TE-017
2011
false
p1p2(T2)
(7)路径覆盖
表 1-7 路径覆盖的测试用例
用例 ID TE-018 TE-019 2012 2014
输入 true false
预期输出
覆盖组合号 p1p3p4(T1T2) p1p2(T2)
4
(4)Triangle 函数的基本路径集的测试用例(见表 2-1)
表 2-1 Triangle 函数的基本路径集的测试用例
5
用例 ID a RN-001 RN-002 RN-003 3 3 1 4 3 2
输入 b 5 5 3 c
预期输出 不等边三角形 等腰三角形 不构成三角形
执行路径 1 2 3
总结以及心得体会
淘宝店号 530213
教师评阅意见
教师:
2015 年 3 月 26 日
填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。
6
覆盖组合号 p1p3p4(T1T2) p1p3p4(T1T3) p1p2(T1) p1p2(T2)
(4)判定/条件覆盖(TFT FTF)
表 1-4 判定/条件覆盖的测试用例
实验二白盒测试2

实验⼆⽩盒测试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; //语句块1j=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)。
实验二_白盒测试

实验二:白盒测试一、实验目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。
二、实验内容要求:被测测试程序功能:PriorDate函数;程序定义:为了获得前一个日期, PriorDate函数执行如下操作:(默认年数大于等于0)如果输入日期day变量值大于1,则把day变量的值减1;如果输入日期是2~12月份中某月的第一天,则把day变量的值置为前一个月的最后一天,month变量的值减1;如果输入日期是1月的第一天,则day变量的值置为31,month变量的值置为12,year变量的值减1。
关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。
测试环境:Windows 7、Eclipse;三、实验要求根据代码调通程序并进行白盒测试,即用语句覆盖、分支覆盖、条件覆盖、分支/条件覆盖、条件组合覆盖及基本路径测试方法,写出测试用例,执行测试,给出测试报告,实验报告。
四、实验测试用例与测试结果程序的流程图如下图:1.语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于02.分支覆盖执行足够的测试用例,使得程序中的每一个分支至少都通过一次测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012 month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于03.条件覆盖测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=0,day=0,year=1800 OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于0执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
实验2-动态白盒测试

云南大学软件学院实验报告课程:软件测试技术任课教师:代飞实验指导教师(签名):姓名:赵宇学号:20101120128 专业:软件工程日期:2012年11月23 成绩:实验二动态白盒测试一、实验目的(1)熟练掌握静态白盒测试与动态白盒测试的相关概念;(2)熟练掌握白盒测试相关测试技术;(3)能够熟练应用语句覆盖、判定覆盖、条件覆盖、组合覆盖、路径覆盖等相关技术进行白盒测试用例设计。
二、实验内容1. 求解一元二次方程的程序如下:#include <stdio.h>main(){float a,b,c,x1,x2,mid;scanf("%f,%f,%f",&a,&b,&c);if(a!=0){mid=b*b-4*a*c;if(mid>0){ x1=(-b+sqrt(mid))/(2*a);x2=(-b-sqrt(mid))/(2*a);printf("two real roots\n");}else{ if (mid==0){ x1=-b/2*a;printf("one real root\n");}else{ x1=-b/(2*a);x2=sqrt(-mid)/(2*a);printf("two complex roots\n");}}printf("x1=%f,x2=%f\n",x1,x2);}}请分析以上程序,给出控制流图,设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
流程图:语句覆盖:判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖:三、实验总结本次实验主要是运用白盒测试的方法,设计测试用例。
白盒测试也称为结构测试,是基于覆盖的测试,其目标是尽可能覆盖程序的逻辑路径,主要包括语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。
白盒测试实验二

软件测试基础与实践实验报告实验名称:白盒测试实验二实验地点:机房实验日期:学生姓名:学生学号:一、实验目的(1)巩固白盒测试知识,能熟练应用基本路径测试方法设计测试用例;(2)学习测试用例的书写。
二、实验内容实验背景:已知公元 1 年 1 月 1 日是星期一,我们可以实现一个程序,使得只要输入年月日,程序就能自动回答当天是星期几。
现有 07 级同学实现上述功能的程序 WeekB,该程序用于计算输入日期是星期几。
实验 1:基本路径测试技术实验运用基本路径测试方法,分别对程序 WeekB 中的方法 IsCorrect()和 getResult()进行测试。
要求:(1) 画出程序流图。
(2) 计算环复杂度。
(3) 找到基本路径集合。
(4) 设计具体的测试用例。
一、测试IsCorrect()已在visio中作答,可双击以下打开和编辑Starty<1y%4==0)&&(y%100!=0))||(y%400==0)m<0||m>12d>maxA[m-1]EndTrue maxA[1]=29False123-4-57-8910111223456789if(y<1)return false;else {if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;if(m<0||m>12)return false;else{if(d>maxA[m-1])return false;elsereturn true;}}V(G)=18-12+2=8L1:1-2-11-12L2:1-2-3-7-8-9-11-12L3:1-2-3-4-6-7-8-9-11-12L4:1-2-3-4-5-7-8-9-11-12L5:1-2-3-4-5-6-7-11-12L6:1-2-3-4-5-6-7-8-11-12L7:1-2-3-4-5-6-7-8-9-11-12L8:1-2-3-4-6-7-8-9-10-1216101211测试用例二、测试getResult()已在visio中作答,可双击以下打开和编辑Start for(int i=1)i<yi%4==0)&&(i %100!=0))||(i%400==0)totalDays+=366totalDays+=365y%4==0)&&(y%100!=0))||(y%400==0)maxA[1]=29maxA[1]=28for(int i=1)i<mtotalDays+=maxA[i-1]totalDays+=(d-1)maxA[1]=28return (totalDays%7)End1245-6-79811-12-13151491617182021222312346911long totalDays=0;{for(int i=1;i<y;i++){if(((i%4==0)&&(i%100!=0))||(i%400==0))totalDays+=366;elsetotalDays+=365;}if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;elsemaxA[1]=28;for(int i=1;i<m;i++){totalDays+=maxA[i-1];}totalDays+=(d-1);maxA[1]=28;return (totalDays%7);}V(G)=30-23+2=9L1:1-2-3-4-11-15-16-17-20-21-22-23L2:1-2-3-4-5-9-10-4-11-12-13-15-16-17-20-21-22-23L3:1-2-3-4-5-6-8-10-4-11-12-14-16-17-20-21-22-23L4:1-2-3-4-5-6-7-9-10-4-11-12-13-14-16-17-20-21-22-23L5:1-2-3-4-5-6-7-8-10-4-11-12-13-14-16-17-20-21-22-23L6:1-2-3-4-5-6-7-8-10-4-11-15-16-17-20-21-22-23L7:1-2-3-4-5-6-7-8-10-4-11-12-14-16-17-20-21-22-23L8:1-2-3-4-5-6-7-8-10-4-11-12-13-15-16-17-20-21-22-23L9:1-2-3-4-5-6-7-8-10-4-11-12-13-14-16-17-18-18-20-21-22-23i++i++5781012131415161718192021totalDays =0310192223测试用例三、实验体会要选择的路径太多,但是要覆盖全部路径的数目是相对的.。
东南大学软件测试白盒测试实验二

软件测试基础与实践实验报告实验名称:白盒测试实验二实验地点:计算机软件楼实验日期:学生姓名:王鑫学生学号:东南大学软件学院制一、实验目的(1)巩固白盒测试知识,能熟练应用基本路径测试方法设计测试用例(2)学习测试用例的书写二、实验内容(一)实验一: 基本路径测试技术实验运用基本路径测试方法,分别对程序WeekB 中的方法IsCorrect()和getResult()进行测试。
要求:(1) 画出程序流图。
(2) 计算环复杂度。
(3) 找到基本路径集合。
(4) 设计具体的测试用例。
方法IsCorrect()1.画出程序流图bool IsCorrect(int y,int m,int d){if(y<1)return false;else{if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;if(m<0||m>12)return false;else{if(d>maxA[m-1])return false;elsereturn true;}}2.计算环复杂度V(G)=流图中的区域数量=8 3.找到基本路径集合4.设计具体的测试用例方法getResult ()1.画出程序流图int getResult(int y,int m,int d){long totalDays=0;for(int i=1;i<y;i++){if(((i%4==0)&&(i%100!=0))||(i%400==0))totalDays+=366;elsetotalDays+=365;}if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;elsemaxA[1]=28;for(int i=1;i<m;i++){totalDays+=maxA[i-1];}totalDays+=(d-1);maxA[1]=28;return (totalDays%7); }2.计算环复杂度V(G)=流图中的区域数量=93.找到基本路径集合4.设计具体的测试用例三、实验体会(1)没有测出缺陷,但实际上存在缺陷。
实验2 白盒测试

实验2、白盒测试学时:4一、实验目的1.掌握静态白盒测试方法及一般要求2.掌握白盒测试用例的设计方法3.掌握白盒测试的实验方法。
二、实验要求1.按照实验题目的要求,编写程序并上机调试2.同学之间进行代码评审、代码检查3.设计测试用例,并完成白盒测试三、实验设备计算机、Windows 、Visual Studio 2005四、实验原理、方法上机操作使用Visual C# 输入并调试程序五、实验内容1.根据题目要求新建两个测试项目,开发出项目程序。
题1:输入1-100内的两个整数,求其最大公约数(注:下面的代码仅供参考,可能有错误)。
程序正确的运行结果为:请输入两个整数(1-100):480最大公约数为:4代码为:using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{class Program{static void Main(string[] args){string s1, s2;Int16 i, j;Console.WriteLine("请输入两个整数");s1 = Console.ReadLine();s2 = Console.ReadLine();i = Int16.Parse(s1);j = Int16.Parse(s2);if(i<1 || i>100){Console.WriteLine("输入不正确!");return;}if(j<1||j>100){Console.WriteLine("输入不正确!");return;}int max,min,result=1;if(i>=j){max=i;min=j;}else{max=j;min=i;}for(int n=1; n<=min; n++){if(min%n==0 && max%n==0){if(n>result)result=n;}}Console.WriteLine("最大公约数为:{0}",result);return;}}}题2:输入一个0-500的整数,判断其能否被3,5,7整除,并输入下列信息之一:(1)能够同时被3,5,7整除(2)能够同时被其中两个数整除(给出这两个数)(3)能被其中一个数整除(给出这个数)(4)不能被任一个数整除。
白盒测试实验二

测试计划学号__________姓名________专业_________1引言1.1编写目的本文档的编写目的在于为此程序(Triangle.java)进行三角形问题的白盒测试,包括:输入输出。
具体需求参照三角形问题,利用白盒测试中静态测试方法、逻辑覆盖方法建立测试用例,编写测试计划文档、测试总结报告。
1.2背景说明:a.Windows 7,Eclipseb.阅读客户的需求说明文档1.3定义a:三角形的第一条边b:三角形的第二条边c:三角形的第三条边普通三角形:三边都不相等的三角形等腰三角形:有任意两边相等的三角形等边三角形:三边相等的三角形1.4参考资料a.《软件质量与测试》.孟磊.西安电子科技大学出版社2015年3月1.5程序代码import java.util.Scanner;public class Triangle {public static void main(String[] args) {Scanner reader=new Scanner(System.in);System.out.println("请输入三角形的三边:");int a=reader.nextInt();int b=reader.nextInt();int c=reader.nextInt();if((a*b*c==0)||(a+b<=c)||(a+c<=b)||(b+c<=a)){System.out.println("非三角形");}else if((a==b)&&(a==c)&&(b==c)){System.out.println("正三角形");}else if((a==b)||(b==c)||(a==c)){System.out.println("等腰三角形");}else System.out.println("普通三角形");}}2计划2.1软件说明2.2测试内容功能性测试:根据输入测试能够判断是否可以构成三角形,如果可以构成三角形,又是何种三角形。
实验4白盒测试(二)

南京信息工程大学实验(实习)报告实验(实习)名称实验四白盒测试(二)日期2015-5-31 得分指导教师系计软院专业软工年级2013 班次 1 姓名徐佳学号20131344027实验四白盒测试(二)一、实验目的理解白盒测试的基本方法,掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等代码覆盖测试策略,并能运用相应的方法设计测试用例二、实验时间2学时三、实验准备主流PC 机一套,要求安装windows 操作系统和Office 工具及相应编程软件;四、实验内容1.题目一:使用逻辑覆盖测试方法测试以下程序段void DoWork (int x,int y,int z){1 int k=0, j=0;2 if ( (x>3)&&(z<10) )3 {4 k=x*y-1;5 j=sqrt(k);6 }7 if((x==4)||(y>5))8 j=x*y+10;9 j=j%3;10 }说明:程序段中每行开头的数字(1~10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
2.题目二:请按要求对下面的java 代码进行测试。
代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key 的元素。
public int binSearch ( int array[], int key ) {1 int mid, low, high;2 low = 0;3 high = array.length-1;4 while ( low <= high ) {5 mid = (low +high)/2;6 if ( key = = array [mid] )7 return mid;8 else if ( key < array [mid] )9 high = mid -1;10 else11 low = mid + 112 }13 return -1;14 }(1)画出此程序段的控制流图;(2)试计算此程序段的McCabe 复杂性;(3)用独立路径覆盖法给出测试路径;并为各测试路径设计测试用例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题:插入函数 int insert(int a[],int val,int pos)。
功能:将成绩插入到成绩数组的指定位置,数组最大可以容纳 200个成绩。
参数:a为成绩数组,val为成绩值,pos为插入的位置(应在1— —实际成绩个数+1之间) 返回值:插入失败返回 -1 (如超过范围),成功返回实际长度 (即实际成绩个数) Java 代码如下:
白盒测试实验
主讲:颜远海
一、实验目的
1 、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测 试的基本技术和方法;
2 、通过实验和应用,逐步提高和运用白盒测试技术解决实际测 试问题的能力。 3、掌握决策表和因果图的测试用例设计方法
二、实验内容 1. 程序代码如下:
开始 k=0,j=0 1 T2 x<y且z<5 F 3 x=10或y>3 F 5 k+j T 4 k=x+y
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 9 a[i+1]=a[i] ; a[pos-1]=val ;//插入
10 return len ; }
要求:
1、静态代码检查,程序中哪几处有问题?找出并更正
2、画出程序控制流图 3、计算环路复杂性 4、确定独立路径集 5 、给出针对每条独立路径的测试用例(注意数组的前置状态: 如当前实际成绩个数)
int result(int x, int y, int z) { int k=0,j=0; if((x<y)&&(z<5)) k=x+y; if((x==10)||(y>3)) j=x*y;
j=xy
return k+j;
}
结束
要求:
写出以上程序的语句覆盖、判定覆盖、条件覆盖、判定—条件覆 盖、多条件组合覆盖测试用例。