蓝字
在软件测试中,我们时常追问:测试到底是为了什么?
是为了验证功能是否符合文档?还是为了确认产品能正常运行?这些答案都不算错,但也远远不够。真正深刻的测试,既不是走流程,也不是简单对照,而是一种探索、一种发现——发现“我们以为”的与“实际拥有”的之间差距。
为了更好地理解测试的意义,我们可以借助如下模型,James Lyndsay提出的两个圆圈模型。
两个圈,定义了测试的世界
James Lyndsay 在其论文《Exploration and Strategy》中提出了一个经典的测试模型:两个圆圈模型。我们可以把它稍加演化,用来描述测试在产品开发中的定位与价值。
这个模型由两个重叠的圆组成:
左边的圆是想象圈,代表我们对产品的所有期望,包括明确写下的和隐含未说的;
右边的圆是实现圈,代表我们实际交付的产品,包括代码、功能和行为。
测试的作用,就是穿梭于这两个圈之间,不断发现它们之间的偏差,并帮助团队决策与修正。
我们测试得越多,了解得越多,两个圈的重叠就越紧密,我们也就越能确信:我们构建的,正是我们想要的。
想象圈:识别真正的需求
在“想象”这一侧,测试的任务是理解期望。这不仅仅是读懂PRD(产品需求文档),更是要挖掘那些未被写出来、却实际存在的隐性需求。
举个例子:一个团队正在开发一个搜索功能,产品负责人提了一句:“搜索结果要按相关性排序。”
听起来很简单对吧?但如果只是照着这句话去实现,我们可能漏掉很多关键点。测试在这个阶段就需要发问:
什么是“相关性”?对谁相关?
排序算法具体是什么?能调优吗?
如果搜索词模糊,展示逻辑会变吗?
是否需要高亮?是否有分页?
用户期待的体验是什么?
越是深入“想象圈”,越能揭示那些被误解、被遗漏、甚至被默认的需求预期。这些预期一旦在实现阶段没有被捕捉到,就极容易引发质量问题。
实现圈:面对真实的交付
即使我们已经弄清楚要构建什么,实际交付仍然可能与预期不符。代码有 bug、依赖服务不稳定、边界条件未考虑……这些都藏在“实现圈”中。
所以我们还必须测试产品的实际行为,关注它是否真正满足了想象中的目标,并在此基础上,主动去探索那些未预期的行为。
还是以搜索功能为例,我们需要问:
如果输入多个关键词,排序是否合理?
服务部分宕机时搜索是否仍可用?
连续高频请求会不会造成异常?
没有结果时页面怎么提示?
返回结果是否一致可复现?
很多时候,测试最有价值的地方,不在于它验证了产品能“跑通”,而在于它揭示了产品“在边界或混乱情况下的表现”。
测试,是一场双重探索
这个模型有一个极富洞察力的点:测试不是验证,而是学习。
我们通过测试想象圈,学习我们真正要构建什么;
我们通过测试实现圈,学习我们实际构建出了什么。
而测试的价值,正是在这两次学习之间找到差距、发现问题、推动改变。
让“想象”与“实现”重叠得更近一点
越是高级的测试人员,越要超越“点点点、过用例”的基本执行,开始关注信息差、偏差、假设与现实之间的缝隙。这正是两个圈的交集,也是测试存在的最大意义。
你可以试着画出你项目中的这两个圈,问问自己:
我真的理解了产品的隐性期望吗?
我真的测试了产品可能表现出的异常路径吗?
我的测试活动,是在增加知识?还是仅仅在打勾勾?
写在最后:你怎么看?
你是否也经历过“看似完成但用户并不满意”的测试项目?
你觉得自己更多是在“验证功能”,还是在“发现偏差”?
欢迎在评论区分享你对这个模型的理解,以及你在实际项目中的观察。
测试,从来不只是“跑通就好”。它是沟通的桥梁,是产品与用户之间最敏感的神经末梢。