软件测试基础与实践
实验报告
实验名称: 黑盒测试实验二 实验地点: 机房 实验日期: 学生姓名: 学生学号:
一、实验目的
(1)能根据待测软件的特点,选择合适的方法对软件进行黑盒测试(功能测试); (2)学习测试用例的书写。
实验 1:随机测试 VS 黑盒测试 VS 白盒测试
在游戏引擎开发中,检测物体碰撞是一项重要的基础功能。 为简单起见,我们这里只考虑二维平面空间的情况,并用 RectManager 程序判断平面上任意两矩形的相交关系 (A:不相交,B:相交:B1:相交为一个区域,B12:包含,B13:完全重合,B2:交点为 1 个点,B3:交点为 1 条线段) , 如果相交,则同时给出相交部分的面积。 我们假设二维平面为 iphone4 屏幕(640*960 分辨率),且所有矩形的边都与坐标轴平行。 计算机图形学中,通常用左上角和右下角的坐标来表示一个矩形。
(1) 请编写一简单程序,随机生成两个矩形的数据,请用这些随机数据对 RectManager 进行测试。
提示:a) 使用随机函数生成大量测试用例(如 10 万个随机测试用例) ;
b) 注意随机测试用例产生的范围应比屏幕范围稍微大一点。屏幕范围:x 取值范围[0-639],y 取值范
围[0-959];
c) 在测试用例生成程序中,同时调用 RectManager 中的方法直接驱动测试自动执行;
d) 对大量的随机测试进行统计,分析这些随机测试用例对两矩形相交的各种关系的覆盖情况(统计上
的命中 率) ;
(2)请用黑盒测试方法,设计相应的测试用例来测试程序; 提示:程序运行命令行:java -jar RectManager.jar
(3)请分析 RectManager 的实现源代码,利用基本路径测试方法,设计相应的测试用例来测试程序; 只要求针对 solve()方法进行测试。
(4)在上述实验的基础上分析三种测试方法发现缺陷的能力上有何差别。
(1) 通过编写程序测试,代码如下:
public class test{
float area;//Recode area
int nFlag; //recode the relation of two rectangle
public static void main(String[] args){
int leftA,leftB,rightA,rightB,topA,topB,bottomA,bottomB; int[]result = {0,0,0,0,0,0,0,0};
Random random = new Random();
for(int i = 0;i < 100000;i++){
leftA = Math.abs(random.nextInt())d0; leftB = Math.abs(random.nextInt())d0; rightA = Math.abs(random.nextInt())d0+leftA; rightB = Math.abs(random.nextInt())d0+leftB; topA = Math.abs(random.nextInt())?0; topB = Math.abs(random.nextInt())?0;
bottomA = Math.abs(random.nextInt())?0+topA; bottomB = Math.abs(random.nextInt())?0+topB;
if (!(leftA>=0 && rightA<960)|| !(topA>=0 && bottomA<640) }
if (!(leftB>=0 && rightB<960)|| !(topB>=0 && bottomB<640)
||!(rightB>=leftB) || !(bottomB>=topB)){
System.out.println(\result[7]++;
||!(rightA>=leftA) || !(bottomA>=topA)){
System.out.println(\result[6]++; continue;
}
continue;