黑盒测试和白盒测试_第1页
黑盒测试和白盒测试_第2页
黑盒测试和白盒测试_第3页
黑盒测试和白盒测试_第4页
黑盒测试和白盒测试_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件测试报告 黑盒测试与白盒测试软件测试程序一从键盘输入三个数,判断由这三个数能否够成一个三角形,如能并判定是等边三角形还是等腰三角形、直角三角形,还是其它三角形,当输入的三个数中有一个小于等于0时,程序结束。#include <iostream>using namespace std;void sort(int &a,int &b,int &c) if( a<b ) int temp=a; a=b; b=temp; if( b<c ) int temp=b; b=c; c=temp; if( a<b ) int temp=a; a=b;

2、b=temp; int main() int a,b,c; while(1) cout<<endl<<"输入三角形的三条边(整数):n" cin>>a>>b>>c; sort(a,b,c); if(c<=0) cout<<"无效数字.n" break; if( a>=(b+c) ) cout<<"不能构成三角形.n" continue; if( (a=b) | (b=c) ) cout<<"等腰三角形.n"

3、if( (a=b)&&(b=c) ) cout<<"等边三角形.n" int x=a*a-b*b-c*c; if ( x=0 ) cout<<"直角三角形.n" else if ( x<0 ) cout<<"钝角三角形.n" else cout<<"锐角三角形.n" return 0;黑盒测试一、等价类划分某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角

4、形、等腰三角形及等边三角形时,分别作计算 "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。) 解:分析题目中给出和隐含的对输入条件的要求: (1)整数  (2)三个数 (3)非零数 (4)正数  (5)两边之和大于第三边     (6)等腰 (7)等边 如果 a 、 b 、 c 满足条件( 1 ) ( 4 ),则输出下列四种情况之一:如果不满足条件(5),则程序输出为 " 非三角形 " 。 2

5、)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。 列出等价类表并编号 覆盖有效等价类的测试用例:    a      b      c         

6、0;    覆盖等价类号码3      4      5             (1)-(7)    4      4      5       &

7、#160;     (1)-(7),(8)    4      5      5             (1)-(7),(9)        5      4   &#

8、160;  5             (1)-(7),(10)    4      4      4             (1)-(7),(11)  覆盖无效等价类的测试用例:白盒测试业务处理流

9、程的思路用流程图表示如下:1)跟前面三组分析一样,把相同的逻辑提取到一个函数中,然后三次调用。2)根据直角三角形的特点:斜边是最长的,所以我们可以事先写一个函数来找到最长的边,然后把它赋值给c,这样处理之后,只需要一次调用判定(a2+b2=c2)的函数了。程序设计对于软件的质量和软件实施过程的难易程度起着至关重要的作用。好的设计,即使聘用没什么经验的开发人员都很容易产生出高质量的代码出来;而差的设计,即使是经验很丰富的开发人员也很容易产生缺陷,特别是可重用性、可测试性、可维护性、可扩展性等方面的缺陷。经过以上的分析,下面来看一下如何设计。在下图中,每个方框都使用一个函数来实现,为了跟用户界面分

10、开,最顶上的函数不要写在main函数中。把思路用流程图的方式表达出来,不用停留在脑袋里:具体的函数的调用关系图:复杂模块triangleType的流程图:测试环境 WindowsXP系统环境下运行Microsoft Visual C+ 6.0l 软件测试程序二通过输入年份和天数,用来判定是否是闰年和所查询的是具体的几月几日。例如:输入2000年第60天会显示2000年2月29日 输入2000年第61天会显示2000年3月1日 输入2001年第60天会显示2001年3月1日 输入2001年第59天会显示2001年2月28日一、黑盒测试测试环境:Windows XP, JAVA-PRO划分等价类:

11、根据计算闰年公式,得出以下几个输出情况,由输入数据计算正确的为有效等价类,不正确的为无效等价类。输入条件有效等价类无效等价类是闰年X%4=0&&X%100!=0)|(X%400=0)X%4!=0&&X%100=0)|(X%400!=0)不是闰年X%4!=0&&X%100=0)|(X%400!=0)X%4=0&&X%100!=0)|(X%400=0)确定测试用例在软件程序中输入两个数字分别为年和天数。按照划分等价类分成闰年和不是闰年将其列表如下:序号年和天数覆盖等价类结果1200060(1)(2)闰年2000年2月29日220006

12、1(1)(2)闰年2000年3月1日3200159(3)(4)不是闰年2001年2月28日4200160(3)(4)不是闰年2001年3月1日结果:测试分析:为了全面覆盖所有的分支中的条件,在程序中输入了各种可能的数据组合,从测试中可以看出来,该程序的所有分支中的各个条件的所有可能的情况都至少执行了一次,没有发现错误。二、白盒测试测试环境:Windows XP, JAVA-PROimport java.io.*;public class LeapYear public static void main(String arg)throws IOException String n,m; int

13、s,y,b=0,c,d,e; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in);从键盘输入数字 System.out.println("请输入你想测的年份和小于365的数字"); n=keyin.readLine(); m=keyin.readLine(); s=Integer.parseInt(n); 将输入数据转换成整形数据 y=Integer.parseInt(m); 将输入数据转换成整形数据 if(s%4=0&&s%100!=0)|(s%400=0)&am

14、p;&y>31) 判断闰年的公式 int a=31,29,31,30,31,30,31,31,30,31,30,31; 设置天数的数组 d=y/30; c=d+1; e=y; while(e>0) e=e-ab; 对天数进行计算 b+; e=e+ab-1; System.out.println(s+"年"+c+"月"+e+"日" ); else int a=31,28,31,30,31,30,31,31,30,31,30,31;设置天数的数组 d=y/30; c=d+1; e=y; while(e>0) e=

15、e-ab; 对天数进行计算 b+; e=e+ab-1; System.out.println(s+"年"+c+"月"+e+"日" ); 输出结果XX年XX月XX日输入年份和天数判断是否是闰年闰年不是闰年TRUE 1FALSE 2语句覆盖本程序有两个不同的路径测试用例对应输出2000602000年2月29日2000612000年3月1日2001592001年2月28日2001602001年3月1日图(1-1)条件覆盖测试用例取值条件具体取值通过路径200060输出:2000年2月29日TRUEX%4=0&&X%100!=

16、0)|(X%400=0)P(1)200061输出:2000年3月1日TRUEX%4=0&&X%100!=0)|(X%400=0)P(1)200159输出:2001年2月28日FALSEX%4!=0&&X%100=0)|(X%400!=0)P(2)200160输出:2001年3月1日FALSEX%4!=0&&X%100=0)|(X%400!=0)P(2)图(1-2)白盒测试检查了软件内部的活动是否都符合设计要求,在这里,我们利用逻辑覆盖中的语句覆盖以及条件覆盖,设计相应的测试用例,是分支中的各个条件的所有可能的情况都至少执行了一次,并将数据绘制成表

17、,以便研究发现错误或Bug(见图1-1,表1-2)经过白盒测试,程序运行正常,没有发现错误。程序清单:import java.io.*;public class LeapYear public static void main(String arg)throws IOException String n,m; int s,y,b=0,c,d,e; BufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in); System.out.println("请输入你想测的年份和小于365的数字"); n=keyin.readLine(); m=keyin.readLine(); s=Integer.parseInt(n); y=Integer.parseInt(m); if(s%4=0&&s%100!=0)|(s%400=0)&&y>31) int a=31,29,31,30,31,30,31,31,30,31,30,31; d=y/30; c=d+1; e=y; whi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论