利用等价类划分的方法,给出以下程序足够的测试用例:import java.util.Scanner; public class Triangle { public static void main(String[] args) { Scanner input = new Scanner(System.in); int a = input.nextInt(); int b = input.nextInt(); int c = input.nextInt(); if (a < 0 || a > 200 || b < 0 || b > 300 || c < 0 || c > 200) { System.out.println("数据输入有错,不满足0<a、b、c≤200"); } else if (a + b <= c || b + c <= a || a + c <= b) { System.out.println("不构成三角形"); } else if (a == b && b == c) { System.out.println("等边三角形"); } else if (a == b || b == c || c == a) { System.out.println("等腰三角形"); } else { System.out.println("普通三角形"); } } }
时间: 2024-03-28 15:39:50 浏览: 69
这个程序的输入是三个整数a,b和c,用来表示三角形的三条边长。根据等价类划分的方法,我们可以将输入的a,b和c分成以下几类:
1. a、b、c均在[0,200]范围内,且能构成三角形。
2. a、b、c均在[0,200]范围内,但无法构成三角形。
3. a、b、c有至少一个小于0或大于200的值。
对于第一类,我们可以选择以下测试用例:
- a=1,b=1,c=1,期望输出“等边三角形”。
- a=3,b=4,c=5,期望输出“普通三角形”。
- a=200,b=200,c=1,期望输出“等腰三角形”。
对于第二类,我们可以选择以下测试用例:
- a=1,b=2,c=3,期望输出“不构成三角形”。
- a=100,b=100,c=201,期望输出“不构成三角形”。
- a=200,b=1,c=200,期望输出“不构成三角形”。
对于第三类,我们可以选择以下测试用例:
- a=-1,b=2,c=3,期望输出“数据输入有错,不满足0<a、b、c≤200”。
- a=100,b=300,c=200,期望输出“数据输入有错,不满足0<a、b、c≤200”。
- a=201,b=200,c=200,期望输出“数据输入有错,不满足0<a、b、c≤200”。
相关问题
将以下程序利用等价类划分的方法给出足够的测试用例,列出等价类表,并利用Junit框架编写测试程序,执行这些测试用例。import java.util.Scanner; public class Triangle { public static void main(String[] args) { Scanner input = new Scanner(System.in); int a = input.nextInt(); int b = input.nextInt(); int c = input.nextInt(); if (a < 0 || a > 200 || b < 0 || b > 300 || c < 0 || c > 200) { System.out.println("数据输入有错,不满足0<a、b、c≤200"); } else if (a + b <= c || b + c <= a || a + c <= b) { System.out.println("不构成三角形"); } else if (a == b && b == c) { System.out.println("等边三角形"); } else if (a == b || b == c || c == a) { System.out.println("等腰三角形"); } else { System.out.println("普通三角形"); } } }
根据代码,我们可以得到以下的等价类划分:
1. a、b、c都在0-200之间的整数范围内
2. a、b、c不满足0<a、b、c≤200
3. 无法构成三角形
4. 等边三角形
5. 等腰三角形
6. 普通三角形
接下来,我们可以列出等价类表:
|等价类|输入值范围|代表值|
|---|---|---|
|1|a, b, c∈[1, 200]|3, 4, 5, 50, 100, 200|
|2|a, b, c<=0或a, b, c>200|0, -1, 201, 250|
|3|a+b<=c或b+c<=a或a+c<=b|1, 2, 3, 199, 200, 201|
|4|a=b=c|1, 2, 3, 5, 200|
|5|a=b≠c或a=c≠b或b=c≠a|1, 2, 3, 5, 50, 100, 200|
|6|a≠b≠c|1, 2, 3, 5, 50, 100, 200|
接下来,我们可以利用Junit框架编写测试程序,执行这些测试用例。以下是测试程序的代码:
```
import org.junit.Assert;
import org.junit.Test;
public class TriangleTest {
@Test
public void test1() {
String result = TriangleClassifier.classify(3, 4, 5);
Assert.assertEquals("普通三角形", result);
}
@Test
public void test2() {
String result = TriangleClassifier.classify(50, 50, 50);
Assert.assertEquals("等边三角形", result);
}
@Test
public void test3() {
String result = TriangleClassifier.classify(50, 50, 100);
Assert.assertEquals("等腰三角形", result);
}
@Test
public void test4() {
String result = TriangleClassifier.classify(1, 2, 3);
Assert.assertEquals("不构成三角形", result);
}
@Test
public void test5() {
String result = TriangleClassifier.classify(0, 50, 100);
Assert.assertEquals("数据输入有错,不满足0<a、b、c≤200", result);
}
@Test
public void test6() {
String result = TriangleClassifier.classify(-1, 50, 100);
Assert.assertEquals("数据输入有错,不满足0<a、b、c≤200", result);
}
@Test
public void test7() {
String result = TriangleClassifier.classify(201, 50, 100);
Assert.assertEquals("数据输入有错,不满足0<a、b、c≤200", result);
}
@Test
public void test8() {
String result = TriangleClassifier.classify(50, 100, 200);
Assert.assertEquals("不构成三角形", result);
}
@Test
public void test9() {
String result = TriangleClassifier.classify(1, 2, 2);
Assert.assertEquals("等腰三角形", result);
}
@Test
public void test10() {
String result = TriangleClassifier.classify(1, 2, 200);
Assert.assertEquals("不构成三角形", result);
}
}
```
测试程序中包含了10个测试用例,覆盖了以上的等价类。我们可以执行测试程序,验证输出结果是否与预期相同。
用Java使用等价类划分的方法设计测试用例。要求明确给出等价类划分的思路以使用 junit 单元测试框架实现插入排序和冒泡排序。
等价类划分是一种软件测试设计技术,它将一组输入数据划分为若干等价类,每个等价类代表了一组具有相同特性的输入数据。这样,可以选择一些代表性的输入数据进行测试,从而在测试用例数目不多的情况下,覆盖尽可能多的情况。
对于插入排序和冒泡排序,我们可以将输入数据划分为以下几个等价类:
1. 空数组
2. 只包含一个元素的数组
3. 包含多个相同元素的数组
4. 包含多个不同元素的数组
接下来,我们可以针对每个等价类设计一组测试用例,使用JUnit单元测试框架来进行测试。
以插入排序为例,我们可以设计如下的测试用例:
```java
import org.junit.Assert;
import org.junit.Test;
public class InsertionSortTest {
@Test
public void testSortEmptyArray() {
int[] arr = {};
InsertionSort.sort(arr);
Assert.assertArrayEquals(new int[]{}, arr);
}
@Test
public void testSortSingleElementArray() {
int[] arr = {5};
InsertionSort.sort(arr);
Assert.assertArrayEquals(new int[]{5}, arr);
}
@Test
public void testSortDuplicateElementsArray() {
int[] arr = {3, 2, 3, 1, 1};
InsertionSort.sort(arr);
Assert.assertArrayEquals(new int[]{1, 1, 2, 3, 3}, arr);
}
@Test
public void testSortDifferentElementsArray() {
int[] arr = {6, 2, 4, 3, 5, 1};
InsertionSort.sort(arr);
Assert.assertArrayEquals(new int[]{1, 2, 3, 4, 5, 6}, arr);
}
}
```
同样的,我们也可以设计冒泡排序的测试用例,代码如下:
```java
import org.junit.Assert;
import org.junit.Test;
public class BubbleSortTest {
@Test
public void testSortEmptyArray() {
int[] arr = {};
BubbleSort.sort(arr);
Assert.assertArrayEquals(new int[]{}, arr);
}
@Test
public void testSortSingleElementArray() {
int[] arr = {5};
BubbleSort.sort(arr);
Assert.assertArrayEquals(new int[]{5}, arr);
}
@Test
public void testSortDuplicateElementsArray() {
int[] arr = {3, 2, 3, 1, 1};
BubbleSort.sort(arr);
Assert.assertArrayEquals(new int[]{1, 1, 2, 3, 3}, arr);
}
@Test
public void testSortDifferentElementsArray() {
int[] arr = {6, 2, 4, 3, 5, 1};
BubbleSort.sort(arr);
Assert.assertArrayEquals(new int[]{1, 2, 3, 4, 5, 6}, arr);
}
}
```
在JUnit单元测试框架中,每个测试用例都是一个带有@Test注解的方法,我们可以在方法中编写对被测方法的调用和预期结果的比较。运行测试用例时,JUnit会自动执行所有带有@Test注解的方法,并输出测试的结果。
阅读全文