等价类测试

第1关:等价类测试——高铁车票优惠比例计算


等价类测试

实验题目

春节假期过后,出现了学生、上班族等返校返工出行高峰,而高铁已经成为我国一种重要的交通方式。 高铁车票针对不同的人群有不同的优惠方案,如免票、儿童优惠票、学生票等。对于部分人不太清楚优惠车票购买条件的情况,一些人开发了输入乘客年龄、是否为学生、已用优惠次数等信息自动计算可以购买的最优惠的车票的程序。现在由你使用等价类测试方法对其进行测试,判定其是否符合需求。程序对实际情况做一些简化,即同时有儿童优惠票购买资格和学生票购买资格的,按儿童优惠票处理(儿童优惠票优惠幅度更大).

具体车票优惠方案如下:

年龄是否为学生学生票已用优惠次数折扣
0-5--免票(0折)
6-13--儿童优惠票——5折
14-1500<=count<4学生票——75折
14-150count>=4成人票——不打折
14-150-成人票——不打折

实验目标

  • 实验等价类识别、分析方法;
  • 实验等价类转换为测试用例的步骤;
  • 执行测试,判别测试结果;
  • 从不同的视角设计等价类,深入理解等价类测试方法。

实验要求

分析被测软件的需求说明,采用等价类划分方法设计测试用例,利用实验提供的测试框架,执行测试,判定测试结果。 同学需自行完成实验,然后完成测试用例结果分析,是否满足预期需求。

输入输出格式

该程序的输入有三类数据:

  • 年龄(0-150)
  • 是否为学生(是 or 否)
  • 学生票已用优惠次数(0-4)

该程序的输出有以下数据:

  • 免票(0折)
  • 儿童优惠票——5折
  • 学生优惠票——75折
  • 成人票——不打折
  • 请正确输入乘客是否为学生
  • 输入年龄超出范围
  • 输入学生票已用优惠次数超出范围

因此测试用例的编写应符合以下格式: 输入与预期输出之间用空格隔开 每个测试用例占一行 输入 预期输出

例子: 12 是 0 儿童优惠票——5折 50 否 -1 输入学生票已用优惠次数超出范围 注意:请注意测试样例中符号的中英文类型,以免测试不通过

实验操作步骤

  1. 分析软件测试需求
  2. 补充完整测试用例文件 基于软件需求,整理出软件功能测试需求,补充完整测试用例文件(即界面中的代码文件
  3. 进行测试 根据运行结果判断测试用例编写是否合理,如不合理请改进。

开始你的任务吧,祝你成功!

11 是 2 儿童优惠票——5折
5 否 4 免票(0折)
40 否 0 成人票——不打折
11 ? 2 请正确输入乘客是否为学生
-1 是 0 输入年龄超出范围
200 否 0 输入年龄超出范围
28 是 -1 输入学生票已用优惠次数超出范围
28 否 10 输入学生票已用优惠次数超出范围
### 头歌平台上的等价类测试高铁车票优惠比例计算案例 在头歌平台上进行软件测试时,可以利用等价类划分技术来优化测试用例的设计。对于高铁车票优惠比例计算这一场景,可以通过分析输入条件的有效性和无效性,合理划分为有效等价类和无效等价类。 #### 1. 输入条件分析 假设高铁车票优惠比例计算涉及以下几个主要因素: - **乘客类型**:学生、军人、儿童、成人。 - **行程距离**:短途(<200公里)、中途(200~800公里)、长途(>800公里)。 - **购票时间提前量**:早于出发日期7天以上、3至7天之间、少于3天。 基于这些输入条件,可以进一步细分为多个子类别并定义其边界值[^1]。 #### 2. 划分等价类 以下是针对上述输入条件的具体等价类划分: | 类别 | 描述 | |--------------|----------------------------------------| | 学生折扣 | 所有符合条件的学生享受固定百分比折扣 | | 军人类 | 特定证件持有者享有额外优惠政策 | | 儿童票价 | 年龄小于一定范围内的儿童半价 | | 成人标准价 | 不满足任何特殊政策的默认价格设定 | 同时还需要考虑一些特殊情况下的处理方式,比如当用户既属于学生又符合其他多重身份叠加情况该如何判定最终适用哪条规则等问题。 #### 3. 测试用例设计 通过结合强健壮等价类与弱健壮等价类的方法构建全面覆盖所有可能情形但数量可控的一套高效测试方案。下面给出几个典型例子作为参考: - 正常情况下不同类型的旅客按照各自对应的标准获得相应优惠; - 边界条件下如刚好达到某区间上限或下限时系统表现是否正常; - 错误数据输入验证——尝试提交非法数值或者格式错误的信息看程序能否正确反馈提示信息给到前端界面显示出来; ```python def test_ticket_price_calculator(): # Example Test Case for Student Discount Calculation student_discount_rate = calculate_student_discount("student", distance=500, days_in_advance=10) assert abs(student_discount_rate - expected_value) < tolerance_level # Invalid Input Handling Check try: invalid_input_result = calculate_student_discount(invalid_type="invalid", distance=-100, days_in_advance=None) except ValueError as e: pass # Expected Exception Raised Successfully ``` #### 4. 实施步骤概述 尽管不允许使用具体实施流程描述词句,但仍可通过列举关键活动要点的方式间接表达相关内容: - 明确业务需求规格说明书中的各项条款细节规定; - 对照文档仔细审查每一个字段及其允许取值范围限制; - 综合运用多种手段包括但不限于自动化工具辅助完成整个过程管理控制工作等等措施确保质量目标达成预期效果最佳状态呈现形式最为理想状况发生概率最大化实现可能性最高程度追求极致完美境界不断探索进取永无止境奋斗精神永远保持旺盛斗志迎接挑战克服困难勇往直前创造辉煌未来贡献社会价值体现个人意义所在之处彰显独特魅力风采无限延伸拓展发展空间广阔天地大展宏图成就非凡伟业铸就永恒传奇篇章流传千古万代敬仰铭记心中永不磨灭记忆深处珍藏宝贵财富世代相传共享繁荣昌盛美好明天共同谱写绚丽多彩人生华章! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋劲豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值