网易首页 > 网易号 > 正文 申请入驻

2小时写的测试全绿,上线5分钟数据库炸了

0
分享至


100%测试覆盖率,生产环境照样崩。这不是段子,是Reddit上一位Python开发者上周的真实经历——他花了2小时给邮箱验证函数写测试,全部通过,部署上线,用户数据瞬间变成垃圾场。

那个看似无害的5行代码

他的验证逻辑简单到可笑:检查字符串里有没有「@」和「.」,有就返回True,没有就False。测试用例也配得很「工整」:一个标准邮箱[email protected]验证通过,一个乱写的「notanemail」验证失败。全部绿灯,提交,部署。

然后生产环境的用户开始表演:有人填「user@domain」没写顶级域名,有人填「@domain.com」没写用户名,有人填「user.name@」后面直接断了。这些全都被他的函数放行,数据库里塞满了永远无法送达的邮箱地址。

问题根本不在代码复杂度,而在测试用例的「想象力」太贫瘠。


他的测试只问「有没有@和点」,从没问过「@前面有没有东西」「点后面有没有东西」「这些东西组合起来像不像个邮箱」。这就像检查一把锁有没有钥匙孔和锁舌,却不试试钥匙能不能转动。

15分钟的补救 vs 2小时的自信

回滚之后,他换了email-validator库,重写了测试。这次花了15分钟,专门盯着各种「怪东西」:缺用户名的、缺域名的、带空格的、格式残缺的。这些测试用例加起来,比他之前2小时写的「标准测试」更有价值。

他总结了三条教训,每条都是血泪:

第一,用户破坏假设的方式永远比你想象的多。空字符串、null值、特殊字符、Unicode、超长输入——这些不是「极端情况」,是日常。


第二,别重复造验证轮子。邮箱、手机号、URL、信用卡号,都有成熟的库。它们的存在不是因为开发者懒,是因为它们见过你还没想到的边界情况。

第三,覆盖率是幻觉。100%覆盖率只代表你的测试跑过了每一行代码,不代表你的测试问过「这行代码该不该存在」。

测试的幻觉与生产的真相

这件事最讽刺的地方在于:开发者的直觉和测试的质量经常成反比。他坦承自己「还在改进」,因为总会发现自以为「完整」的测试,被生产环境证伪。

测试数据通常是干净的——开发者手动构造,逻辑清晰,格式规范。生产数据是用户从Excel粘贴的、浏览器自动填充错的、手指滑屏按错的。两种数据之间的鸿沟,才是bug的真正温床。

他最后没有给出什么「终极解决方案」,只是留下一个开放的提醒:下次写测试时,先问自己「用户会怎么搞砸这个」,而不是「这个功能正常时该长什么样」。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
老人1500元卖掉自家大狗,小孙女舍不得哭得撕心裂肺,狗贩心软不收了,只要求退回1300元,“那200块就当补偿小姑娘吧”

老人1500元卖掉自家大狗,小孙女舍不得哭得撕心裂肺,狗贩心软不收了,只要求退回1300元,“那200块就当补偿小姑娘吧”

观威海
2026-04-24 10:56:04
Shams:杜兰特脚踝扭伤,不会出战G3火箭主场对阵湖人

Shams:杜兰特脚踝扭伤,不会出战G3火箭主场对阵湖人

懂球帝
2026-04-25 07:10:48
张雪峰多位爱将离职,真相很残忍

张雪峰多位爱将离职,真相很残忍

新浪财经
2026-04-24 19:11:55
近7场1胜 皇马球迷贴面怒骂球员:不知羞耻 姆巴佩用帽遮脸+逃离

近7场1胜 皇马球迷贴面怒骂球员:不知羞耻 姆巴佩用帽遮脸+逃离

我爱英超
2026-04-25 07:46:50
罗体:卖淫案有上百名年轻女性参与,四名核心成员已被软禁

罗体:卖淫案有上百名年轻女性参与,四名核心成员已被软禁

懂球帝
2026-04-24 11:55:35
才播了三期,就说他俩一定会离?

才播了三期,就说他俩一定会离?

橘子娱乐
2026-04-24 21:14:22
北京车展名场面:雷军打卡蔚来展台 李斌闻讯一路小跑赶来

北京车展名场面:雷军打卡蔚来展台 李斌闻讯一路小跑赶来

快科技
2026-04-24 20:54:03
清朝一个很特殊的官职,叫“道台”,几乎没人能说清他是干啥的

清朝一个很特殊的官职,叫“道台”,几乎没人能说清他是干啥的

抽象派大师
2026-04-24 12:23:42
总攻”开始,抢在马科斯动手前,莎拉出逃,最坏结果是流亡海外

总攻”开始,抢在马科斯动手前,莎拉出逃,最坏结果是流亡海外

叮当当科技
2026-04-25 00:04:28
白人女性与黑人女性的体味差异,网友真实分享引发热议

白人女性与黑人女性的体味差异,网友真实分享引发热议

特约前排观众
2025-12-22 00:20:06
亚马尔受伤警钟,距离梅西有多远不得而知,成为第二个法蒂并不远

亚马尔受伤警钟,距离梅西有多远不得而知,成为第二个法蒂并不远

95帕尔马
2026-04-24 08:29:39
俄共领导人告诫普京:如果再不出手,俄罗斯将会重蹈1917年的覆辙

俄共领导人告诫普京:如果再不出手,俄罗斯将会重蹈1917年的覆辙

老谢谈史
2026-04-25 00:34:45
以牙还牙,中国打响反制第一枪,一举切断美欧命脉,美欧坐立难安

以牙还牙,中国打响反制第一枪,一举切断美欧命脉,美欧坐立难安

凡知
2026-04-24 17:49:57
果然不出所料,国民党主席郑丽文表态了!

果然不出所料,国民党主席郑丽文表态了!

达文西看世界
2026-04-24 16:08:18
太子爷坑苦尼克斯!只想刷数据,9200万双核没球权,被当成蓝领用

太子爷坑苦尼克斯!只想刷数据,9200万双核没球权,被当成蓝领用

你的篮球频道
2026-04-24 11:19:15
知名歌手因抢不到五一高铁票取消演唱会!

知名歌手因抢不到五一高铁票取消演唱会!

深圳晚报
2026-04-23 19:29:44
外交部:希望芬方理性客观地看待中国同其他国家正常发展关系

外交部:希望芬方理性客观地看待中国同其他国家正常发展关系

环球网资讯
2026-04-24 15:48:11
从拜登曲线到弗吉尼亚公投逆转:民主党这次注定栽了

从拜登曲线到弗吉尼亚公投逆转:民主党这次注定栽了

斌闻天下
2026-04-24 07:10:03
姆巴佩浪费良机,熊皇破门难救主!遭94分钟绝平,皇马功亏一篑

姆巴佩浪费良机,熊皇破门难救主!遭94分钟绝平,皇马功亏一篑

我的护球最独特
2026-04-25 05:08:23
14岁被送上导演的床,17岁拍全裸写真,被操控半生,如今怎样了?

14岁被送上导演的床,17岁拍全裸写真,被操控半生,如今怎样了?

不似少年游
2026-04-17 19:31:49
2026-04-25 08:15:00
我是一个粉刷匠2
我是一个粉刷匠2
有态度网友ytd
1720文章数 27关注度
往期回顾 全部

科技要闻

DeepSeek V4牵手华为,价格依然"屠夫级"

头条要闻

两届奥运冠军、中国羽协主席张军"失联" 知情人士发声

头条要闻

两届奥运冠军、中国羽协主席张军"失联" 知情人士发声

体育要闻

上海男篮23连胜+主场全胜 姚明之后最强一季

娱乐要闻

停工16个月!赵露思证实接拍新剧

财经要闻

LG财阀内斗:百亿美元商业帝国争夺战

汽车要闻

零跑Lafa5 Ultra北京车展上市:11.88-12.48万

态度原创

家居
本地
数码
教育
公开课

家居要闻

自然肌理 温润美学

本地新闻

云游中国|逛世界风筝都 留学生探秘中国传统文化

数码要闻

宏碁掠夺者战斧9 / 10 Neo游戏本上架:搭载满功耗RTX 5060

教育要闻

教室火锅”被人民日报点赞,却被家长疯狂举报

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版