软件测试赛样题第 6 套

  题目1:

根据下列流程图编写程序实现相应分析处理并显示结果。返回结果“a=x:”(x为2、3或4);其中变量x、y均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断期望结果值和实际返回值是否一致。

被测试代码:

public class TM1 {
    public String tm1(int x,int y){
        int a = 0;
        if ( x>= 80 && y>60){
            if (!(x >=90 || y>= 90)){
                a = 2;
            }
        }else if (x <= 70 || y<= 70){
            a= 3;
        }else {
            a = 4;
        }
        return MessageFormat.format("a={0}",a);
    }
}

测试代码:

import org.hamcrest.CoreMatchers;
import org.junit.Test;

import static org.hamcrest.MatcherAssert.assertThat;

public class TM1Test {
    private TM1 tm1 = new  TM1();

    @Test
    public void Test01(){
        assertThat(tm1.tm1(80,80), CoreMatchers.equalTo("a=2"));
    }
    @Test
    public void Test02(){
        assertThat(tm1.tm1(70,70), CoreMatchers.equalTo("a=3"));
    }
    @Test
    public void Test03(){
        assertThat(tm1.tm1(75,75), CoreMatchers.equalTo("a=4"));
    }
}

 题目2:

根据输入的三条边值判断能组成何种三角形。三条边为变量a、b、c,范围为1≤边值≤10,不在范围内,提示“输入边值不在范围内”。不满足任意两边之和必须大于第三边,提示“输入边值不能组成三角形”。输入边值能组成三角形,只有2条边相同,显示“能组成等腰三角形”;三条边相等,显示“能组成等边三角形”;边值不满足特殊三角形显示“能组成普通三角形”。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。

被测试代码:

public class TM14 {
    public String tm14(int a,int b,int c){
        if (!(a>=1 && a<=10) || !(b>=1 && b<=10) || !(c>=1 && c<=10)){
            return "输入的边值不在范围内";
        }else if (!(a+b>c && a+c>b && c+b>a)){
            return "输入的边值不能组成三角形";
        }else if (a == b && b == c){
            return "能组成等边三角形";
        }else if ((a ==b) || (a == c) || (b == c)){
            return "能组成等腰三角形";
        }else {
            return "能组成普通三角形";
        }
    }
}

测试代码:

import org.junit.Test;

import static junit.framework.TestCase.assertEquals;

public class TM14Test {
    private TM14 tm14 = new TM14();
    @Test
    public void Test01(){
        assertEquals("输入的边值不在范围内",tm14.tm14(100,5,5));
    }
    @Test
    public void Test02(){
        assertEquals("输入的边值不能组成三角形",tm14.tm14(8,2,5));
    }
    @Test
    public void Test03(){
        assertEquals("能组成等腰三角形",tm14.tm14(6,6,7));
    }
    @Test
    public void Test04(){
        assertEquals("能组成等边三角形",tm14.tm14(6,6,6));
    }
    @Test
    public void Test05(){
        assertEquals("能组成普通三角形",tm14.tm14(3,4,5));
    }

}

 题目3:

企业根据利润提成来发放奖金。将利润金额划分6个档位来提成。

档位一:利润低于或等于10万元部分,提成10%。

档位二:利润高于10万元并且低于或等于20万元部分,提成7.5%。

档位三:利润高于20万元并且低于或等于40万元部分,提成5%。

档位四:利润高于40万元并且低于或等于60万元部分,提成3%。

档位五:利润高于60万元并且低于或等于100万元部分,提成1.5%。

档位六:利润高于100万元部分,提成1%。

编写程序根据输入的当月利润x计算出最终得到的总提成,输入利润已万为单位,x为整数。返回结果按照档次输出“总提成:y万”,y为计算的提成值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中is断言判断输出文字期望结果值和实际返回值是否一致。

被测试代码:

import java.text.MessageFormat;

public class TM7 {
    public String tm7(int x){
        if (x > 100){
            return MessageFormat.format("总提成{0}万",
                    ((x-100)*0.01)+(40*0.015)+(20*0.03)+(20*0.05)+(10*0.075)+10*0.1);
        }else if (x >60 && x<= 100){
            return MessageFormat.format("总提成{0}万",
                    ((x - 60)*0.015)+(20*0.03)+(20*0.05)+(10*0.075)+10*0.1);
        } else if (x >40 && x<= 60) {
            return MessageFormat.format("总提成{0}万",
                    ( (x-40) * 0.03) + (20 * 0.05) + (10 * 0.075) + 10 * 0.1);
        }else if (x >20 && x<= 40) {
            return MessageFormat.format("总提成{0}万",
                    ((x=20) * 0.05) + (10 * 0.075) + 10 * 0.1);
        }else if (x >10 && x<= 20) {
            return MessageFormat.format("总提成{0}万",
                    ((x-10) * 0.075) + 10 * 0.1);
        }else {
            return MessageFormat.format("总提成{0}万",
                    (x>0? x:0)*0.1);
        }
    }
}

测试代码:

import org.junit.Test;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

public class TM7Test {
    private TM7 tm7 = new TM7();

    @Test
    public void Test01() {
        assertThat(tm7.tm7(10), is("总提成1万"));
    }

    @Test
    public void Test02() {
        assertThat(tm7.tm7(20),is("总提成1.75万"));
    }

    @Test
    public void Test03() {
        assertThat(tm7.tm7(40), is("总提成2.75万"));
    }

    @Test
    public void Test04() {
        assertThat(tm7.tm7(60), is("总提成3.35万"));
    }

    @Test
    public void Test05() {
        assertThat(tm7.tm7(100), is("总提成3.95万"));
    }

    @Test
    public void Test06() {
        assertThat(tm7.tm7(120), is("总提成4.15万"));
    }
}

 题目4:

输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。

被测试代码:

public class TM4 {
    public String tm4(String str) {
        if (str.matches("ab.*")){
            return "替换前缀后的字符串为:".concat(str.replaceFirst("ab","ef"));
        }else if (str.matches(".*cd")){
            return "替换cd后的字符串为:".concat(str.substring(0,str.length()-2)+"gh");
        }else {
            return "大写字符的字符串是".concat(str.toUpperCase());
        }
    }
}

测试代码:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;

import static junit.framework.TestCase.assertEquals;

@RunWith(Parameterized.class)
public class TM4Test {
   private TM4 tm4 = new TM4();
   private String str;
   private String result;

   public TM4Test(String str,String result){
       this.str = str;
       this.result = result;
   }
   @Parameterized.Parameters
   public static Collection parm(){
        return Arrays.asList(new Object[][]{
           {"abcdef","替换前缀后的字符串为:efcdef"},
           {"cdcdcd","替换cd后的字符串为:cdcdgh"},
           {"wrwr","大写字符的字符串是WRWR"}
       });
    }

    @Test
    public void Test01(){
        assertEquals(result,tm4.tm4(str));
    }
}

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值