当前位置: 首页 > news >正文

黑盒测试(一)(包含源码)

  • 实验目的

(1)掌握测试用例设计的一般方法

(2)掌握基于等价类划分的黑盒测试方法

(3)掌握JUnit测试工具的使用

二、实验环境(仪器设备、软件等)

Windows10 idea

三、实验原理(或要求)

(1)每个测试用例至少包含编号,输入和预期输出三项内容

(2)按照测试用例进行测试并记录测试结果,将测试结果与预期结果进行比较,分析程序中是否有错误、失效和故障,并尝试改正程序

(3)可以使用Junit4或者Junit5,不能使用更低的版本。

四、实验步骤

(1)配置JUnit

如果使用Eclipse,按照步骤添加JUnit或者使用Maven添加JUnit。如果使用IDEA,配置方法类似。

如果使用Maven,pom.xml文件如下代码所示:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

public class Hello {

public int add(int x,int y) {

return x+y;

}

}

import static org.junit.Assert.assertEquals;

import org.junit.Before;

import org.junit.Test;

public class TestHello {

private Hello hello;

@Before

public void setUp() {

hello = new Hello();

}

@Test

public void testAdd() {

assertEquals(2, hello.add(1, 1));

}

}

在Hello.java中没有Error或Failure。

(2)编写教材上例2-8三角形问题的程序,利用等价类划分方法设计测试用例,使用JUnit运行测试用例,记录和分析测试结果。

有效等价类测试用例

编号

测试方法名

输入数据

预期输出

覆盖条件

状态

TC4

testEquilateralTriangle

(3, 3, 3)

等边三角形

三边严格相等

TC5

testIsoscelesTriangle

(3, 3, 4)

等腰非等边三角形

两边相等且第三边不同

TC6

testScaleneTriangle

(5, 6, 7)

一般三角形

三边均不相等且满足不等式

TC7

testNotATriangle

(1, 2, 3)

非三角形

不满足三角形不等式

无效等价类测试用例

编号

测试方法名

输入数据

预期异常/输出

覆盖条件

状态

TC1

testNonIntegerInput

["a", "4", "5"]

NumberFormatException

非数字字符输入

TC2

testZeroInput

["0", "4", "5"]

IllegalArgumentException

零值输入

TC3

testInvalidArgumentCount

["3", "4"]

IllegalArgumentException

参数数量不足

TC8

testNegativeInput

["-3", "4", "5"]

IllegalArgumentException

负值输入

TC9

testOverflowInput

["2147483648",4,5]

IllegalArgumentException

整数溢出

TC10

testDecimalInput

["4", "4.5", "5"]

NumberFormatException

浮点数输入

TC12

testSpecialCharacterInput

["3$", "4", "5"]

NumberFormatException

特殊字符输入

TC13

testEmptyInput

["", "4", "5"]

NumberFormatException

空字符串输入

package com.ruoyi;
import java.util.Arrays;
public class TriangleChecker {// 命令行入口方法public static void main(String[] args) {try {if (args.length != 3) {throw new IllegalArgumentException("错误:需要3个整数参数");}int a = parseInput(args[0]);int b = parseInput(args[1]);int c = parseInput(args[2]);System.out.println(checkTriangle(a, b, c));} catch (Exception e) {System.out.println(e.getMessage());}}// 核心判断逻辑public static String checkTriangle(int a, int b, int c) {validateSides(a, b, c);if (!isValidTriangle(a, b, c)) {return "非三角形";}if (a == b && b == c) {return "等边三角形";}if (a == b || b == c || a == c) {return "等腰非等边三角形";}return "一般三角形";}// 输入验证方法private static int parseInput(String input) {if (!input.matches("^\\d+$")) {throw new NumberFormatException("错误:输入必须为整数");}if (input.contains(".")) {throw new NumberFormatException("错误:输入必须为整数");}long value = Long.parseLong(input);if (value > Integer.MAX_VALUE) {throw new IllegalArgumentException("错误:输入超过最大值");}if (value <= 0) {throw new IllegalArgumentException("输入必须为正整数");}return (int) value;}// 三角形验证逻辑private static boolean isValidTriangle(int a, int b, int c) {int[] sides = {a, b, c};Arrays.sort(sides);return sides[0] + sides[1] > sides[2];}// 参数验证private static void validateSides(int... sides) {for (int side : sides) {if (side <= 0) {throw new IllegalArgumentException("输入必须为正整数");}}}
}import com.ruoyi.TriangleChecker;
import org.junit.Test;
import static org.junit.Assert.*;public class TriangleCheckerTest {// 有效等价类测试@Testpublic void testEquilateralTriangle() { // TC4assertEquals("等边三角形", TriangleChecker.checkTriangle(3, 3, 3));}@Testpublic void testIsoscelesTriangle() { // TC5assertEquals("等腰非等边三角形", TriangleChecker.checkTriangle(3, 3, 4));}@Testpublic void testScaleneTriangle() { // TC6assertEquals("一般三角形", TriangleChecker.checkTriangle(5, 6, 7));}@Testpublic void testNotATriangle() { // TC7assertEquals("非三角形", TriangleChecker.checkTriangle(1, 2, 3));}// 无效等价类测试@Testpublic void testZeroInput() { // TC2try {TriangleChecker.main(new String[]{"0", "4", "5"});fail("未抛出预期异常");} catch (IllegalArgumentException e) {assertEquals("错误:边长必须为正整数", e.getMessage());}}@Testpublic void testNegativeInput() { // TC8try {TriangleChecker.main(new String[]{"-3", "4", "5"});fail("未抛出预期异常");} catch (IllegalArgumentException e) {assertEquals("错误:边长必须为正整数", e.getMessage());}}@Testpublic void testInvalidArgumentCount() { // TC3try {TriangleChecker.main(new String[]{"3", "4"});fail("未抛出预期异常"); // 添加此行} catch (IllegalArgumentException e) {assertEquals("错误:需要3个整数参数", e.getMessage());}}@Testpublic void testDecimalInput() { // TC10try {TriangleChecker.main(new String[]{"4", "4.5", "5"});fail("未抛出预期异常");} catch (NumberFormatException e) {assertEquals("错误:输入必须为整数", e.getMessage());}}@Testpublic void testNonIntegerInput() { // TC1try {TriangleChecker.main(new String[]{"a", "4", "5"});fail("未抛出预期异常");} catch (NumberFormatException e) {assertEquals("错误:输入必须为整数", e.getMessage());}}@Testpublic void testSpecialCharacterInput() { // TC12try {TriangleChecker.main(new String[]{"3$", "4", "5"});fail("未抛出预期异常");} catch (NumberFormatException e) {assertEquals("错误:输入必须为整数", e.getMessage());}}@Testpublic void testEmptyInput() { // TC13try {TriangleChecker.main(new String[]{"", "4", "5"});fail("未抛出预期异常");} catch (NumberFormatException e) {assertEquals("错误:输入必须为整数", e.getMessage());}}@Testpublic void testOverflowInput() { // TC9try {TriangleChecker.main(new String[]{"2147483648", "4", "5"});fail("未抛出预期异常");} catch (IllegalArgumentException e) {assertEquals("错误:输入超过最大值", e.getMessage());}}
}

相关文章:

  • WEB安全--WAF的绕过思路
  • React 轻量级状态管理器Zustand
  • YOLOv8改进:Neck篇——2024.1全新MFDS-DETR的HS-FPN特征融合层解析
  • 【Gin框架】中间件
  • 墨记APP:水墨风记事,书写生活诗意
  • 【AI Study】第四天,Pandas(10)- 实用技巧
  • 软件范式正在经历第三次革命
  • 关于嵌入式编译工具链与游戏移植的学习
  • vue3 电商类网站实现规格的选择
  • leetcode:461. 汉明距离(python3解法,数学相关算法题)
  • simuilink和ROS2数据联通,Run后一直卡在Initializting
  • 基于微信小程序和云开发的企业绿色融资平台的设计与实现
  • OpenCV CUDA模块设备层-----在GPU上计算两个uchar1类型像素值的反正切(arctangent)比值函数atan2()
  • 用Java将PDF转换成GIF
  • 从Excel到知识图谱再到数据分析:数据驱动智能体构建指南
  • 软件功能测试的测试标准
  • 优化数据库查询
  • 如何在Windows上安装.NET Framework 详细教程分享
  • react中使用antd的form表单去受控switch时初始值没有正确显示
  • Java面试题024:一文深入了解微服务消息队列RocketMQ
  • 阿里巴巴怎样做网站/长沙网站推广seo
  • 万网建网站教程/app开发费用标准
  • 佛山快速建站哪家服务专业/线上推广的方式
  • h5手机网站制作/百度应用商店官网
  • 给金融的做网站 犯法吗/寻找客户资源的网站
  • 快速建网站软件/优化网站搜索排名