Junit白盒测试测试用例.docx
- 文档编号:4770632
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:17
- 大小:20.77KB
Junit白盒测试测试用例.docx
《Junit白盒测试测试用例.docx》由会员分享,可在线阅读,更多相关《Junit白盒测试测试用例.docx(17页珍藏版)》请在冰豆网上搜索。
Junit白盒测试测试用例
软件测试报告
目录
一、简介2
1.1、编写目的2
1.2、测试范围2
二、测试资源2
2.1、人力资源2
2.2、测试环境2
2.3、测试工具3
三、测试3
3.1、greatCircleDistance()函数3
3.2、compareBytes()函数3
3.3、getHue()函数3
3.4、arraycopy()函数3
3.5、computeIntersection()函数3
四、遇到的困难及解决方法3
一、简介
1.1、编写目的
使用等价类划分方法对于所选的五个功能模块进行测试,并使用Junit方法设计测试用例。
1.2、测试范围
使用等价类划分方法对于所选的五个功能模块进行测试,并使用Junit方法设计测试用例。
二、测试资源
2.1、人力资源
姓名
角色
具体职责和注释
夏玉娜
方案设计人、测试技术设计人
策划总体规模,测试内容,规划测试方案;测试并记录测试情况。
赵秀秀
测试人、记录人、文档整理人
制定测试方案,确定测试深度,测试技术设计;测试并记录测试情况,编写软件测试报告。
陈玉霞
检查人员
检查所写文档,有需要进行修改
2.2、测试环境
下表列出了测试的系统环境
机器环境
工作计算机
软件环境
(相关软件、操作系统等)
WindowsXPSP3
jdk1.6.0_06
EclipsePlatformVersion:
3.3.3
硬件环境
(设备、网络等)
笔记本电脑
2.3、测试工具
用途
工具名称
生产厂商
版本
单元测试
JUNIT
JUnit.org
4.7/3.8
三、测试
3.1、greatCircleDistance()函数
greatCircleDistance()方法计算球面距离,输入的分别为两个点的经度和纬度以及球的半径,以下为其源码:
publicstaticdoublegreatCircleDistance(doublelatitudeS,
doublelongitudeS,doublelatitudeF,doublelongitudeF,doubler)
{
if(latitudeS<=-90||latitudeS>=90||
latitudeF<=-90||latitudeF>=90||
longitudeS<=-180||longitudeS>=180||
longitudeF<=-180||longitudeF>=180||r<0){
thrownewIllegalArgumentException();
}
latitudeS=Math.toRadians(latitudeS);
latitudeF=Math.toRadians(latitudeF);
longitudeS=Math.toRadians(longitudeS);
longitudeF=Math.toRadians(longitudeF);
doubledeltaLongitude=longitudeF-longitudeS;
doublea=Math.cos(latitudeF)*Math.sin(deltaLongitude);
doubleb=Math.cos(latitudeS)*Math.sin(latitudeF);
b-=Math.sin(latitudeS)*Math.cos(latitudeF)
*Math.cos(deltaLongitude);
doublec=Math.sin(latitudeS)*Math.sin(latitudeF);
c+=Math.cos(latitudeS)*Math.cos(latitudeF)
*Math.cos(deltaLongitude);
if(c<0)
c=-c;
returnMath.atan(Math.sqrt(a*a+b*b)/c)*r;
}
一、针对此函数我们运用了等价类划分的方法生成JUnit测试用例总共划分出25个用例,等价类分别是:
●对latitudeS划分:
-90到0,0到90以及不合法输入;
●对longitudeS划分:
-180到0,0到180以及不合法输入;
●对latitudeF划分:
-90到0,0到90以及不合法输入;
●对longitudeF划分:
-180到0,0到180以及不合法输入;
●对半径r的划分:
大于0以及不合法的输入;
以下为具体的测试用例:
latitudeS
longitudeS
latitudeF
longitudeF
r
预期结果
实际测试结果
30
30
30
30
100
0
通过
30
30
30
-120
100
115.98
通过
30
30
-60
30
100
157.08
通过
30
30
-60
-120
100
63.003
通过
30
-60
30
30
100
131.812
通过
30
-60
30
-120
100
89.566
通过
30
-60
-60
30
100
112.296
通过
30
-60
-60
-120
100
135.256
通过
-60
30
30
30
100
157.08
通过
-60
30
30
-120
100
63.003
通过
-60
30
-60
30
100
0
通过
-60
30
-60
-120
100
100.807
通过
-60
-60
30
30
100
112.296
通过
-60
-60
30
-120
100
135.256
通过
-60
-60
-60
30
100
72.273
通过
-60
-60
-60
-120
100
50.536
通过
120
30
60
120
100
抛出异常
通过
-120
30
60
120
100
抛出异常
通过
60
30
120
120
100
抛出异常
通过
60
30
-120
120
100
抛出异常
通过
30
-210
60
120
100
抛出异常
通过
30
210
60
120
100
抛出异常
通过
30
30
60
-210
100
抛出异常
通过
30
30
60
210
100
抛出异常
通过
30
30
60
120
-100
抛出异常
通过
3.2、compareBytes()函数
compareBytes()方法实现了数组的比较,将数组a的内容与数组b的内容比较,比较时将数组中数据视为无符号数。
当a小于b时返回-1,a大于b时返回1,相等时返回0。
以下为源代码:
publicstaticintcompareBytes(byte[]a,intaOff,byte[]b,intbOff,intlen)
{
if(a==null||b==null){
thrownewIllegalArgumentException("Illegalarray");
}
if(aOff<0||bOff<0){
thrownewIllegalArgumentException("Illegaloffset");
}
if(len<0){
thrownewIllegalArgumentException("Illegallen");
}
if(len>a.length-aOff||len>b.length-bOff){
thrownewIllegalArgumentException("Notenoughbyteslefttocompare!
");
}
for(inti=0;i //wewantourcomparisontobeunsigned. finalintab=a[aOff+i]&0xff; finalintbb=b[bOff+i]&0xff; if(ab>bb){ return1; }elseif(ab return-1; } } return0; } 一、针对此函数我们运用了等价类划分的方法生成JUnit测试用例总共划分出22个用例,分别是: ●数组a: 可划分为合法输入与不合法输入(具体为null); ●aOff: 可以划分为<0以及>=a.length; ●数组b: 可划分为合法输入与不合法输入(具体为null); ●bOff: 可以划分为<0以及>=b.length; ●len: 可以划分为合法与不合法(具体包括len<0以及len>a.length-aOff||len>b.length–bOff; ●此外,数组a,b还需考虑符号扩展问题。 对于数组中元素,需分别考虑其大于0、小于0的情况(此时,其对应的无符号数大于或等于0x80)。 以下为具体的测试用例: 数组a aOff 数组b bOff len 预期结果 实际测试结果 null 1 {5,6,2,3} 2 2 抛出异常 通过 {1,2,3} -1 {5,6,2,3} 2 2 抛出异常 通过 {1,2,3} 3 {5,6,2,3} 2 2 抛出异常 通过 {1,2,3} 1 null 2 2 抛出异常 通过 {1,2,3} 1 {5,6,2,3} -2 2 抛出异常 通过 {1,2,3} 1 {5,6,2,3} 4 2 抛出异常 通过 {1,2,3} 1 {5,6,2,3} 2 -1 抛出异常 通过 {1,2,3,4} 1 {5,6,2,3} 2 3 抛出异常 通过 {1,2,3} 1 {5,6,3,3} 2 2 -1 通过 {1,2,3} 1 {5,6,0xf0,3} 2 2 -1 通过 {1,0xf0,3} 1 {5,6,0xf1,3} 2 2 -1 通过 {1,3,3} 1 {5,6,2,3} 2 2 1 通过 {1,0xff,3} 1 {5,6,2,3} 2 2 1 通过 {1,0xf1,3} 1 {5,6,0xf0,3} 2 2 1 通过 {1,3,2} 1 {5,6,3,3} 2 2 -1 通过 {1,3,0xf0} 1 {5,6,3,0xf1} 2 2 -1 通过 {1,3,3} 1 {5,6,3,2} 2 2 1 通过 {1,3,0xf1} 1 {5,6,3,3} 2 2 1 通过 {1,3,0xf1} 1 {5,6,3,0xf0} 2 2 1 通过 {1,3,0xf0} 1 {5,6,3,0xf0} 2 2 0 通过 3.3、getHue()函数 getHue()方法是计算HSL颜色模型中的Hue参数,以下为其源码: publicstaticfloatgetHue(floatred,floatgreen,floatblue,floatmax,floatmin) { floathue=max-min; if(hue>0.0f){ if(max==red){ hue=(green-blue)/hue; if(hue<0.0f){ hue+=6.0f; } } elseif(max==green){ hue=2.0f+(blue-red)/hue; } elseif(max==blue){ hue=4.0f+(red-green)/hue; } else{ thrownewIllegalArgumentException("invalidmax"); } hue*=60f; } elseif(hue<0.0f){ thrownewIllegalArgumentException("max } returnhue; } 一、针对此函数我们运用了等价类划分的方法生成JUnit测试用例总共划分出6个用例,分别是: ●对max参数进行划分: max=blue,max=red,max=red max=green,max不等于以上三种参数中的任何一种,max ●当max=red时,进行如下划分: green>blue,green<=blue 以下为具体的测试用例: red green blue max min 预期结果 实际测试结果 0.2 0.6 0.8 0.8 0.2 200 通过 0.8 0.6 0.2 0.8 0.2 40 通过 0.8 0.2 0.6 0.8 0.2 320 通过 0.6 0.8 0.2 0.8 0.2 80 通过 0.6 0.8 0.2 0.5 0.2 抛出异常 通过 0.6 0.8 0.2 0.2 0.8 抛出异常 通过 3.4、arraycopy()函数 Arraycopy()方法实现了数组的复制,将源数组src的内容复制到数组dst中,以下为源代码: publicstaticvoidarraycopy(byte[]src,intsrc_position,byte[]dst,intdst_position,intlength) { if(src==null) thrownewIllegalArgumentException("srcwasnull"); if(dst==null) thrownewIllegalArgumentException("dstwasnull"); if(length<0) thrownewIllegalArgumentException("lengthwaslessthan0"); if(src_position<0) thrownewIllegalArgumentException("src_positionwaslessthan0.Actualvalue"+src_position); if(src_position+length>src.length) thrownewIllegalArgumentException("src_position+lengthwouldoverrunthesrcarray.Expectedendat"+(src_position+length)+"actualendat"+src.length); if(dst_position<0) thrownewIllegalArgumentException("dst_positionwaslessthan0.Actualvalue"+dst_position); if(dst_position+length>dst.length) thrownewIllegalArgumentException("dst_position+lengthwouldoverrunthedstarray.Expectedendat"+(dst_position+length)+"actualendat"+dst.length); System.arraycopy(src,src_position,dst,dst_position,length); } 一、针对此函数我们运用了等价类划分的方法生成JUnit测试用例总共划分出15个用例,分别是: ●数组Src: 可划分为合法输入与不合法输入(具体为null); ●src_position: 可分为合法输入以及不合法输入,其中不合法输入包括: 小于0,src_position+length>=src.length,其中合法输入又可分为等于0和大于0; ●数组dst: 可划分为合法输入与不合法输入(具体为null),其中合法输入可分为和src是同一数组以及不是同一数组的情况; ●dst_position: 可分为合法输入以及不合法输入,其中不合法输入包括: 小于0,dst_position+length>=dst.length,其中合法输入又可分为等于0和大于0; ●length: 可划分为合法输入以及不合法输入(具体指length<0); 以下为具体的测试用例: 数组src src_position 数组dst dst_position length 预期结果 实际测试结果 null 0 {1,2} 0 2 抛出异常 通过 {1,2} 0 null 0 2 抛出异常 通过 {1,2} -1 {3,4} 0 2 抛出异常 通过 {1,2} 0 {3,4} -1 2 抛出异常 通过 {1,2} 0 {3,4} 0 -1 抛出异常 通过 {1,2,3} 1 {3,4,5,6} 1 3 抛出异常 通过 {1,2,3,4} 1 {3,4,5} 1 3 抛出异常 通过 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16} 0 与src为同一数组 0 5 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16} 通过 同上 0 同上 2 5 {0,1,0,1,2,3,4,,7,8,9,10,11,12,13,14,15,16} 通过 同上 2 同上 0 5 {2,3,4,5,6,5,6,7,8,9,10,11,12,13,14,15,16} 通过 同上 10 同上 3 5 {0,1,2,10,11,12,13,14,8,9,10,11,12,13,14,15,16} 通过 同上 0 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16} 0 5 数组dst不变 通过 同上 0 同上 2 5 {0,1,0,1,2,3,4,,7,8,9,10,11,12,13,14,15,16} 通过 同上 2 同上 0 5 {2,3,4,5,6,5,6,7,8,9,10,11,12,13,14,15,16} 通过 同上 10 同上 3 5 {0,1,2,10,11,12,13,14,8,9,10,11,12,13,14,15,16} 通过 3.5、computeIntersection()函数 computeIntersection()方法计算两个矩形相交部分所形成的矩形的坐标,以下为其源码: publicstaticRectanglecomputeIntersection(intx,inty,intwidth,intheight,Rectangledest) { if(dest==null) returnnull; if(x<0||y<0||width<0||height<0) returnnull; intx1=(x>dest.x)? x: dest.x; intx2=((x+width)<(dest.x+dest.width))? (x+width): (dest.x+ dest.width); inty1=(y>dest.y)? y: dest.y; inty2=((y+height)<(dest.y+dest.height)? (y+height): (dest.y+ dest.height)); dest.x=x1; dest.y=y1; dest.width=x2-x1; dest.height=y2-y1; //Ifrectanglesdon'tintersect,returnzero'dintersection. if(dest.width<0||dest.height<0){ dest.x=dest.y=dest.width=dest.height=0; } returndest; } 一、针对此函数我们运用了等价类划分的方法生成JUnit测试用例总共划分出41个用例,分别是: ●针对第一个矩形的属性坐标(x,y),宽width以及高height大体分为合法输入和不合法输入(具体为输入小于0的数)。 ●合法输入中有根据两个矩形的位置的不同情况又进行了划分,具体而言,设第一个矩形的左上角顶点坐标为(x1,y1),右下角顶点坐标为(x2,y2),x1、x2与第二个矩形横坐标的关系有: 小于其左边横坐标,在二边中间,大于右边横坐标。 y1、y2与第二个矩形纵坐标的关系也可做类似划分。 ●dest: 分为null和合法输入; 以下为具体的测试用例: x y width height dest 预期结果 实际测试结果 0 0 100 100 null null 通过 -10 0 100 100 (10,10,100,100) null 通过 10 -10 100 100 (10,10,100,100) null 通过 10 10 -100 100 (10,10,100,100) null 通过 10 10 100 -100 (10,10,100,100) null
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Junit 测试