《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以上的数值也可以成功充值。

相关文章
|
5月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
5月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
5月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
264 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
6月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
362 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
6月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
434 6
|
6月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
6月前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
9月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1330 23
|
11月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
1738 24