给以下代码设计一个黑盒测试和白盒测试的需求规格说明,代码如下:import java.util.Scanner; public class PreDate { public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入年 月 日:"); int year = sc.nextInt(); int month=sc.nextInt(); int day=sc.nextInt(); if(year<1812||year>2017||month<1||month>12||day<1||day>31){ System.out.print("输入不合法!"); } //年份发生改变的情况 if(month==1&&day==1){ year=year-1; month=12; day=31; } //月份发生改变的情况 else if(month!=1&&day==1){ if(month==2||month==4||month==6||month==8||month==9||month==11){ month=month-1; day=31; } else if(month==5||month==7||month==10||month==12){ month=month-1; day=30; } else { if(((year%4==0)&&(year%100>0))||((year%100==0)&&(year%400==0))){ month=month-1; day=29; } else { month=month-1; day=28; } } } //只涉及day的变换 else { day=day-1; } System.out.print(year+" "+month+" "+day); } }
时间: 2023-07-05 08:34:42 浏览: 46
黑盒测试需求规格说明:
输入:
- 输入年份、月份、日期,年份应在1812年至2017年之间,月份应在1至12之间,日期应在1至31之间。
输出:
- 输出年份、月份、日期,表示输入日期的前一天。
- 如果输入不符合要求,输出“输入不合法!”。
白盒测试需求规格说明:
测试年份、月份、日期的边界条件,包括:
- 年份为1812年或2017年;
- 月份为1或12;
- 日期为1或31。
测试年份为闰年和平年的情况,包括:
- 闰年的2月29日到3月1日;
- 平年的2月28日到3月1日。
测试月份为小月(4、6、9、11月)和大月(1、3、5、7、8、10、12月)的情况,包括:
- 小月的最后一天到下个月的第一天;
- 大月的最后一天到下个月的第一天。
测试输入不合法的情况,包括:
- 年份、月份、日期不在规定范围内;
- 日期超出该月的最大天数。
相关问题
举例具体代码说明黑盒测试和白盒测试
黑盒测试和白盒测试都是软件测试的方法。下面我将分别举例具体代码说明这两种测试方法。
1. 黑盒测试
在黑盒测试中,测试人员只关注软件系统的外部行为,而不考虑其内部结构或实现细节。测试人员只能看到输入和输出,无法访问代码或内部数据结构。因此,黑盒测试通常被称为功能测试或行为测试。
举个例子,假设我们要测试一个简单的登录页面,测试人员只需要输入不同的用户名和密码,并检查系统的响应是否符合预期。以下是一个示例代码:
```python
def test_login():
assert login("user1", "password1") == "Welcome, user1!"
assert login("user2", "password2") == "Welcome, user2!"
assert login("user3", "password3") == "Invalid username or password"
```
在这个例子中,测试人员只关注输入和输出,而不考虑内部的实现细节。
2. 白盒测试
在白盒测试中,测试人员可以访问源代码和内部数据结构,以便更全面地测试软件系统。测试人员可以检查代码的各个部分是否按照预期工作,并且可以通过更详细的覆盖率分析来发现隐藏的缺陷或漏洞。
举个例子,假设我们要测试一个简单的计算器程序,以下是一个示例代码:
```python
def test_addition():
assert add(2, 3) == 5
assert add(0.1, 0.2) == 0.3
def test_subtraction():
assert subtract(5, 3) == 2
assert subtract(0.2, 0.1) == 0.1
```
在这个例子中,测试人员可以检查代码的各个部分,如加法和减法函数,以确保它们按照预期工作。测试人员还可以使用代码覆盖率工具来确保测试用例覆盖了程序的所有部分。
请根据三角形类型判断的具体程序需求和相关源代码,进行黑盒测试用例和白盒测试用例设计
黑盒测试用例设计:
1. Equilateral Triangle(等边三角形):输入三个相等的边长,期望得到“等边三角形”输出结果。
2. Isosceles Triangle(等腰三角形):输入两个相等的边长和一个不等的边长,期望得到“等腰三角形”输出结果。
3. Scalene Triangle(不等边三角形):输入三个不相等的边长,期望得到“不等边三角形”输出结果。
4. Invalid Triangle(非三角形):输入任意三个边长,其中任意两个边长之和小于第三个边长,期望得到“非三角形”输出结果。
白盒测试用例设计:
1. 边长输入为整数、小数、负数、0的情况。
2. 边长输入的大小顺序为升序、降序、随机顺序的情况。
3. 对于等腰三角形和不等边三角形的判断,需要考虑边长是否为整数。
4. 对于非三角形的判断,需要考虑任意两个边长之和是否小于第三个边长,以及考虑三角形的三边关系是否符合三角形定理。
下面是一个基于Java的源代码实现:
```
public class Triangle {
public String getTriangleType(double a, double b, double c) {
if (a <= 0 || b <= 0 || c <= 0) {
return "Invalid Triangle";
}
if (a + b <= c || a + c <= b || b + c <= a) {
return "Invalid Triangle";
}
if (a == b && b == c) {
return "Equilateral Triangle";
}
if (a == b || b == c || a == c) {
return "Isosceles Triangle";
}
return "Scalene Triangle";
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)