实验二白盒测试

实验二白盒测试

一、实验目的

1、 掌握白盒测试的基础知识;

2、 掌握白盒测试的检查内容及测试目的;

3、 掌握黑盒测试的几种基本测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。

二、实验要求

1、 复习有关内容,理解白盒测试;

2、 掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,并能设计出测试用例;

3、 对具体软件,能分别使用相应的白盒测试方法设计测试用例,并实施测试、分析测试结果。

三、实验内容

l 对实验一1、3题使用逻辑覆盖法进行测试用例设计。

1. 输入日期显示星期几

伪代码:

python

def date_to_weekday(date_str):

    try:

        date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')

        return date_obj.strftime('%A')

    except ValueError:

        return "Invalid date"

 

 

3. 饮料自动售货机

伪代码:

python

def vending_machine(coin, choice):

    choices = ['orange juice', 'beer']

    if choice not in choices:

        return "Invalid choice"

    if coin == 0.5:

        return f"Dispense {choice}"

    elif coin == 1.0:

        return f"Dispense {choice} and return 0.5 coin"

    else:

        return "Invalid coin"

l 对实验一2、4题使用基本路径法进行测试用例设计。

2. 找零钱最佳组合

伪代码:

python

def find_best_change(price, payment):

    change = payment - price

    coins = {'50':0, '10':0, '5':0, '1':0}

    coins['50'] = change // 50

    change %= 50

    coins['10'] = change // 10

    change %= 10

    coins['5'] = change // 5

    change %= 5

    coins['1'] = change

    return coins

4. 航空服务查询

伪代码:

python

def airline_service(route, cabin, flight_time):

    if route == 'China to Europe/America':

        return "Food and movie available"

    elif route == 'China to other countries':

        if cabin == 'Business':

            return "Food and movie available"

        else:

            return "Only food available"

    elif route == 'Domestic':

        if cabin == 'Business':

            return "Only food available"

        else:

            if flight_time > 2:

                return "Only food available"

            else:

                return "No food or movie"

    else:

        return "Invalid route"

l 5、

 

 

5. 工资管理程序BONUS

伪代码:

python

def bonus_program(EMPLOYEE_TABLE, DEPARTMENT_TABLE):

    MAXSALES = 0

    ERRCODE = 0

    if ESIZE <= 0 or DSIZE <= 0:

        ERRCODE = 1

    else:

        for i in range(1, DSIZE):

            if SALES[i] > MAXSALES:

                MAXSALES = SALES[i]

        for j in range(1, DSIZE):

            if SALES[j] == MAXSALES:

                FOUND = False

                for k in range(1, ESIZE):

                    if EMPTAB.DEPT[k] == DEPTTAB.DEPT[j]:

                        FOUND = True

                        if SALARY[k] >= 15000 or JOB[k] == 'M':

                            SALARY[k] += 100

                        else:

                            SALARY[k] += 200

                if not FOUND:

                    ERRCODE = 2

    return ERRCODE

四、实验结果:

(1) 基本路径法绘制出控制流图,逻辑覆盖法绘制出流程图

 控制流图

 输入日期显示星期几

plaintext

+----------------------------------+

| 日期转换函数                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 输入日期字符串                   |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 尝试解析日期                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      |   有效日期         |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回星期几                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回"Invalid date"               |

+----------------------------------+

 饮料自动售货机

plaintext

+----------------------------------+

| 售货机函数                       |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查选择是否有效                 |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      |   无效选择         |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 检查投入硬币                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 0.5元硬币         | 1.0元硬币 |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回相应饮料                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 返回无效硬币                     |

+----------------------------------+

 

 找零钱最佳组合

plaintext

+----------------------------------+

| 找零钱函数                       |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算零钱                         |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 初始化硬币计数                   |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算50元硬币数量                 |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算剩余零钱                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算10元硬币数量                 |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算剩余零钱                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算5元硬币数量                  |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算剩余零钱                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算1元硬币数量                  |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 返回硬币组合                     |

+----------------------------------+

 

 

 航空服务查询

plaintext

+----------------------------------+

| 航空服务函数                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 判断航线                         |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 中国到欧美         |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回食物和电影                   |

+----------------------------------+

      |

      v

+----------------------------------+

| 判断航线到其他国家               |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 商务舱             |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回食物和电影                   |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回仅食物                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 判断国内航线                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 商务舱             |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回仅食物                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 判断飞行时间                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | >2小时             |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回仅食物                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回无服务                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回无效航线                     |

+----------------------------------+

 

 

 工资管理程序BONUS

plaintext

+----------------------------------+

| 工资管理函数                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查职员表和部门表是否为空       |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 表为空             |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回错误码1                      |

+----------------------------------+

      |

      v

+----------------------------------+

| 初始化最大销售额                 |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 遍历部门表寻找最大销售额         |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 遍历部门表                       |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查部门销售额是否为最大         |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 遍历职员表                       |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查职员部门是否匹配             |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 检查工资和职位条件               |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 工资>=15000或经理 |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 增加工资100                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 增加工资200                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 设置FOUND为True                  |

+----------------------------------+

      |

      v

+----------------------------------+

| 检查FOUND是否为False             |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                |         |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回错误码2                      |

+----------------------------------+

 

 

 流程图

 

 输入日期显示星期几

plaintext

+----------------------------------+

| 开始                             |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 输入日期字符串                   |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 尝试解析日期                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 日期有效           | 日期无效 |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回星期几                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回"Invalid date"               |

+----------------------------------+

      |

      v

+----------------------------------+

| 结束                             |

+----------------------------------+

 

 

 饮料自动售货机

plaintext

+----------------------------------+

| 开始                             |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 输入投入硬币和选择               |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查选择是否有效                 |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 选择有效           | 选择无效 |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 检查投入硬币                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 0.5元硬币         | 1.0元硬币 | 其他

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回相应饮料                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回无效硬币                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回无效选择                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 结束                             |

+----------------------------------+

 

 

 找零钱最佳组合

plaintext

+----------------------------------+

| 开始                             |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 输入价格和支付金额               |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算零钱                         |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 初始化硬币计数                   |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算50元硬币数量                 |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算剩余零钱                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算10元硬币数量                 |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算剩余零钱                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算5元硬币数量                  |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算剩余零钱                     |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 计算1元硬币数量                  |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 返回硬币组合                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 结束                             |

+----------------------------------+

 

 

 航空服务查询

plaintext

+----------------------------------+

| 开始                             |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 输入航线、仓位和飞行时间         |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 判断航线                         |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 中国到欧美         | 其他   |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回食物和电影                   |

+----------------------------------+

      |

      v

+----------------------------------+

| 判断航线到其他国家               |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 商务舱             | 其他   |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回食物和电影                   |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回仅食物                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 判断国内航线                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 商务舱             | 其他   |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回仅食物                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 判断飞行时间                     |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | >2小时             | 其他   |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回仅食物                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回无服务                       |

+----------------------------------+

      |

      v

+----------------------------------+

| 返回无效航线                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 结束                             |

+----------------------------------+

 

 

 工资管理程序BONUS

plaintext

+----------------------------------+

| 开始                             |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 输入职员表和部门表               |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查职员表和部门表是否为空       |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                | 否      |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回错误码1                      |

+----------------------------------+

      |

      v

+----------------------------------+

| 初始化最大销售额                 |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 遍历部门表寻找最大销售额         |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 遍历部门表                       |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查部门销售额是否为最大         |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                | 否      |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 遍历职员表                       |

+----------------------------------+

      |                             |

      v                             |

+----------------------------------+

| 检查职员部门是否匹配             |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                | 否      |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 检查工资和职位条件               |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                | 否      |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 增加工资100                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 增加工资200                     |

+----------------------------------+

      |

      v

+----------------------------------+

| 设置FOUND为True                  |

+----------------------------------+

      |

      v

+----------------------------------+

| 检查FOUND是否为False             |

+----------------------------------+

      |                             |

      +-------------------+         |

      |                   |         |

      | 是                | 否      |

      |                   |         |

      +-------------------+         |

      |                   |         |

      v                   v         |

+----------------------------------+

| 返回错误码2                      |

+----------------------------------+

      |

      v

+----------------------------------+

| 结束                             |

+----------------------------------+

 

 

 2)设计测试用列表

 输入日期显示星期几

用例编号

输入数据

预期输出

实际输出

TC1

2024-09-26

星期四

星期四

TC2

2024-02-30

Invalid date

Invalid date

 

 饮料自动售货机

用例编号

输入硬币

选择饮料

预期输出

实际输出

TC1

0.5

orange juice

Dispense orange juice

Dispense orange juice

TC2

1.0

orange juice

Dispense orange juice and return 0.5 coin

Dispense orange juice and return 0.5 coin

TC3

0.25

orange juice

Invalid coin

Invalid coin

TC4

0.5

water

Invalid choice

 

 

 找零钱最佳组合

用例编号

价格 (R)

支付 (P)

预期输出

实际输出

TC1

50

50

{'50':1, '10':0, '5':0, '1':0}

{'50':1, '10':0, '5':0, '1':0}

TC2

50

100

{'50':2, '10':0, '5':0, '1':0}

{'50':2, '10':0, '5':0, '1':0}

TC3

50

55

{'50':1, '10':0, '5':1, '1':0}

{'50':1, '10':0, '5':1, '1':0}

TC4

50

60

{'50':1, '10':1, '5':0, '1':0}

{'50':1, '10':1, '5':0, '1':0}

TC5

50

105

{'50':2, '10':0, '5':1, '1':0}

{'50':2, '10':0, '5':1, '1':0}

 

 航空服务查询

用例编号

航线

仓位

飞行时间

预期输出

实际输出

TC1

China to Europe/America

Business

3

Food and movie available

Food and movie available

TC2

China to other countries

Business

3

Food and movie available

Food and movie available

TC3

China to other countries

Economy

3

Only food available

Only food available

TC4

Domestic

Business

3

Only food available

Only food available

TC5

Domestic

Economy

3

Only food available

Only food available

TC6

Domestic

Economy

1

No food or movie

No food or movie

TC7

Other

Economy

3

Invalid route

Invalid route

 

 工资管理程序BONUS

用例编号

职员表和部门表状态

预期输出

实际输出

TC1

均为空

ERRCODE=1

ERRCODE=1

TC2

均不为空,销售最大部门有职员

ERRCODE=0

ERRCODE=0

TC3

均不为空,销售最大部门无职员

ERRCODE=2

ERRCODE=2

 

五、实验体会:

1.遇到了哪些问题

在理解白盒测试和黑盒测试的区别时,对于某些测试方法的具体应用场景有些混淆。

在设计测试用例时,对于如何确保覆盖所有可能的路径和条件组合感到有些困难。

2.问题如何解决的

通过查阅相关资料,深入理解白盒测试和黑盒测试的定义和应用场景,明确了各自的适用范围。

通过逐步分析程序的逻辑结构,绘制控制流图和流程图,帮助理清思路,从而更系统地设计测试用例。

3.收获

深入理解了白盒测试和黑盒测试的基本概念和方法,掌握了如何根据程序的逻辑结构设计有效的测试用例。

通过实际操作和练习,提高了对软件测试的理解和实践能力,能够更全面地考虑程序的各种可能情况,确保软件质量。

 

posted @ 2025-05-21 11:26  痛苦代码源  阅读(19)  评论(0)    收藏  举报