实验1 白盒测试实验报告
- 格式:doc
- 大小:143.00 KB
- 文档页数:6
实验1测试实现源程序,使用路径测试法测试以下程序(要求完成实验报告)#include<iostream.h>/*static */int sign=0;static char m='T',n='T';//int logicExample(int,int);int logicExample(int x,int y){int magic=0;if(x>0&&y>0){magic=x+y+10;sign++;}else{magic=x+y-10;m='F';}if(magic<0){magic=0;sign+=2;}else n='F';return magic;}main(){int x,y;//static int sign=0;//static char m='T',n='T',char p[4][5]={"acef","abef","acdf","abdf"};cout<<"---------------"<<'\n';cout<<"请输入x:";cin>>x;cout<<"请输入y:";cin>>y;cout<<"magic 已知:0"<<endl;cout<<"---------------"<<'\n';cout<<"测试结果分别是:"<<'\n';cout<<"---------------"<<'\n';cout<<"x的值y的值logic的值判定M 判定N 覆盖路径"<<endl;cout<<"---------------------------------------------------------"<<'\n';cout<<x<<" "<<y<<" "<<logicExample(x,y)<<" "<<m;cout<<" "<<n<<" "<<p[sign]<<endl; }《软件测试与质量保证》实验报告书实验一白盒测试学生姓名:学号:班级:指导老师:专业:软件工程提交日期:201X年12月XX日白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用路径覆盖进行测试。
实验一:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。
熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元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 <iostream>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;6.cout<<"请输入日期: ";7.cin>>day;//求得输入年份之前一年末的总天数8.for(i=1; i<year; i++){9.if((i%4==0)&&(i%100!=0)||(i%400==0))10.num++;}11.total1 = 365*(year-num-1) + 366*num;//求得输入年份的总天数12.if((year%4==0)&&(year%100!=0)||(year%400==0)){//求得输入月份之前一月末的总天数13.switch(month){case 1:total2 = 0;break;case 2:total2 = 31;break;case 3:total2 = 60;break;case 4:total2 = 91;break;case 5:total2 = 121;break;case 6:total2 = 152;break;case 7:total2 = 182;break;case 8:total2 = 213;break;case 9:total2 = 244;break;case 10:total2 = 274;break;case 11:total2 = 305;break;case 12:total2 = 335;break;}}else{14.switch(month){case 1:total2 = 0;break;case 2:total2 = 31;break;case 3:total2 = 59;break;case 4:total2 = 90;break;case 5:total2 = 120;break;case 6:total2 = 151;break;case 7:total2 = 181;break;case 8:total2 = 212;break;case 9:total2 = 243;break;case 10:total2 = 273;break;case 11:total2 = 304;break;case 12:total2 = 334;break;}}//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数15.total = total1 + total2 + day;16.int week;17. week = total % 7;18.cout<<"您输入的日期是";19.switch(week){case 0:cout<<"星期天"<<endl;break;case 1:cout<<"星期一"<<endl;break;case 2:cout<<"星期二"<<endl;break;case 3:cout<<"星期三"<<endl;break;case 4:cout<<"星期四"<<endl;break;case 5:cout<<"星期五"<<endl;break;case 6:cout<<"星期六"<<endl;break;}cout<<"**********退出程序请输入0,否则任一输入继续**********"<<endl;cin>>x;}}2、测试用例设计1)控制流图2)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。
关于三角形问题的白盒测试实验报告一、实验目的1、能熟练应用功能性测试技术进行测试用例设计;2、对测试用例进行优化设计;二、实验内容1、题目内容描述针对实验一编写的源代码进行白盒测试。
要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。
执行测试用例,并分析测试结果。
可以使用C++Test对代码进行静态检查和动态测试。
2、测试用例的编写根据条件绘制程序流程图如下:开scanf(%d %d%d,&m_num1,m_num2,&m_nu3m_num1+m_num2<=m_nuScan(EO3不是潣瑵m_num1+m_n<<end角m3<=m_numm_num2+m_nm3<=m_numm_num1==m_um结m_num1==m_等边潣瑵um角<<endm_num1==m_umm_num1==m_umcoum_num2==m_等腰三角um<<endcou一般三角<<endl由程序流程图得如下控制流图:111114采用逻辑覆盖设计测试用例并执行测试用例:(1)语句覆盖:测试路测试结1-2-3-不是三角1-2-3-6-7-8一般三角1-2-3-6-7-8-等边三角1-2-3-6-7-8-10-1等腰三角形(2)判定覆盖测试结果测试路径输入M_num1M_num2M_num33541-2-3-6-7-8-一般三角形.(3)条件覆盖:输入测试结果测试路径M_num2M_num3M_num11-2-3-5213不是三角形11-2-3-6-523不是三角形1-2-3-6-7-5321不是三角形333 1-2-3-6-7-8-9等边三角形4531-2-3-6-7-8-一般三角形3341-2-3-6-7-8-10-13等腰三角形34基路径方法设计测试用例并执行测试用例:、测试结果分析3.经过以上测试发现:程序无法结束,达不到预测结果。
白盒测试实验报告一、实验目的本次白盒测试实验的主要目的是深入理解白盒测试的基本原理和方法,通过对给定程序的分析和测试,掌握代码覆盖的评估标准,提高测试用例的设计能力,发现程序中的逻辑错误和潜在缺陷,从而保障软件的质量和可靠性。
二、实验环境本次实验使用的编程环境为具体编程环境名称,测试工具为具体测试工具名称。
三、实验内容1、被测试程序的功能描述被测试程序是一个简单的数学计算程序,用于实现两个整数的加法、减法、乘法和除法运算。
程序接收用户输入的两个整数,并根据用户选择的运算类型进行相应的计算,最后输出计算结果。
2、程序代码分析以下是被测试程序的部分关键代码:```pythondef add_numbers(num1, num2):return num1 + num2def subtract_numbers(num1, num2):return num1 num2def multiply_numbers(num1, num2):return num1 num2def divide_numbers(num1, num2):if num2!= 0:return num1 / num2else:return "除数不能为 0"```3、测试用例设计为了全面测试程序的功能,设计了以下测试用例:|测试用例编号|输入数据(num1, num2, 运算类型)|预期输出|||||| 1 |(5, 3, 'add')| 8 || 2 |(5, 3,'subtract')| 2 || 3 |(5, 3,'multiply')| 15 || 4 |(6, 2, 'divide')| 3 || 5 |(5, 0, 'divide')|除数不能为 0 |4、代码覆盖分析在执行测试用例的过程中,使用测试工具对代码的覆盖情况进行了分析。
结果显示,语句覆盖达到了 100%,但分支覆盖只达到了 80%。
实验一、白盒测试一、实验目的:1、掌握结构性能测试技术,并能设计相应的测试用例;2、对测试用例进行优化设计;二、背景知识结构性测试力求提高测试覆盖率,逻辑覆盖(代码覆盖、结构覆盖)是对一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。
结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例三、实验内容使用逻辑覆盖测试方法测试以下程序段void sp (int x,int y,int z){①int k=0, j=0;②if ( (x>3)&&(z<10) )③{④k=x*y-1;⑤j=sqrt(k);⑥}⑦if((x==4)||(y>5))⑧j=x*y+10;⑨j=j%3;⑩}要求:(1)写出软件测试计划。
(2)分别以语句覆盖、判定/条件覆盖、组合覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
实验1:白盒测试用例设计实验目的1.理解白盒测试意义和目的2. 掌握逻辑覆盖测试进行白盒测试测试3.掌握独立路径测试方法。
实验内容运用覆盖及路径测试方法,使用白盒测试法为下列的 JAVA 程序设计测试用例。
下面是一个洗牌、发牌程序的规格说明:1.输入玩牌的张数,有52、48张;2.如有52张牌,则输入玩牌人数,4或2人,输入人数后打出发牌结果;如果输入人数不对,则退出程序;3.如有48张牌,则输入玩牌人数,3或4人,输入人数后打出发牌结果;如果输入人数不对,则退出程序;import java.util.*;import java.io.*;import javax.swing.*;public class cardTest {public static void main(String[] args) {String[] suit = {"黑桃", "红桃", "梅花", "方块"};String[] rank = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};ArrayList list = new ArrayList();for (int i = 0; i < suit.length; i++) {for (int j = 0; j < rank.length; j++) {list.add(suit[i] + rank[j]);}}for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i) + " ");}Collections.shuffle(list); //将list中的元素重新随机排序int cardnum = Integer.parseInt(JOptionPane.showInputDialog("有多张牌?请输入整数52,48"));if (cardnum == 48) {list.remove("红桃2");list.remove("方块2");list.remove("梅花2");list.remove("方块A");int player1 = Integer.parseInt(JOptionPane.showInputDialog("请输入人数:3或4的整数"));if (player1 == 3) {for (int i = 0; i < 3; i++) {System.out.print("玩家" + i + ": ");for (int j = i * 16; j < (i + 1) * 16; j++) {System.out.print(list.get(j+1) + " ");}System.out.println();}}else if(player1 == 4) {for (int i = 0; i < 4; i++) {System.out.print("玩家" + i + ": ");for (int j = i * 12; j < (i + 1) * 12; j++) {System.out.print(list.get(j) + " ");}System.out.println();}}else{JOptionPane.showMessageDialog(null,"输入错误!");System.exit(0);}}else {int player1 = Integer.parseInt(JOptionPane.showInputDialog("请输入人数:整数2或4"));if (player1 == 2) {for (int i = 0; i < 3; i++) {System.out.print("玩家" + i + ": ");for (int j = i * 24; j < (i + 1) * 24; j++) {System.out.print(list.get(j) + " ");}System.out.println();}}else {for (int i = 0; i < 4; i++) {System.out.print("玩家" + i + ": ");for (int j = i * 13; j < (i + 1) * 13; j++) {System.out.print(list.get(j) + " ");}System.out.println();}}}}}1.要求为加粗代码行画出控制流图;2.要求采用覆盖测试法设计测试用例;3.要求采用独立路径测试法设计测试用例。
实验⼀⽩盒测试(⼀)实验⼀⽩盒测试(⼀)⼀、实验⽅法:1、项⽬任务驱动教学法;2、“讲、学、练”相结合。
⼆、实验仪器与设备:1、计算机(要求:CPU 1000MHz以上,内存512M以上,磁盘空间20G以上。
);2、Eclipse;3、⼀个JAVA程序;三、实验⽬的:1、掌握⽩盒测试理论;2、掌握⽩盒测试的重要⽅法;3、掌握逻辑覆盖⽅法的原理;4、分析程序,设计逻辑覆盖的测试⽤例四、实验重点:1、逻辑覆盖⽅法的原理;2、分析程序,设计逻辑覆盖的测试⽤例。
五、实验难点:1、分析程序,设计逻辑覆盖的测试⽤例六、实验项⽬:使⽤逻辑覆盖⽅法测试⼀个JA V A程序1、实训要求:1、JAVA 程序。
2、根据⽩盒测试技术的逻辑覆盖⽅法设计程序的测试⽤例。
2、实训步骤:1、编写程序public static int DoWord(int x,int y,int z){if(x>3&&z<10)y=y/x+4;if (x==4 || y>5)y=x*y-10;return y;}2、设计测试⽤例(1)根据⽩盒测试技术的逻辑覆盖⽅法设计该程序的测试⽤例,分别满⾜:a.语句覆盖b.判定覆盖if(x>3&&z<10)y=y/x+4;if (x==4 || y>5)y=x*y-10;return y;}(2)根据上⾯设计的测试⽤例使⽤Junit编写程序进⾏测试。
要求:包括测试⽤例和预期结果,并书写实验报告。
白盒测试实验报告关于三角形问题的白盒测试实验报告一、实验目的1、能熟练应用功能性测试技术进行测试用例设计;2、对测试用例进行优化设计;二、实验内容1、题目内容描述针对实验一编写的源代码进行白盒测试。
要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。
执行测试用例,并分析测试结果。
可以使用C++Test对代码进行静态检查和动态测试。
2、测试用例的编写根据条件绘制程序流程图如下:由程序流程图得如下控制流图:采用逻辑覆盖设计测试用例并执行测试用例:(1)语句覆盖:(2)判定覆盖(3)条件覆盖:(4)判定-条件覆盖:(5)条件组合覆盖:(6)路径覆盖:基路径方法设计测试用例并执行测试用例:3、测试结果分析经过以上测试发现:程序无法结束,达不到预测结果。
其余均能正确执行达到预期结果。
4、实验思考通过本次试验,对C++test工具有了一定的认识,学会了一些基本的用法和操作,用该工具测出了一些代码规范的问题,能够分析测试结果了。
本实验用两种方法对程序进行测试,从中可看出,基路径测试比逻辑覆盖测试过程简单,但是没有逻辑覆盖测试的效果好。
所以,我觉得应该更加熟悉两种测试方法的特色,以便在以后的测试中能更快更准确的选择测试方法,快速测试,找到程序中的错误。
附录:程序代码#include "iostream.h"#include "stdio.h"void Judge(int m_num1,int m_num2,int m_num3){while(scanf("%d %d %d",&m_num1,&m_num2,&m_num3)! =EOF){if(!(m_num1+m_num2<=m_num3 || m_num1+m_num3<=m_num2 || m_num2+m_num3<=m_num1)) {if (m_num1==m_num2 && m_num1==m_num3)cout<<"等边三角形"<else if (m_num1==m_num2 || m_num1==m_num3 || m_num2==m_num3)cout<<"等腰三角形"<elsecout<<"一般三角形"<}else{cout<<"不是三角形"<}}}void main(){int a,b,c;Judge(a,b,c);}第二篇:黑盒测试实验报告 12000字黑盒测试实验报告一实验内容1、系统地学习和理解黑盒测试的基本概念、原理,掌握黑盒测试的基本技术和方法;2、对一个已知的程序进行测试。
XX大学软件质量控制和测试实验(实习)报告实验(实习)名称白盒测试(一)实验(实习)日期 2011-12-2 得分指导老师系专业班级 1 姓名学号一、实验目的理解白盒测试的基本方法,掌握语句覆盖、分支覆盖、条件覆盖、路径覆盖等代码覆盖测试策略,并能应用白盒测试技术设计测试用例二、实验内容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 ) {int mid, low, high;low = 0;high = array.length-1;while ( low <= high ) {mid = (low +high)/2;if ( key = = array [mid] )return mid;else if ( key < array [mid] )high = mid -1;elselow = mid + 1}return -1;}(1)试计算此程序段的McCabe 复杂性;(2)用基本路径覆盖法给出测试路径;(3)为各测试路径设计测试用例。
第一章白盒测试
实验1 语句覆盖
【实验目的】
1、掌握测试用例的设计要素和关键组成部分。
2、掌握语句覆盖标准,应用语句覆盖设计测试用例。
3、掌握语句覆盖测试的优点和缺点。
【实验原理】
设计足够多的测试用例,使得程序中的每个语句至少执行一次。
【实验内容】
根据下面提供的程序,设计满足语句覆盖的测试用例。
1、程序1源代码如下所示:
#include <iostream.h>
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 <<”普通三角形”;
}
输入数据预期输出
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源代码如下所示:
输入数据预期输出
x=6 z=3 x=4 y=6k=35 j=34
x=6 z=3 x=3 y=5k=29 j=25
x=6 z=11 x=4 y=8k=0 j=42
x=6 z=3 x=2 y=4k=23 j=0
3、程序3源代码如下所示:
预期输出
x y magic
4418
400
040
100-585
-1-10
4、程序4源代码如下所示:
printf("请输入借书证号:");
scanf("%d",&borrowerid);
for(int i=0;i<10;i++)
{
if(borrowers[i].id==borrowerid)
{ a=i; flag=false; break; }
}
if(a==0)
printf("\n您的借书证号出错.\n");
if(borrowers[a].books==4) {
printf("\n您已达最大借书量.\n");flag=true;
}
}
printf("请输入图书编号:");
scanf("%d",&bookid);
printf("借书成功!!\n");
printf("借书证号图书编号剩余借书量\n");
printf("%d %d %d\n",borrowers[a].id,bookid,borrowers[a].books-1); }
缺陷:1.当输入借书证号为非数值型时程序会陷入死循环
2.当输入图书编号为非数值型时程序会异常退出
5、程序5源代码如下所示:
#include<stdio.h>
int Search(int somearray[],int size,int value)
{
for(int i=1;i<=size;i++)
{
if(sonearray[i]==value)
return i;
}
return -1;
}
void main()
{
int size=6;
int value;
int array[size]={5,8,-56,235,-65,449};
do
{
printf(“请输入一个整数:”);
scanf(“%d”,&value);
}while(int(value)!=value);
if(int(value)==value)
Search(array,size+1,value);
}
程序存在错误:
修改错误后程序依然无法输出,定义value直接退出程序【实验要求】
1、实验前认真听讲,服从安排,独立思考并与小组成员合作完成实验。
2、撰写实验报告。
3、提交文件统一压缩(命名:姓名+实验项目名称,如张三_语句覆盖.zip)。
实验心得
通过本次实验掌握测试用例的设计要素和关键组成部分,也掌握语句覆盖标准,应用语句覆盖设计测试用例和语句覆盖测试的优点和缺点,了解了白盒测试的基本过程,并能独立查找解决程序中的错误,本次实验受益良多。