软件测试赛样题第 9 套

 题目1:

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

被测试代码:

import java.text.MessageFormat;

public class TM11 {
    public String tm11(int a, int b) {
        if (a >9 && b >5){
            return MessageFormat.format("x=a*a*b的值:{0}",a*a*b);
        }else {
            if (a<0 && b<0){
                return MessageFormat.format("x=a-b的值:{0}",a-b);
            }else {
                return MessageFormat.format("x=a+b的值:{0}",a+b);
            }
        }
    }
}

测试代码:

import org.junit.Test;

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

public class TM11Test {
    private TM11 tm11 = new TM11();
    @Test
    public void Test01(){
        assertThat(tm11.tm11(10,6),startsWith("x=a*a*b的值:600"));
    }
    @Test
    public void Test02(){
        assertThat(tm11.tm11(-1,-1),startsWith("x=a-b的值:0"));
    }
    @Test
    public void Test03(){
        assertThat(tm11.tm11(4,4),startsWith("x=a+b的值:8"));
    }
}

 题目2:

邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或com.cn。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。

被测试代码:

public class TM12 {
    public String tm12(String email,String password){
        boolean emailCheck = email.matches("[a-zA-Z]{5}@(163|126)\\.com(\\.cn)?");
        boolean passwordCheck = password.matches("[0-9]{6,}");
        if (emailCheck && passwordCheck){
            return "信息正确";
        }else if (!emailCheck && passwordCheck){
            return "邮箱地址不符合要求";
        }else if (emailCheck && !passwordCheck){
            return "密码不符合要求";
        }else {
            return "邮箱地址和密码不符合要求";
        }
    }
}

测试代码:

import org.junit.Test;

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

public class TM12Test {
    private TM12 tm12 = new TM12();
    @Test
    public void Test01(){
        assertThat(tm12.tm12("abcse@163.com","1234567"),equalTo("信息正确"));
    }
    @Test
    public void Test02(){
        assertThat(tm12.tm12("abce@163.com","1234576"),equalTo("邮箱地址不符合要求"));
    }
    @Test
    public void Test03(){
        assertThat(tm12.tm12("abcse@163.com","1237"),equalTo("密码不符合要求"));
    }
    @Test
    public void Test04(){
        assertThat(tm12.tm12("abc163.com","1237"),equalTo("邮箱地址和密码不符合要求"));
    }
}

 题目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:

根据下列流程图编写程序实现相应分析处理并显示结果。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。

被测试代码:

public class TM8 {
    public String tm8(String username,String password){
        if (username == null && password == null){
            return "用户名或密码不能为空";
        } else if (username.equals("admin") && password.equals("123")) {
            return "登录成功";
        } else if (!username.equals("admin") && password.equals("123")) {
            return "请输入正确的用户名";
        }else if (username.equals("admin") && !password.equals("123")) {
            return "请输入正确的密码";
        }else {
            return "请输入正确的用户名和密码";
        }
    }
}

测试代码:

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 TM8Test {
    private TM8 tm8 = new TM8();
    private String username;
    private String password;
    private String result;
    public TM8Test(String username,String password,String result){
        this.username = username;
        this.password = password;
        this.result = result;
    }

    @Parameterized.Parameters
    public static Collection param(){
        return Arrays.asList(new Object[][] {
                {null,null,"用户名或密码不能为空"},
                {"admin","123","登录成功"},
                {"admi","123","请输入正确的用户名"},
                {"admin","1234","请输入正确的密码"},
                {"adn","125","请输入正确的用户名和密码"},
        });
    }

    @Test
    public void Test01(){
        assertEquals(tm8.tm8(username,password),result);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值