首页 > 其他分享 >软件测试 黑盒测试 边界值分析法测试 人民币数字到大写转换

软件测试 黑盒测试 边界值分析法测试 人民币数字到大写转换

时间:2022-12-15 10:23:45浏览次数:40  
标签:边界值 System equals length 测试 print out zhengshu 软件测试

实验四 黑盒测试之边界值分析法测试  人民币数字到大写转换

实验要求:

要求进行黑盒测试,使用边界值分析法分别进行测试。另外请考虑,如果使用因果图法进行测试,此程序的输入域中存在哪种制约条件,并举例说明。据此实验生成测试报告3;测试报告中至少包含等价类列表,依据边界值法生成的测试用例及输入域边界测试结论及输入域存在的制约条件。

 

 

import java.util.Scanner;


public class test3 {
    //定义数字对应的汉字
    public final static String[] num = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    //定义单位
    public final static String[] unit = {"", "拾", "佰", "仟"};

    public static void main(String[] args) {
        while (true) {
            try {
                System.out.println("请输入数字:");
                Scanner sc = new Scanner(System.in);
                String input = sc.next();
                System.out.print("人民币");
                //对数字进行整数和小数的分隔
                String[] numString = input.split("\\.");
                //若是整数则将其转换为有小数的数
                if (numString.length == 1) {
                    input += ".0";
                    numString = input.split("\\.");
                }
                //将整数进行分隔
                String[] zhengshu = numString[0].split("");
                //将数字前的0去掉
                while (zhengshu[0].equals("0") && zhengshu.length > 1) {
                    String[] tmp = new String[zhengshu.length - 1];
                    for (int i = 0; i < zhengshu.length - 1; i++) {
                        tmp[i] = zhengshu[i + 1];
                    }
                    zhengshu = tmp;
                }

                //对小数进行分隔
                String[] xiaoshu = numString[1].split("");
                //若格式不对则抛出异常
                if (xiaoshu.length > 2 || numString.length != 2 || zhengshu.length > 12) {
                    throw new Exception();
                } else if (xiaoshu.length == 1 && xiaoshu[0].equals("0")) {
                    //小数部分为0的情况
                        printInfo(zhengshu);
                        System.out.println("整");

                } else if (xiaoshu.length == 1 && !xiaoshu[0].equals("0")) {

                    printInfo(zhengshu);
                    System.out.print(num[Integer.parseInt(xiaoshu[0])] + "角");
                } else if (xiaoshu.length == 2) {

                    printInfo(zhengshu);
                    System.out.print(num[Integer.parseInt(xiaoshu[0])] + "角");
                    System.out.print(num[Integer.parseInt(xiaoshu[1])] + "分");
                }
                break;
            } catch (NumberFormatException e) {
                System.out.println("输入有误");
            } catch (Exception e) {
                System.out.println("输入有误");
            }
        }

    }

    public static void printInfo(String[] zhengshu) {
        int tmp = 0; //该标志位用来记录对unit的操作地址
        int zeroNum = 0; //记录从右到左第5到第8位0的个数

        //数字为亿级
        if (zhengshu.length > 8) {
            for (int i = 0; i < zhengshu.length - 8; i++) {
                int nums = Integer.parseInt(zhengshu[i]);

                //判断相邻是否为0
                if (zhengshu[i].equals("0") && zhengshu[i + 1].equals("0") && i + 1 < zhengshu.length - 8) {
                    continue;
                }

                //若0在级的最后一位则不输出
                if (i == zhengshu.length-8-1 &&zhengshu[zhengshu.length-8-1].equals("0")){
                    break;
                }

                //若有相邻的0则输出最后一个0
                if (zhengshu[i].equals("0")) {
                    System.out.print(num[nums]);
                } else {
                    System.out.print(num[nums] + unit[zhengshu.length - 8 - 1 - i]);
                }
            }
            System.out.print("亿");

            for (int i = zhengshu.length - 8; i < zhengshu.length - 4; i++) {
                int nums = Integer.parseInt(zhengshu[i]);

                if (zhengshu[i].equals("0") && zhengshu[i + 1].equals("0") && i + 1 < zhengshu.length - 4) {
                    tmp++;
                    zeroNum++;
                    continue;
                }

                if (i == zhengshu.length - 5 && zhengshu[zhengshu.length - 5].equals("0")) {
                    break;
                }

                if (zhengshu[i].equals("0")) {
                    System.out.print(num[nums]);
                    tmp++;
                } else {
                    System.out.print(num[nums] + unit[3 - tmp]);
                    tmp++;
                }
            }
            if (zeroNum != 3) {
                System.out.print("万");
            }
            tmp = 0;
            for (int i = zhengshu.length - 4; i < zhengshu.length; i++) {
                int nums = Integer.parseInt(zhengshu[i]);

                if (i + 1 < zhengshu.length && zhengshu[i].equals("0") && zhengshu[i + 1].equals("0")) {
                    tmp++;
                    continue;
                }

                if (i == zhengshu.length - 1 && zhengshu[zhengshu.length - 1].equals("0")) {
                    break;
                }

                if (zhengshu[i].equals("0")) {
                    System.out.print(num[nums]);
                    tmp++;
                } else {
                    System.out.print(num[nums] + unit[3 - tmp]);
                    tmp++;
                }
            }
            System.out.print("元");
            tmp = 0;

        } else if (zhengshu.length > 4) {  //数字为万级
            for (int i = 0; i < zhengshu.length - 4; i++) {
                int nums = Integer.parseInt(zhengshu[i]);

                if (zhengshu[i].equals("0") && zhengshu[i + 1].equals("0") && i + 1 < zhengshu.length - 4) {
                    continue;
                }

                if (i == zhengshu.length - 4 -1 && zhengshu[zhengshu.length-4-1].equals("0")){
                    break;
                }

                if (zhengshu[i].equals("0")) {
                    System.out.print(num[nums]);
                } else {
                    System.out.print(num[nums] + unit[zhengshu.length - 4 - 1 - i]);
                }
            }
            System.out.print("万");
            for (int i = zhengshu.length - 4; i < zhengshu.length; i++) {
                int nums = Integer.parseInt(zhengshu[i]);
                if (i + 1 < zhengshu.length && zhengshu[i].equals("0") && zhengshu[i + 1].equals("0")) {
                    tmp++;
                    continue;
                }

                if (i == zhengshu.length - 1 && zhengshu[zhengshu.length - 1].equals("0")) {
                    break;
                }

                if (zhengshu[i].equals("0")) {
                    System.out.print(num[nums]);
                    tmp++;
                } else {
                    System.out.print(num[nums] + unit[3 - tmp]);
                    tmp++;
                }
            }
            System.out.print("元");
        } else if (zhengshu.length <= 4) {
            int snums = Integer.parseInt(zhengshu[0]);
            if (snums==0){
                System.out.print("零");
            }
                for (int i = 0; i < zhengshu.length; i++) {
                    int nums = Integer.parseInt(zhengshu[i]);
                    if ( i + 1 < zhengshu.length && zhengshu[i].equals("0") && zhengshu[i + 1].equals("0")) {
                        continue;
                    }

                    if (i == zhengshu.length-1 && zhengshu[zhengshu.length-1].equals("0")){
                        break;
                    }

                    if (zhengshu[i].equals("0")) {
                        System.out.print(num[nums]);
                    } else {
                        System.out.print(num[nums] + unit[zhengshu.length - 1 - i]);
                    }
                }

            System.out.print("元");
        }
    }
}

 

确认等价类,列出等价类表:

输入条件

有效等价类

编号

无效等价类

编号

输入整数部分

整数部分存在

1

整数不存在(但有.)

8

整数长度大于等于0小于等于12

2

负数

9

长度大于12

存在非数字字符

输入小数部分

小数部分存在

3

小数不存在(但有.)

10

小数长度大于等于1小于等于2

4

负数

11

长度大于2

12

存在非数字字符

13

数字中间含有0

中间位只含有一个0

5

数字不含0

14

中间位含有多个0

6

存在非数字的字符

15

角位是0,而分位不是0

数字小数点后第一位位0,第二位不是0

7

角位不是0

16

存在非数字的字符

17

根据边界值生成的测试用例表:

输入条件

测试编号

用例说明

测试数据

预期结果

测试结果

数字

1

以0作为输入

0

人民币零元整

结果正确

2

以最大合法数输入

999999999999.99

人民币玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分

结果正确

3

以最小合法数字作为输入

0.01

人民币零元零角壹分

结果正确

4

超过最大或小值作为输入

1000000000000

人民币输入有误

结果正确

5

-1

人民币输入有误

结果正确

6

小数部分为0

100

人民币壹佰元整

结果正确

7

小数部分为1

100.1

人民币壹佰元壹角

结果正确

8

小数部分为2

100.01

人民币壹佰元零角壹分

结果正确

9

小数部分为3

100.001

人民币输入有误

结果正确

字符

10

首位有字符

A12

人民币输入有误

结果正确

11

末尾有字符

1aa

人民币输入有误

结果正确

12

有两个小数点

12..1

人民币输入有误

结果正确

因果图:

原因

结果

输入非法字符 (c1)

输入有错,请重新输入 (e1)

超出数字范围 (c2)

输出相应的大写金额 (e2)

输入正确数字 (c3)

在因果图中c1与c2存在制约条件,c1和c2中至多有一个可能为1,为互异的制约条件。

决策表:

判定表

1

2

3

4

5

6

7

8

原因

 

C1

0

0

0

0

1

1

1

1

C2

0

0

1

1

0

0

1

1

C3

0

1

0

1

0

1

0

1

10

               

结果

 

E1

   

 

 

 

E2

 

           

错误

   

 

 

根据边界值生成的测试用例执行后结果演示:

演示(测试编号1):

演示(测试编号2):

演示(测试编号3):

演示(测试编号4):

演示(测试编号5):

演示(测试编号6):

演示(测试编号7):

演示(测试编号8):

演示(测试编号9):

演示(测试编号10,11,12):

标签:边界值,System,equals,length,测试,print,out,zhengshu,软件测试
From: https://www.cnblogs.com/WScoconut/p/16984372.html

相关文章

  • HarmonyOS实现登录页面(六)测试(附DevEco Studio中的js代码)
    测试结果对应代码//data.result为http响应内容,可根据业务需要进行解析console.info('Result:'+data.result);//***http响应码***success:200|serv......
  • 针对某钓鱼网站的渗透测试
    微信公众号文章同步于微信公众号:苏雅图的雨​前言上个星期,QQ邮箱收到一封钓鱼邮件。但这已经不是第一次,大概两年前就遇到过一次,差不多......
  • 9 推荐系统的AB测试
    ......
  • 对于一个即将上线的网站,如何测试
    web应用:也叫做网站,相对于客户端应用来说,web应用无需单独安装,在浏览器上即可使用其功能。web应用的主要开发流程如下:在网站开发的整个流程中,测试验收是上线发布前的最后一个......
  • [scala断言专栏]--选择项目的测试样式
    ScalaTest支持不同风格的测试,每种测试都旨在满足特定的需求。为了帮助您找到适合您项目的最佳样式,本页将介绍每个选项的预期用例。我们建议您为每个项目选择一组测试样式,然......
  • Vulnhub之Shuriken 1 靶机测试过程
    Shuriken识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/Shuriken]└─$sudonetdiscover-ieth1Currentlyscanning:192.168.62.0/16|ScreenView:UniqueHo......
  • 数据驱动测试-从方法探研到最佳实践
    作者:刘红妍导读在自动化测试实践中,测试数据是制造测试场景的必要条件,本文主要讲述了在沟通自动化框架如何分层,数据如何存储,以及基于单元测试pytest下如何执行。并通过实践案......
  • 测试自动化:TPT API
       测试自动化:TPTAPI  想提高开发质量吗?想在任何时候知道开发进度在哪里吗?想加快测试速度吗?那么,持续集成(CI)、持续测试(CT)或云中具有可拓展性的测试自动......
  • 热风机出美国亚马逊UL859测试标准
    电子产品作为亚马逊平台上较受欢迎的品类之一,得到很多卖家的关注。目前,亚马逊已成为电子产品类零售商No.1。据了解,在亚马逊平台上,有18%的卖家出售电子产品。但随着销售该类......
  • Chaos 测试下的若干 NebulaGraph Raft 问题分析
    Raft是一种广泛使用的分布式共识算法。NebulaGraph底层采用Raft算法实现metad和storaged的分布式功能。Raft算法使NebulaGraph中的metad和storaged能够集群......