前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于三种黑盒测试技术生成测试用例(PKU)

基于三种黑盒测试技术生成测试用例(PKU)

作者头像
葆宁
发布2019-04-18 15:10:27
1K0
发布2019-04-18 15:10:27
举报
文章被收录于专栏:FREE SOLO

依据以下步骤生成测试用例设计:

1. 输入范围(从命令行输入)检查: a. 整数类型检测, b. 下界小于等于上界; c. 不正确时提示重新输入; 2. 应用等价类划分技术,对于输入范围进行划分:返回一个有效区间,两个无效区间 3. 应用边界值分析技术,对于各区间去边界值,并返回边界值。注意返回的边界值里没有重复值 4. 应用随机数生成器对每个区间生成指定数量(从命令行输入)的随机值。注意返回的值里没有重复值 5. 主程序:调用功能1至4,生成一组测试用例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
import com.sun.org.apache.xpath.internal.operations.Lt;

import java.util.*;

/**
 * Created by ${wuyupku} on 2019/3/25 17:52
 */


public class BlackBoxTest {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int b = 0;
        while (true) {
            try {
                System.out.println("请输入待划分区间下界:");
                b = input.nextInt();
                System.out.println("您输入的区间下界为:" + b);
                System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                break;  //如果是整数,则退出while循环
            } catch (Exception e) {  //这里用Exception来捕获这个异常
                e.printStackTrace();
                System.out.println("您输入的" + b + "不是整数,请重新输入一个整数!");
                System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                input.next();  //继续输入
            }
        }

        int c = 0;
        while (true) {
            try {
                System.out.println("请输入待划分区间上界:");
                c = input.nextInt();
                System.out.println("您输入的区间上界为:" + c);
                System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                break;  //如果是整数,则退出while循环
            } catch (Exception e) {  //这里用Exception来捕获这个异常
                e.printStackTrace();
                System.out.println("您输入的" + c + "不是整数,请重新输入一个整数!");
                System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                input.next();  //继续输入
            }
        }
        try {
            if (b > c) {
                System.out.println("区间下界" + b + "大于" + "区间上界" + c + "请重新输入!");
                return;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        int a = 0;
        while (true) {
            try {
                System.out.println("请输入一个数值:");
                a = input.nextInt(); //如果输入的不为整数,会抛出一个InputMismatchException异常
                break;  //如果是整数,则退出while循环
            } catch (Exception e) {  //这里用Exception来捕获这个异常
                e.printStackTrace();
                System.out.println("您输入的不是整数,请重新输入一个整数!");
                System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                input.next();  //继续输入
            }
        }
        if (a >= b && a <= c) {
            System.out.println("您输入数值" + a + "位于区间[" + b + "," + c + "]内,有效!数值为:" + a);
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        } else if (a < b) {
            System.out.println(a + "您输入数值" + a + "不位于区间[" + b + "," + c + "]内,无效!因为小于区间下界值:" + b);
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            return;
        } else if (a > c) {
            System.out.println(a + "输入数值不位于区间[" + b + "," + c + "]内,无效!因为大于区间上界值:" + c);
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            return;
        }
        System.out.println("您把区间划分为(" + Integer.MIN_VALUE + "," + b + ")和[" + b + "," + c + "]" + "和(" + c + "," + Integer.MAX_VALUE + ")三部分");
        System.out.println("您的无效区间为(" + Integer.MIN_VALUE + "," + b + ")和(" + c + "," + Integer.MAX_VALUE + ")两部分");
        System.out.println("您的有效区间为[" + b + "," + c + "]");
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        System.out.println("请输入生成随机数数目:");
        int d = input.nextInt();
        System.out.println("您输入的随机生成的数值为:" + d + "个");

        if (d < (c-b)) {
            System.out.println("您输入数值有效!满足区间绝对值!");
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        } else if (d < (c-b)) {
            System.out.println("您输入数值无效!越界!");
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            return;
        } else if (d == c-b) {
            System.out.println("您输入数值有效!满足区间绝对值!");
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            return;
        }

        Set<Integer> set = new HashSet<Integer>();
        boolean flag = true;
        while (true) {
            int z = (int) (Math.random() * (Math.abs(c)+Math.abs(b))%(c-b+1) + b);//[-10,10]先生成[0,20],再取模,再加小
            flag = set.add(z);
            if (!flag) {
                continue;
            }
            if (set.size() >= d) {
                break;
            }
        }
        System.out.println("系统随机生成数组"+ new TreeSet(set));
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        for (Iterator iter = new TreeSet(set).iterator(); iter.hasNext(); ) {
            Integer value = (Integer) iter.next();
            System.out.println("在您输入的有效区间["+b+","+c+"]内,随机生成的"+d+"个数的值分别为:" +value);
        }

        Set<Integer> set2 = new HashSet<Integer>();
        for(int g = 0;g<d;g++) {
            int x = (int) (Math.random() * (Integer.MAX_VALUE)%(Integer.MAX_VALUE-c+1) + c);//[-10,10]先生成[0,20],再取模,再加小
            set2.add(x);
        }
        System.out.println("系统随机生成数组"+ new TreeSet(set2));
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        for (Iterator iter = new TreeSet(set2).iterator(); iter.hasNext(); ) {
            Integer value = (Integer) iter.next();
            System.out.println("在您输入的右无效区间("+c+","+Integer.MAX_VALUE+"]内,随机生成的"+d+"个数的值分别为:" +value);
        }

        Set<Integer> set3 = new HashSet<Integer>();
        for(int t = 0;t<d;t++) {
            int y = (int) (Math.random() * (Integer.MAX_VALUE)%(Integer.MAX_VALUE-Math.abs(b)+1) + Math.abs(b));
            int v = Math.negateExact(y);
            set3.add(v);
        }
        System.out.println("系统随机生成数组"+ new TreeSet(set3));
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        for (Iterator iter = new TreeSet(set3).iterator(); iter.hasNext(); ) {
            Integer value = (Integer) iter.next();
            System.out.println("在您输入的左无效区间("+Integer.MIN_VALUE+","+b+")内,随机生成的"+d+"个数的值分别为:" +value);
        }

    }

}

测试结果:

请输入待划分区间下界: a java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at BlackBoxTest.main(BlackBoxTest.java:18) 您输入的0不是整数,请重新输入一个整数!

代码语言:javascript
复制
请输入待划分区间下界:
-100
您输入的区间下界为:-100

请输入待划分区间上界: b java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at BlackBoxTest.main(BlackBoxTest.java:34) 您输入的0不是整数,请重新输入一个整数!

代码语言:javascript
复制
请输入待划分区间上界:
100
您输入的区间上界为:100

请输入一个数值: 99.9 java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) 您输入的不是整数,请重新输入一个整数! at BlackBoxTest.main(BlackBoxTest.java:59) 请输入一个数值: a java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at BlackBoxTest.main(BlackBoxTest.java:59) 您输入的不是整数,请重新输入一个整数!

代码语言:javascript
复制
请输入一个数值:
100
您输入数值100位于区间[-100,100]内,有效!数值为:100

您把区间划分为(-2147483648,-100)和[-100,100]和(100,2147483647)三部分 您的无效区间为(-2147483648,-100)和(100,2147483647)两部分 您的有效区间为[-100,100]

代码语言:javascript
复制
请输入生成随机数数目:
10
您输入的随机生成的数值为:10个
您输入数值有效!满足区间绝对值!

系统随机生成数组[-98, -79, -55, 4, 11, 34, 50, 81, 84, 95]

代码语言:javascript
复制
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:-98
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:-79
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:-55
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:4
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:11
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:34
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:50
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:81
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:84
在您输入的有效区间[-100,100]内,随机生成的10个数的值分别为:95
系统随机生成数组[65916050, 322765351, 663207706, 822506996, 940339348, 1371578696, 1674182506, 1678719171, 1904368099, 2122322881]

在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:65916050 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:322765351 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:663207706 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:822506996 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:940339348 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:1371578696 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:1674182506 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:1678719171 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:1904368099 在您输入的右无效区间(100,2147483647]内,随机生成的10个数的值分别为:2122322881 系统随机生成数组[-2090180587, -1459055808, -1423727464, -1393278527, -1384147565, -1312037019, -918076924, -606507128, -373155926, -346304159]

代码语言:javascript
复制
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-2090180587
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-1459055808
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-1423727464
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-1393278527
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-1384147565
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-1312037019
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-918076924
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-606507128
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-373155926
在您输入的左无效区间(-2147483648,-100)内,随机生成的10个数的值分别为:-346304159
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 依据以下步骤生成测试用例设计:
  • 测试结果:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档