一天扔一本书:《探索式软件测试》
今天扔的书是《探索式软件测试》(Exploratory Software Testing),2015年6月1日买的。
前几年为了讲课,读过几遍。读完最大的感受是:这是在反探索。
探索式测试的灵魂是什么?是好奇心,是直觉,是老手坐在电脑前,凭着对系统的“嗅觉”去乱点乱按,在边缘地带疯狂试探,是那种“如果我在这儿输入个乱码会怎样”的灵光一闪。
你不知道接下来会发现什么,但就是觉得这里值得试一下。发现了什么,再顺着这个念头继续试下去。
但这本厚厚的书,试图把这种高度依赖个人经验和直觉的东西,硬生生变成一套标准化的流水线模板。
作者提出了“漫游”(Tours)的概念,把软件测试比作旅游。这本来是个好比喻,但他把漫游分成商业区、历史区、娱乐区、破旧区……然后规定你遇到什么情况该走哪条街,甚至还设计了极其繁琐的测试记录表。
这就好比,你本来想背着包去西藏来一场说走就走的灵魂洗礼,结果旅行社给你发了一本《西藏洗涤心灵标准化打卡指南》,要求你每天早上8点必须到布达拉宫门口比耶,下午3点必须去大昭寺数砖头,还要填表打分。
我读着读着,开始觉得这不是在教人探索,而是在教人如何按照规定完成探索。如果每一步都规定好了,那还算自由行吗?
当“探索”被写成了一本厚厚的剧本,探索就已经死了。
真正的Bug不见得会按指南走出来。它可能是在你吃饱了撑的、手滑按错,或者神经质般地连点了一百下鼠标时,系统崩溃那一瞬间给你的惊喜。
这才是我喜欢探索式测试的地方。
不过,这本书虽然有着“过度教条化”的毛病,但它毕竟是行业经典,剥去那些繁文缛节,我还是留下了三句话。
第一句:把软件当成一座城市,带着目的去瞎逛
不要一上来就盯着需求文档想用例。
闭上眼睛,想象你是个游客。去最繁华的“商业区”(核心业务流程)走一走,去“历史区”(老代码、遗留系统)挖一挖,去“破旧区”(边缘功能、异常输入)踹两脚。
带地图是为了不迷路,真正的风景都在地图之外。
今天再看,这件事可以变成动态探索。
AI可以根据测试目标,读取需求、接口、代码、日志和运行状态,逐步建立对系统的认识,再根据已经发现的现象,决定下一步测试什么。
它不必只执行人提前写好的用例,也可以根据前一步的结果提出新的假设、生成新的输入、尝试新的操作路径。
但这里有个区别:AI能生成很多探索路径,不等于它天然拥有探索直觉。
人仍然需要告诉它要探索什么、不能越过哪些边界,以及什么样的异常值得继续追。AI负责扩大探索范围,人负责判断方向和价值。
第二句:Bug是扎堆的,别在平原上找金子
在一个功能里发现了Bug,不要记下来就跑。停下来,在附近疯狂试探。
系统腐烂往往是一片一片的。就像一兜水果,一个已经烂了,周围也很难不烂。这就是Bug的聚集效应。
有了AI之后,可以把它理解为从单点失败寻找缺陷簇。
发现一个Bug之后,不要只修复眼前这个输入。可以继续沿着几个方向扩散:
局部扩散:改变输入、操作顺序、数据状态,看看相邻条件下是否也会失败。
关联扩散:检查调用链、共享组件、数据结构和业务规则,寻找可能受到同一问题影响的地方。
模式扩散:从具体故障中归纳出一种缺陷模式,再到其他模块寻找相似问题。
AI可以帮助分析代码、日志、调用链、历史缺陷和测试数据,把原本分散的信息关联起来。
不过,关联不等于因果。AI找到的相似性仍然需要验证。
第三句:测试不是“确认它能用”,而是“证明它怎么坏”
常规测试走直线,验证1+1=2。
探索式测试走迷宫,寻找设计者没考虑过的死角。
不要害怕把系统搞坏,如果系统那么容易被搞坏,那说明它本来就不该上线。
测试人员终极武器不是自动化脚本,而是那句:“哎,如果这样呢?”
现在,我们面对的系统变了,“怎么坏”也变得更复杂了。
一个AI系统可能在正常输入下表现得很好,却在上下文冲突、指令含糊、工具调用失败、信息不完整或者用户意图发生变化时出现问题。
它也可能给出看似合理、实际错误的答案,或者在模型、提示词、工具和知识库更新之后,悄悄改变原本稳定的行为。
所以,测试不只是验证它能不能完成任务,还要探索它的可靠性边界:
- 哪些输入会让它产生错误判断?
- 哪些上下文会让它忽略重要约束?
- 哪些情况下它会编造信息,或者错误调用工具?
- 同一个任务多次执行,结果会有多大差异?
- 系统升级之后,原来通过的测试是否仍然成立?
AI系统未必有唯一正确答案,测试也就不能只依赖传统的固定结果断言。规则校验、结构化评估、参考答案、模型评审和人工抽检,都可能成为评估手段。
但别忘了,负责判断AI对错的评估器,本身也需要测试。
我还是不太喜欢把“旅游指南”当成自由行的写法。
现在回头看,这本书里的“漫游”概念,倒是可以画成一张思维导图,贴在工位上。书本身就算了。
留下“漫游”和“好奇心”,去逛街、扎堆、搞破坏。
记住这三个词。书没了,测试的直觉得留着。
扔书档案:《探索式软件测试》
书名:《探索式软件测试》
购买时间:2015年6月1日
购买原因:想系统学习探索式测试的“漫游”理论
阅读过程:
第1-2章:基本概念和概述(看不看都行)
第3-5章:漫游分类、局部法和全局法(可读)
第6-8章:测试表格和记录法(烦躁,不用看)
最终去向:弃读,扔扔书系列
- 一天扔一本书,留下三句话
- 一天扔一本书:《用户故事与敏捷方法》
- 一天扔一本书:《探索式软件测试》