2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务四 单元测试 试题分析

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务四 单元测试 试题分析

我是小白,请各位大佬发表自己的看法

题目1:

题目1:任意输入2个正整数值分别存入x、y中,据此完成下述分析:若x≤0或y≤0,则提示:“输入不符合要求。”;若2值相同,则提示“可以构建圆形或正方形”;若2<|x-y|≤5,则提示“可以构建椭圆”;若|x-y|>5,则提示“可以构建矩形”;若0<|x-y|≤2,提示“可以构建长方形”。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。

我们对题目进行拆分,

得到需求:

1)任意输入2个正整数值分别存入x、y中

2)若x≤0或y≤0,则提示:“输入不符合要求。”;

3)若2值相同,则提示“可以构建圆形或正方形”;

4)若2<|x-y|≤5,则提示“可以构建椭圆”; 

5)若|x-y|>5,则提示“可以构建矩形”;

6)若0<|x-y|≤2,提示“可以构建长方形”

下一步对针对需求编写java代码

得到主方法:

	public static String method(int x,int y) {
		
		if(x<=0||y<=0) {
			return "输入不符合要求。";
		}else if(x==y) {
			return "可以构建圆形或正方形";
		}else if(Math.abs(x-y)>2 && Math.abs(x-y)<=5) {
			return "可以构建椭圆";
		}else if(Math.abs(x-y)>5) {
			return "可以构建矩形";
		}else if(Math.abs(x-y)>0 && Math.abs(x-y)<=2) {
			return "可以构建长方形";
		}else {
			return null; // 无可能走到这里
		}
	}

这样我们就可以进行正常单元测试分析了:

得到5个需求对于的用例

	//若x≤0或y≤0,则提示:“输入不符合要求。”;
	@Test
	public void test01() {
		String result = method(-1,-1);
		Assert.assertEquals("输入不符合要求。", result);
	}
	//若2值相同,则提示“可以构建圆形或正方形”;
	@Test
	public void test02() {
		String result = method(1,1);
		Assert.assertEquals("可以构建圆形或正方形", result);
	}
	//若2<|x-y|≤5,则提示“可以构建椭圆”; 
	@Test
	public void test03() {
		String result = method(5,1);
		Assert.assertEquals("可以构建椭圆", result);
	}
	//若|x-y|>5,则提示“可以构建矩形”;
	@Test
	public void test04() {
		String result = method(7,1);
		Assert.assertEquals("可以构建矩形", result);
	}
	//若0<|x-y|≤2,提示“可以构建长方形”
	@Test
	public void test05() {
		String result = method(3,1);
		Assert.assertEquals("可以构建长方形", result);
	}

题目2:

题目2: 输入一个大写字母一个小写字母。根据输入的第一个字母和周几英文单词的第一个大写字母判断是周几,如果无法根据第一个大写字母判断,则继续根据输入的第二个小写字母进行判断,最终返回正确的英文周几的单词。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。

我们对题目进行拆分,

得到需求:

	1)输入一个大写字母一个小写字母。

	2)根据输入的第一个字母和周几英文单词的第一个大写字母判断是周几,如果无法根据第一个大写字母判断,

	3)则继续根据输入的第二个小写字母进行判断,最终返回正确的英文周几的单词。

在此提供相关英文单词
Monday(星期一)
Tuesday(星期二)
Wednesday(星期三)
Thursday(星期四)
Friday(星期五)
Saturday(星期六)
Sunday(星期日)

下一步对针对需求编写java代码

得到主方法:

	public static String getDay(char f, char s) {  
	    if (f == 'M') {  
	        return "Monday";  
	    } else if (f == 'W') {  
	        return "Wednesday";  
	    } else if (f == 'F') {  
	        return "Friday";  
	    } else if (f == 'T' && s == 'u') {  
	        return "Tuesday";  
	    } else if (f == 'T' && s == 'h') {  
	        return "Thursday";  
	    } else if (f == 'S' && s == 'a') {  
	        return "Saturday";  
	    } else if (f == 'S' && s == 'u') {  
	        return "Sunday";  
	    } else {  
	        return "Invalid day"; // 如果没有匹配的情况,返回无效信息  
	    }  
	}

进行正常单元测试分析了:

得到8个需求对于的用例

	@Test
	public void test01() {
		Assert.assertEquals("Monday", getDay('M','h'));
	}
	@Test
	public void test02() {
		Assert.assertEquals("Wednesday", getDay('W','h'));
	}
	@Test
	public void test03() {
		Assert.assertEquals("Friday", getDay('F','h'));
	}
	@Test
	public void test04() {
		Assert.assertEquals("Tuesday", getDay('T','u'));
	}
	@Test
	public void test05() {
		Assert.assertEquals("Thursday", getDay('T','h'));
	}
	@Test
	public void test06() {
		Assert.assertEquals("Saturday", getDay('S','a'));
	}
	@Test
	public void test07() {
		Assert.assertEquals("Sunday", getDay('S','u'));
	}
	@Test
	public void test08() {
		Assert.assertEquals("Invalid day", getDay('a','h'));
	}

题目3:

题目3:题目3:进行系统注册时通常需要输入用户名和密码,其中用户名要求由8个字母组成、密码由6个(含6)以上数字组成。满足要求,则提示“注册成功”,否则根据实际情况提示“**不符合要求”(**为用户名或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中containsString断言判断输出文字期望结果值和实际返回值是否一致。(这里我用的是assertequals)

我们对题目进行拆分,

得到需求:

 	1)输入用户名和密码,

	2)其中用户名要求由8个字母组成、密码由6个(含6)以上数字组成。满足要求,则提示“注册成功”

	3)否则根据实际情况提示“**不符合要求”(**为用户名或密码)

下一步对针对需求编写java代码

得到主方法:

	public static String method(String userName,String passWord) {
		char[] chararray =userName.toCharArray();
		int count = 0;
		for(int i =0;i<chararray.length;i++) {
			if(Character.isLetter(chararray[i])) {
				count++;
			}
		}
		
		char[] chararray01 =passWord.toCharArray();
		int count01 = 0;
		for(int i =0;i<chararray01.length;i++) {
			if(Character.isDigit(chararray01[i])) {
				count01++;
			}
		}
		
		if(count==8 && count01>=6) {
			return "注册成功";
		}else if(count!=8) {
			return "用户名不符合要求";
		}else if(count01<6) {
			return "密码不符合要求";
		}else {
			return null; //运行不到此
		}
		
	}

进行正常单元测试分析了:

得到3个需求对于的用例

	@Test
	public void test01() {
		String result= method("abllllll","123456");
		Assert.assertEquals("注册成功", result);
	}
	@Test
	public void test02() {
		String result= method("abllll","123456");
		Assert.assertEquals("用户名不符合要求", result);
	}
	@Test
	public void test03() {
		String result= method("abllllll","1234");
		Assert.assertEquals("密码不符合要求", result);
	}

题目4:

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

我们对题目进行拆分,

得到需求:

	1)输入小写的字符串。

	2)如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;

	3)如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;

	4)否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。

下一步对针对需求编写java代码

由于设计到参数化,所有这里直接提供了整个类

package cn.lanqiao;

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

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


@RunWith(Parameterized.class)
public class Test05 {
	
	/*
	1)输入小写的字符串。

	2)如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;

	3)如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;

	4)否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。
	*/
	private String le;
	private String msg;
	public Test05 (String le,String msg) {
		this.le=le;
		this.msg=msg;
	}
	
	
	@Parameterized.Parameters
	public static Collection par() {
		return Arrays.asList(new Object[][] {
				{"abcd","替换前缀后的字符串为:efcd"},
				{"bccd","替换cd后的字符串为:bcgh"},
				{"pop","大写字母的字符串为:POP"}
		});
	}
	
	
	public  String method() {
		
		if(le.indexOf("ab")==0) {
			le = le.replace("ab", "ef");
			return "替换前缀后的字符串为:"+le;
		}else if(le.lastIndexOf("cd")!=-1) {
			le = le.replace("cd", "gh");
			return "替换cd后的字符串为:"+le;
		}else {
			le = le.toUpperCase();
			return "大写字母的字符串为:"+le;
		}
	}
	
	@Test
	public void test() {
		String actual = method();
		Assert.assertEquals(msg, actual);
	}

	


}

  • 32
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值