《Web测试囧事》——第3章 功能测试:测试实践篇 3.1 修改充值金额范围遗漏的产品Bug

简介:

本节书摘来自华章计算机《Web测试囧事》一书中的第3章,第3.1节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章

功能测试:测试实践篇

前两章我们介绍了在功能测试中使用特定的开发和测试技术手段如何避免问题,那除此之外还有没有什么别的方式可以同样起到预防作用呢?

答案是肯定的,例如本章我们介绍的通过引入某些测试实践来避免和预防Bug。现在让我们一起来看看这些故事吧。

3.1 修改充值金额范围遗漏的产品Bug

产品中有一个允许用户自助为自己账户充值的功能(见图3-1)。充值金额的范围被设定在5~50元之间,低于或者高于这个金额都会被系统自动变成最接近的允许值:如输入3,因为小于最小值5,则系统自动更新为5;如果输入80,因为大于最大值50,所以系统自动变成50。

image

对于这个功能,小蔡详细设计了测试用例,覆盖了所有可能的情况:

1)输入非数字,系统不识别,不能进行充值;
2)输入错误/不存在的充值账号,系统不能正确充值;
3)输入正确的充值账号,输入负值,系统不能正确充值;
4)输入正确的充值账号,输入0,系统自动更正成5,之后可以正确充值;
5)输入正确的充值账号,输入小于5的数值,系统自动更正成5,之后可以正确充值;
6)输入正确的充值账号,输入大于50的数值,系统自动更正成50,之后可以正确充值;
7)输入正确的充值账号,输入等于5,系统能正确充值;
8)输入正确的充值账号,输入等于50,系统能正确充值;
9)输入正确的充值账号,输入大于5、小于50的数值,系统能正确充值。

此外,小蔡还考虑到虽然这个功能并不复杂,但是需要涉及和银行方面的对接,所以还设计了针对银行系统的集成测试,由于使用的是真实的银行系统接口,每次测试会真实扣除账户中的钱,所以在测试时修改了服务器上充值的范围,缩小了每次允许充值的数目范围,修改后为0.1~10。

上面的测试用例就变成了:

1)输入非数字,系统不识别,不能进行充值;
2)输入错误/不存在的充值账号,系统不能正确充值;
3)输入正确的充值账号,输入负值,系统不能正确充值;
4)输入正确的充值账号,输入0,系统自动更正成0.1,之后可以正确充值;
5)输入正确的充值账号,输入小于0.1的数值,系统自动更正成0.1,之后可以正确充值;
6)输入正确的充值账号,输入大于10的数值,系统自动更正成10,之后可以正确充值;
7)输入正确的充值账号,输入等于0.1,系统能正确充值;
8)输入正确的充值账号,输入等于10,系统能正确充值;
9)输入正确的充值账号,输入大于0.1、小于10的数值,系统能正确充值。

设计好测试用例之后,小蔡去找老牛评审。老牛最初感觉第二次修改的测试用例和第一次的用例是基本等价的,但是当经验老到的老牛在实际页面上使用了几分钟后,一下就发现了问题所在,随即问小蔡:“更改充值范围后的测试用例真的等价于原始的充值用例吗?”

本来小蔡还觉得挺有信心的,但是被老牛这么一问,自己也拿不定主意了。老牛看她没有意识到所出的问题,又细心解释道:“你看输入框上有一个功能, 当用户输入的数字不在允许的范围内会做自动纠错,也就是说系统会自动把这个超出范围的数字改为属于允许范围内的数字。但是问题出在每次当用户按一下键盘数字键后,这个自动纠错功能都会起作用,这可能会造成用户无法输入他原本想输入的数字的Bug 。”

老牛顿一下,接着说:“例如,当你把充值范围改为0.1~10后开始测试,如果用户输入15这个数字,输入第一个字符1时,1属于允许范围内,因此可以输入,当用户输入15这个数字的第二个字符5的时候,系统会判断15这个数字不在允许范围内,因此系统会自动把这个数字改为10,整个过程符合预期没有问题。”

“但是如果我们把充值范围恢复到5~50后再进行测试,假如用户同样输入15这个数字,当用户输入15这个数字的第一个字符1的时候,系统会判断这个字符小于5,因此系统开始自动纠错,自动把1变成5,因此从用户输入第一个字符就预示着最终结果是错误的。这时候,如果再输入15这个数字的第二个字符5,输入的数值就会变成55,系统会把55自动改为50。因此当我们把充值范围恢复到原来的5~50后,用户是无法输入15这个数字的。”

这还真是个严重的问题啊!幸好老牛的经验丰富,能看出两个测试用例集并不是等价的。这样给小蔡上了一课:在测试用例本身的设计时,也需要考虑到数值对于测试用例的等价类划分是否一致。

对于这个问题,小蔡首先添加了一条测试用例:

输入正确的充值账号,输入大于10、小于15的数值,系统能正确充值。

其他为避免这个问题采取的解决方案如下。

1)当用户点击到充值数额的输入框之外以后,也就是焦点在输入框之外的时候,才对充值数值的范围进行判断,这样避免了用户输入的过程对于数值判断逻辑的影响;

2)同时小蔡也扩大了充值数值的范围,改为从0.1到15,保证10以上的数值也可以成功充值。

相关文章
|
22天前
|
安全 Linux 测试技术
提升龙蜥内核测试能力!探究持续性模糊测试优化实践
清华大学软件学院对Anolis OS使用靶向模糊测试方法将测试工作引向修改的代码,进而提高对业务代码的测试能力。
|
1月前
|
SQL 搜索推荐 测试技术
【Havenask实践篇】完整的性能测试
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。性能测试的目的在于评估搜索引擎在各种负载和条件下的响应速度、稳定性。通过模拟不同的用户行为和查询模式,我们可以揭示潜在的瓶颈、优化索引策略、调整系统配置,并确保Havenask在用户数量激增或数据量剧增时仍能保持稳定运行。本文举例对Havenask进行召回性能测试的一个简单场景,在搭建好Havenask服务并写入数据后,使用wrk对Havenask进行压测,查看QPS和查询耗时等性能指标。
65381 6
|
7天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
13 1
|
7天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
12天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
16天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。
|
28天前
|
敏捷开发 测试技术 持续交付
深入探索软件测试自动化:框架与实践
在快速演进的软件行业中,测试自动化已成为确保产品质量和加快上市速度的关键因素。本文将深入分析测试自动化框架的构建要点,探讨其在实际应用中的效益,以及实施过程中可能面临的挑战。通过对比手动测试与自动化测试的优势与局限,本文旨在为读者提供一套系统化的测试自动化实践指南,以支持更高效、可靠的软件开发周期。
11 0
|
28天前
|
传感器 监控 算法
【软件设计师备考 专题 】模块测试的方法和实践
【软件设计师备考 专题 】模块测试的方法和实践
69 0
|
30天前
|
机器学习/深度学习 前端开发 算法
利用机器学习优化Web前端性能的探索与实践
本文将介绍如何利用机器学习技术来优化Web前端性能,探讨机器学习在前端开发中的应用,以及通过实际案例展示机器学习算法对前端性能优化的效果。通过结合前端技术和机器学习,提升Web应用的用户体验和性能表现。
|
1月前
|
敏捷开发 IDE 测试技术
深入理解自动化测试框架Selenium的设计理念与实践
随着敏捷开发和持续集成的理念深入人心,自动化测试在软件开发周期中扮演着越来越重要的角色。Selenium作为一个广泛使用的自动化测试工具,其设计理念和实践对于提高测试效率和质量具有指导意义。本文将深入探讨Selenium的核心设计原则、架构以及最佳实践,旨在帮助读者构建更稳定、高效的自动化测试系统。