“人民币数字大写转换”程序的黑盒测试

本文档为上述“人民币数字大写转换”程序的黑盒测试实验报告

一、 标识

本文档适用系统:Windows 11

二、系统概述

本文档测试“人民币数字大写转换”程序,具体功能如下:

      1)中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样。

      2)中文大写金额数字到"元"为止的,在"元"之后,应写"整"(或"正")字,在"角"之后,可以不写"整"(或"正")字。

      3)中文大写金额数字前应标明"人民币"字样,大写金额数字有"分"的,"分"后面不写"整"(或"正")字。

      4)大写金额数字应紧接"人民币"字样填写,不得留有空白。

三、测试结果

黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试。本次测试将采用等价类划分方法,边界值方法来进行测试:

等价类划分测试:

测试项

用等价类划分方法来设计用例测试人民币大小写转换功能;

方法原理

把所有可能的输入数据,即程序的输入域划分为若干个等价类(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例;

测试环境要求

Windows 11python

预期输出

正确转换 或 提示错误;

测试用例设计

测试用例

操作

数据

期望结果

实际结果

测试状态

1-1

不输入数据,并进行转换

-

提示不执行

无法执行

Fail

1-2

输入非法数据,并执行转换

xxx

提示不执行

程序无法执行

Fail

1-3

输入多个小数点,并执行转换

1...1

提示不执行

无法执行

Fail

1-4

输入超大数据

10000000000000000000000000000

提示不执行

程序无法

Fail

1-5

输入负值

-1

负壹元整

负壹元整

pass

1-6

输入高精度数据

101.256
壹佰零壹元贰角伍分陆毫

人民币壹佰零壹元贰角伍分陆毫

Pass

1-7

输入包含连续零的数据

1-8

输入不含零的数据

1234.56

人民币壹仟贰佰叁拾肆元伍角陆分

人民币壹仟贰佰叁拾肆元伍角陆分

Pass

1-9

输入角位是“0”,分位不是“0”的数据

1.01

人民币壹元零壹分

人民币壹元零壹分

Pass

1-10

输入前几位是“0”的数据

001223

人民币壹仟贰佰贰拾叁元整

人民币万零壹仟贰佰贰拾叁元整,程序继续运行

Fail

1-11

输入到元为止的数据

1-12

输入角位、分位都为“0”的数据

1.00

人民币壹元整

人民币壹元整

Pass

代码;

def test(money):
    cnNums = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
    cnIntRadice = ["", "拾", "佰", "仟"]
    cnIntUnits = ["", "万", "亿", "兆"] 
    cnDecUnits = ["角", "分", "毫", "厘"]
    cnInteger = "整" 
    cnIntLast = "元" 
    maxNum = 999999999999999.9999 
    # IntegerNum 金额整数部分
    # DecimalNum 金额小数部分
    ChineseStr = "" 
    parts =[] 
    Symbol = "" 
    if money == "": 
        return ""

    money = float(money)
    if money >= maxNum:
        return ""

    if money == 0:
        ChineseStr = cnNums[0] + cnIntLast + cnInteger
        return ChineseStr

    if money < 0:
        money = -money
        Symbol = "负 "

    money = str(money) 
    if money.find(".") == -1:
        IntegerNum = money
        DecimalNum = ""
    else:
        parts = money.split(".")
        IntegerNum = parts[0]
        DecimalNum = parts[1][0:4]

    if int(IntegerNum) > 0:
        zeroCount = 0
        IntLen = len(IntegerNum)
        for i in range(0,IntLen):
            n = IntegerNum[i:i+1:1]
            p = IntLen - i - 1
            q = p // 4
            m = p % 4
            if n == "0":
                zeroCount +=1
            else:
                if zeroCount > 0:
                    ChineseStr += cnNums[0]
                zeroCount = 0 
                ChineseStr += cnNums[int(n)] + cnIntRadice[m]
                if m == 0 and zeroCount < 4:
                    ChineseStr += cnIntUnits[q]
        ChineseStr += cnIntLast

    if DecimalNum != "":#小数部分
        decLen = len(DecimalNum)
        for i in range(0,decLen):
            n = DecimalNum[i:i+1:1]
            if n != "0":
                ChineseStr += cnNums[int(n)] + cnDecUnits[i]
    if ChineseStr == "":
        ChineseStr += cnNums[0] + cnIntLast + cnInteger
    elif DecimalNum == "0":
        ChineseStr += cnInteger
    ChineseStr = Symbol + ChineseStr
    return ChineseStr
        
money = input()
print(test(money))


猜你喜欢

转载自blog.csdn.net/m0_51786204/article/details/129640835