package com.itheima.domain;import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
public class Test2 {/** 声明一个静态的Scanner工具类,以便调用同时最后结束时才关闭 */private static Scanner input =new Scanner(System.in);public static void main(final String[] args) throws IOException {int[] range = new int[2];Test2 t = new Test2();try {System.out.println("====得到正确的输入范围====");// 输入范围检查,并返回正确的输入范围int[] inputRange =t.test1(range);System.out.println("====等价类划分技术====");// 使用等价类划分技术返回三个区间int[][] equalClass = t.test2(inputRange);for (int[] row : equalClass) {System.out.println(Arrays.toString(row));}System.out.println("====边界值划分技术====");// 边界值分析返回六个边界值数组int[][] criticValues = t.test3(equalClass);for(int[] row : criticValues) {System.out.println(Arrays.toString(row));}t.alert(3);t.alert(4);System.out.println("====随机数生成技术====");System.out.print("请输入要生成的随机数数目: ");int n =input.nextInt();//随机数生成返回随机数组Object[] randomValues = t.test4(equalClass,n);for(int i = 0;i<randomValues.length;i++){HashSet<Integer> row = (HashSet<Integer>)randomValues[i];System.out.println(row.toString());}input.close();}catch (ArithmeticException e){System.out.println(e.getClass().getName()+e.getMessage()+"\n请重新运行程序输入合理数值");}}public int[] test1(int[] range) throws IOException {// Scanner input = new Scanner(System.in);int errorType = 0;do {System.out.println("请输入下界与上界");String stringLow = input.next();String stringHigh = input.next();if(this.isInteger(stringLow) && this.isInteger(stringHigh)){int low = Integer.parseInt(stringLow);int high = Integer.parseInt(stringHigh);if(this.isProper(low,high)){range[0] = low;range[1] = high;break;}else{errorType = 2;this.alert(errorType);}} else {errorType = 1;this.alert(errorType);}} while (errorType != 0);return range;}public int[][] test2(int[] inputRange){if(inputRange[0]<=Integer.MIN_VALUE || inputRange[1] >= Integer.MAX_VALUE)throw new ArithmeticException("Integer overflow");int[][] rangeArray = new int[3][2];rangeArray[0]= new int[]{Integer.MIN_VALUE,inputRange[0]-1};rangeArray[1]= inputRange;rangeArray[2]= new int[]{inputRange[inputRange.length-1]+1,Integer.MAX_VALUE};return rangeArray;}/*** 边界值分析,防止重复设置了两个非1的常量* @param rangeArray* @return*/public int[][] test3(int[][] rangeArray){int limit  =3;if(rangeArray[0][1]-rangeArray[0][0] ==limit ||  rangeArray[1][1]-rangeArray[1][0] ==limit ||  rangeArray[2][1]-rangeArray[2][0] ==limit) {throw new RuntimeException("区间长度为3不能生成不重复的边界值");}int[][] criticValues = new int[6][3];
//        6个边界值的加一减一criticValues[0]= new int[]{rangeArray[0][0]-1,rangeArray[0][0],rangeArray[0][0]+1};criticValues[1]= new int[]{rangeArray[0][1]-1,rangeArray[0][1],rangeArray[0][1]+3};criticValues[2]= new int[]{rangeArray[1][0]-3,rangeArray[1][0],rangeArray[1][0]+1};criticValues[3]= new int[]{rangeArray[1][1]-1,rangeArray[1][1],rangeArray[1][1]+3};criticValues[4]= new int[]{rangeArray[2][0]-3,rangeArray[2][0],rangeArray[2][0]+1};criticValues[5]= new int[]{rangeArray[2][1]-1,rangeArray[2][1],rangeArray[2][1]+1};return criticValues;}/*** 随机数生成* @param rangeArray* @param n* @return*/public Object[] test4(int[][] rangeArray,int n){if(!isLegalRangeArray(rangeArray,n)){throw new RuntimeException("区间过小不足以生成指定数目的随机数");}Object[] randomValues = new Object[3];for(int i = 0;i<randomValues.length;i++) {randomValues[i] = this.randomValueSet(i, n, rangeArray);}return randomValues;}/** 用index控制生成第几行的随机数 */public HashSet<Integer> randomValueSet(int index,int n,int[][] rangeArray){// 使用HashSet来去重HashSet<Integer> randomValueSet = new HashSet<>();// 如果正常用int,这里减去一个Integer.MIN_VALUE就很容易整数溢出long gap = (long)rangeArray[index][1]-(long)rangeArray[index][0];while(randomValueSet.size() < n){// temp最大也就取到给的区间的最大值,因而可以用intint temp = (int)(Math.random()*gap+rangeArray[index][0])+1;randomValueSet.add(temp);}return randomValueSet;}/** 是否是整数 */public boolean isInteger(String input) {// 检测整数的正则表达式final String regex = "^-?[1-9]\\d*$|0?";return input.matches(regex);}/** 范围适合 low<high */public boolean isProper(int low, int high) {if (low > high)return false;return true;}/** 错误报告 */public void alert(int warningType) {switch (warningType){case 1 : System.out.println("不是整数!请重新输入");return;case 2 : System.out.println("下界大于上界!请重新输入");return;case 3 : System.out.println("Warning: Integer下界越界!");return;case 4 : System.out.println("Warning: Integer上界越界!");return;}}public boolean isLegalRangeArray(int[][] rangeArray,int limit){if(limit >   rangeArray[0][1]-rangeArray[0][0] || limit > rangeArray[1][1]-rangeArray[1][0] || limit > rangeArray[2][1]-rangeArray[2][0]){return false;}return true;}
}

软件测试 等价类/边界值分析/随机数生成相关推荐

  1. 黑盒测试等价类划分法、边界值分析法

    一.实验目的 能够掌握黑盒测试的等价类划分法.边界值分析法原理 能够运用等价类划分法.边界值分析法写测试用例 二.实验任务 根据商城注册模块的要求用等价类划分法和边界值法写测试用例 根据注册程序的要求 ...

  2. 【软件测试】使用边界值分析法和等价类划分法计算佣金

    [软件测试]使用边界值分析法和等价类划分法计算佣金 前言 1.边界值分析法 1.1 边界分析 1.1.1 设计测试用例 1.2 程序源码 2.等价类划分法 2.1 划分等价类 2.2 为有效等价类设计 ...

  3. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

    文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...

  4. 学习软件测试(三)测试用例、测试用例的设计方法(等价类划分法、边界值分析法、判定表法、因果图法、正交排列法、场景法、错误推测法)

    目录 测试用例 测试用例八大要素 测试用例的设计方法 等价类划分法 等价类操作步骤 边界值分析法 边界范围 边界值法的操作步骤 案例1 案例2 判定表法 为什么使用判定表法 判定表法的四个组成部分 判 ...

  5. 【软件测试】黑盒测试技术——等价类划分和边界值分析

    黑盒测试技术也称功能测试.数据驱动的测试.基于规格说明的测试. 测试方法有:等价类划分法.边界值分析法.决策表法.因果图法.错误推测法.正交试验法和场景法. 本文先介绍等价类划分法和边界值分析法. 等 ...

  6. 软件测试基础知识(二)------------等价类划分法、边界值分析法、场景法、错误推测法、bug定义/类型/优先级/生命周期/跟踪管理

    等价类划分法 是把程序的输入域划分成若干个子集合(等价类),然后从每个子集合(等价类)中选取少数具有代表性的数据作为测试的输入数据. 在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的.--- ...

  7. 软件测试除了边界值还有什么,在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值...

    北方猎人(cnitpm.com) 10:58:42 在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值. A.X=9,X=10,X=100,X=1 ...

  8. 软件测试基础知识之黑盒测试-边界值分析法

    边界值分析法 大量的软件测试实践表明,故障往往出现在定义域值域的边界上,而不是在其内部 为检测边界附近的处理专门设计测试用例,通常会有很好的测试效果 边界值分析法是一种很实用的黑盒测试用例方法,它具有 ...

  9. 《软件测试技术实战:设计、工具及管理》—第2章 2.1节运用等价类/边界值设计测试用例...

    本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第2章,第2.1节运用等价类/边界值设计测试用例,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公 ...

  10. 5.0、软件测试——边界值分析法

    5.0.软件测试--边界值分析法 边界范围节点: 边界值分析法解决边界位数限制问题: 选取正好等于.刚好大于.刚好小于 边界的值作为测试数据 ->         > 上点:边界上的点(正 ...

最新文章

  1. vs2012中使用localdb实例还原一个sql server 2008r2版本的数据库
  2. 简单的导出表格和将表格下载到桌面上。
  3. Spring Security中的SecurityContext和SecurityContextHolder是什么?
  4. 基于mint-ui的城市选择3级联动
  5. div和div之间画横线_javascript – jQuery – 使用画布在div之间绘制线条
  6. java并发AtomicIntegerArray
  7. linux安装gcc9.1
  8. 数据结构课程设计(二)---算术表达式求值
  9. 浏览器安装fehelper插件,亲测可行
  10. 你电脑上「最引以为豪」的软件是什么?
  11. python 折线图 excel_如何使用python读取excel数据并绘制折线图
  12. 《UnityAPI.Color颜色》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Color+Lerp+RGBToHSV+gamma+linear+立钻哥哥++OK++)
  13. 通知 Notification的介绍,以及自定义通知
  14. vue IE兼容性问题汇总
  15. 撤回的微信消息腾讯服务器有记录吗,教你如何查看对方已经撤回的微信消息
  16. SQL积累 计算相除之比+% ,转型,拼接, 多个左联,求和,统计,截取等
  17. Docker入门实战看这篇就够了(最新详细以及踩过的坑)
  18. 2020 GDUT Rating Contest III (Div. 2) B - Loan Repayment 题解
  19. 炫酷超拽!推荐一款Vue开发的OA系统,功能还不错哟!!!
  20. 数据库候选关键词怎么求_关系模式中候选关键字的图论求解法

热门文章

  1. Android解决“此用户无法使用开发者选项“异常
  2. 颠覆式创新看世界,读《第二曲线创新》有感
  3. App自动绑定的五大应用场景
  4. epub与mobi转换工具
  5. Windows10 修改键位映射
  6. jQuery实现鼠标滑过图片放大效果
  7. 第一篇博客,shader练习
  8. 浏览器主页被更改成7654主页
  9. 电机正反转c语言注释,直流电机正反转C程序.doc
  10. Hibernate JPA 效率低下的原因