软件测试上机-lab1

Junit and Eclemma

 

课题作业:

1.eclipse内安装JunithamcrestEclemma

2.编写一个判断三角形的程序并使用jUnit编写其测试类:

Description of triangle problem:

Function triangle takes three integers a,b,c which are length of triangle sides; calculates whether the triangle is equilateral, isosceles, or scalene.

编写三角形方法,输入三个代表三角形三边长的整形数abc,计算并判断三边长是否是等边三角形、等腰三角形或斜角三角形。

 

Java环境以及eclipse已经配置并安装完毕,直接开始安装jUnit/hamcrest/Eclemma。

 

第一步:

分别从:

http://mvnrepository.com/artifact/org.hamcrest/hamcrest-all/1.3

http://mvnrepository.com/artifact/junit/junit/4.12

https://sourceforge.net/projects/eclemma/

下载hamcrestjUniteclemma

下载后解压到一个文件夹中,

 

第二步:在eclipse内引用jUnithamcrestjar包,安装Eclemma

 

首先启动eclipse

 

a引入jar包,步骤如下

 

 

右键单击项目,Build Path -> Configure Build Path -> Add External jars

在弹出的窗口里选中junit-4.12,jarhamcrest-all-1.3.jar,打开文件。引入成功。

 

b安装Eclemma

将刚才解压的Eclemma文件夹复制到[eclipse_home]\dropins

 

随后操作为help -> install new software -> add -> local -> 选择下载好的eclemma安装,根据提示重启。

 

接下来编写判断三角形类别的程序:

创建Triangle类,编写三角形对象的基本属性和方法。

创建Func类,编写用于判断三角形是否为等边、等腰或斜角三角形的方法。

创建FuncTest类:

右键Func类,New -> JUnit Test Case,弹出窗口如下图设置,Finish

 

 

生成FuncTest类,之后编写测试程序。

 

Triangle类代码:

package triangleCal;

public class Triangle {
    
    private int a, b, c;//三角形的三条边
    
    public Triangle(int la, int lb, int lc){//输入三角形的三条边长
        setA(la);
        setB(lb);
        setC(lc);
    }

    public double getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public double getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public double getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }
}

 

Func类代码:

 

package triangleCal;

public class Func {

    private Triangle t;
    private int ans = -1;
    
    public Func(){
        
    }
    
    public void setFunc(int a, int b, int c){//题目要求的函数
        t = new Triangle(a, b, c);
        
        if(isTriangle()){//能否构成三角形
            if(isEquilateral()){//正三角形
                ans = 1;
                System.out.println("正三角形");
            }
            else if(isIsosceles()){//等腰
                ans = 2;
                System.out.println("等腰三角形");
            }
            else{//非等边
                ans = 0;
                System.out.println("非等边三角形");
            }
        }else{//构不成三角形 not a triangle
            ans = -1;
            System.out.println("构不成三角形");
        }
    }
    
    public int getAns() {//test获取结果
        return ans;
    }

    public boolean isEquilateral(){//判断等边【单个函数不验证是否能构成三角形
        if(t.getA() == t.getB() && t.getA() == t.getC())
            return true;
        return false;
    }
    
    public boolean isIsosceles(){//判断等腰【单个函数不验证是否能构成三角形
        if(t.getA() == t.getB() || t.getA() == t.getC() || t.getB() == t.getC())
            return true;
        return false;
    }
    
    public boolean isTriangle(){//判断是否为三角形
        if(t.getA() <= 0 || t.getB() <= 0 || t.getC() <= 0)//边长不小于0
            return false;
        if(t.getA() + t.getB() <= t.getC() || Math.abs(t.getA() - t.getB()) >= t.getC() )//两边之和大于第三边,两边之差小于第三边
            return false;
        return true;
    }

}

 

 

FuncTest类代码:

 

package test;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import triangleCal.Func;

public class FuncTest {

    private Func f;
    
    @Before
    public void setUp() throws Exception {
        f = new Func();
    }

    @Test
    public void testFunc() {
        f.setFunc(1, 1, 1);
        assertEquals(1, f.getAns());//正三角形
        
        f.setFunc(-1, -1, -1);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(-1, 1, 1);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(1, -1, 1);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(1, 1, -1);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(0, 0, 0);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(1, 5, 2);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(1, 5, 4);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(2, 1, 7);
        assertEquals(-1, f.getAns());//不是三角形
        
        f.setFunc(3, 4, 5);
        assertEquals(0, f.getAns());//非等边三角形
        
        f.setFunc(4, 4, 6);
        assertEquals(2, f.getAns());//等腰三角形
    }

    @Test
    public void testIsEquilateral() {        
        f.setFunc(1, 1, 1);
        assertEquals(true, f.isEquilateral());
        
        f.setFunc(50, 50, 50);
        assertEquals(true, f.isEquilateral());
    }

    @Test
    public void testIsIsosceles() {
        f.setFunc(1, 1, 1);
        assertEquals(true, f.isIsosceles());
        
        f.setFunc(2, 1, 1);
        assertEquals(true, f.isIsosceles());
        
        f.setFunc(1, 2, 1);
        assertEquals(true, f.isIsosceles());
        
        f.setFunc(3, 4, 5);
        assertEquals(false, f.isIsosceles());
    }

    @Test
    public void testIsTriangle() {
        f.setFunc(-1, 1, 1);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(1, -1, 1);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(1, 1, -1);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(0, 0, 0);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(-1, -1, -1);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(2, 3, 5);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(7, 3, 2);
        assertEquals(false, f.isTriangle());
        
        f.setFunc(2, 3, 4);
        assertEquals(true, f.isTriangle());
    }

}

 

测试了多种情况,包括一些均为0,均为-1,两边之和等于第三边之类的边界条件。经过一些修改,测试用例均能正常运行。

 

jUnit测试结果截图:

 

eclemma覆盖率测试截图:

 

转载于:https://www.cnblogs.com/hotarufuni/p/8647517.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试技术实践考核上机练习题 软件测试技术实践考核上机考试基本要求(1004) 一、编程语言及上机环境 (1)C/C++编程语言 (2)VC++6.0及以上编译环境 二、考试内容 1、功能(黑盒)测试用例设计编程实现 (1)等价类划分法 (2)边界值分析法 (3)因果图法 (4)决策表法 2、结构(白盒)测试用例设计编程实现 (1)语句覆盖 (2)判定覆盖 (3)条件覆盖 (4)组合覆盖 (5)路径覆盖 (6)独立路径测试 三、上机考试程序 (1)考生抽取试题。 (2)排定考试座位(机位)。 (3)启动上机环境。 (4)开始考试。 (5)程序验收。 (6)适当的口试。 (7)成绩评定。 上机考试时间为120分钟。 上机考试成绩评定的依据主要是根据试题的完成情况和程序的运行结果,以及必要的口试。 四、考生注意事项 1、平时训练与考试 (1)思想重视 明确考试目的,端正考试态度,认真做好上机考试的准备工作。 (2)知识准备 平时认真学习,消化课程内容,熟悉编程环境和工具,认真做好课程实验。 (3)平时训练 应针对上机考试题型做好平时训练。 2、遵守考场纪律 对于下列情况之一者,实践课成绩为不及格。 (1)上机程序运行未通过。 (2)拷贝他人的上机程序。 (3)上机考试严重违纪。 软件测试技术实践考核上机考试练习题(1004) 练习题(一) 1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。例如,输入为2008年8月8日,则该程序的输出为2008年8月10日。NextDate函数包含三个整数变量month、day和year,并且满足下列条件:1≤ month ≤12、1≤ day ≤31和2000≤ year ≤2100。分析各种输入情况,列出为输入变量month、day、year划分的有效等价类: 输入等价类 输入 ID 有效等价类 day 1 1 ≤day≤26 2 day=27 3 day=28 4 day=29 5 day=30 6 day=31 month 7 month=4,6,9,11 8 month=1,3,5,7,8,10 9 month=2 10 month=12 year 11 闰年 12 非闰年
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值