AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

从动物觅食学到的测试经验

  • 2018-01-15
  • 本文字数:1773 字

    阅读完需:约 6 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

James Bach 说,我们可以通过动物如何觅食来学习如何更好地理解测试。随着时间的推移,测试人员会发现产品中哪里有 bug,但是测试人员偶尔随意在其它地方探索可能会更高效。不要再期望自动化可以让你解脱,学习如何去寻找 bug 吧。

James Bach 是一名资深软件测试人员,在 2017 秋季在线测试大会(Fall Online Testing Conference 2017)上发表了主题为“When Animals Test”的演讲。InfoQ 正以问答采访、总结和文章的形式展现这次大会的内容。

InfoQ 采访了 Bach 关于如何高效地发现缺陷、如何决定需要多少计划或规则以及如何提高测试人员的技术等问题。

InfoQ:测试和动物觅食之间的相似之处是什么?

James Bach:这两种活动都涉及在一个大型的复杂空间中搜索一些稀少的有价值的东西。对于测试人员而言,意味着发现 bug。对于动物而言,意味着寻找食物。通过自然选择演变机制(即,达尔文进化论),动物发展出不需要消耗太多能量就可以发现食物的策略。这些策略也许可以帮助我们更好地理解测试。以大黄蜂搜索它们的领地周围来寻找花蜜为例。首先,它们花费大量体力随意乱飞。一段时间后,它们就知道了哪里有花朵,这和测试人员了解产品中哪里有 bug 的方式很相似。最有趣的是,蜜蜂在优化了它们的采蜜路线之后,仍然会偶尔朝着随机方向乱飞,这使得它们能够发现新的花朵。它们有时候高效地采集食物,有时候到处乱飞。测试人员面临同样的权衡问题。

InfoQ:我们可以从中学习到什么?

Bach:我们可以从中学到的一件事是,不要再推进那些动物都知道不会有用的测试方法。动物知道,搜索是一个开放的充满随机性的过程。蜘蛛使用不断调整织网范围的方案来解决食物搜寻问题。因此,对于我们来说,编写大量无法自适应的测试用例可能并不是发现 bug 的最好方法。

不要再期望自动化会让你解脱。你必须学会搜寻 bug。搜寻是一个动态的过程。我们确实可以用自动化来帮助我们测试,但是我们应该使用自动化来强化我们的感知和能力,而不是用了自动化之后我们就可以去睡大觉了。

InfoQ:规划的价值是什么?我们如何发现我们规划了太多或者设立了太多规则?

Bach:规划的目的是配置我们的工具、资源和活动来高效地实现我们的目标;规划花费宝贵的时间和能量;一个好的规划所需的数据和技能通常来自过去糟糕的规划经历。因此,答案是:“我们总是在忘记或摒弃过去经历中不好的部分,不断进行探索和适应,在这个过程中我们会发现规划并没有我们预期中那么有用”。

虽然规则的成本很高,但却是对我们有好处的东西。通过不断的试验和突变来寻求遵循旧规则和探索新规则之间的权衡。那就是动物的行为方式。

InfoQ:如果我们的规则过多了,我们如何摒弃其中一些规则?我们如何决定哪些规则应该保留,哪些规则应该摒弃?

Bach:这就是缺乏纪律、年轻气盛和健忘的价值所在,它们都有助于调整和适应。这些品质并不一定是我们成长过程中坏的方面。正如我想说的:如果你想对一个坏的流程品头论足,那至少你不要那么做就好了。

换句话说,你也许没必要去摒弃那些多余的规则了,因为可能已经没有人会遵循这些规则了。

InfoQ:你对测试人员有哪些建议来提升他们的能力?

Bach:观察你自己是怎么工作的。观察别人是怎么工作的。时不时地认真地做些笔记,例如,问题解决的时候记录下问题是怎么解决的,任务完成的时候记录下任务是如何完成的。

这是其它动物不擅长做的事情。

例如,我有一次给自己录了一段自己测试时的 7 分钟的视频,对其中每 2 秒的时间段进行了分析。我以为会发现自己将潜在事实验证作为测试工作的一部分并在做许多这方面的工作,结果也确实如此。但令我惊讶的是,有大约 25% 的时间我用来做了一项严格来说既不是测试也不是事实验证的特殊活动,即意义构建(sensemaking)。意义构建是构建一套理论来解释一些你经历的事情。我一直没有意识到意义构建在我工作中的突出作用,直到我花了 3 个小时认真挑选并分析了 7 分钟的测试工作。在做了许多意义构建之后,我意识到自己可以开发一些锻炼方法和探索方法来系统性地完善它。

查看英文原文: Testing Lessons from Animals


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-01-15 18:001492

评论

发布
暂无评论
发现更多内容

使用 JavaScript 给微信用户发送消息

汪子熙

微信 sdk 28天写作 Web JS SDK 12月日更

Vue之全局事件总线和消息订阅与发布

编程江湖

前端开发

20行Python scrapy 代码,去采集【蓝桥】训练营

梦想橡皮擦

12月日更

面试官:说说react的渲染过程

全栈潇晨

React

设计模式【6.1】-- 初探适配器模式

秦怀杂货店

Java 设计模式

react源码解析10.commit阶段

buchila11

React

C++如何写出异常安全的代码

行者孙

c++ 异常 错误处理 签约计划第二季

聊聊前端工程师如果做职业规划

全栈潇晨

职业规划 前端开发

【LeetCode】保持城市天际线Java题解

Albert

算法 LeetCode 12月日更

JavaMoney规范(JSR 354)与对应实现解读

vivo互联网技术

Java、 API 虚拟化 虚拟货币

音视频学习--X264码率控制--前瞻

Fenngton

音视频 H264 视频编解码 签约计划第二季

0 基础学习 Flutter~(mini 进阶版)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter 内容合集 签约计划第二季

Linux学习方法《Linux一学就会》:网络管理技术

侠盗安全

Linux linux运维 运维工程师 云计算架构师

技术分享| Linux高并发踩过的坑及性能优化

anyRTC开发者

Linux 音视频 高并发 服务器 高并发优化

设计模式【6.2】-- 再聊聊适配器模式

秦怀杂货店

Java 设计模式 适配器模式

推倒重来的觉悟

FunTester

单元测试 Mockito powermock spock FunTester

dart系列之:安全看我,dart中的安全特性null safety

程序那些事

flutter dart 程序那些事 12月日更 flutter 调试工具

C++实现unique_ptr

行者孙

c++ DIY 签约计划第二季 unique_ptr

Android 值得学【Android专题2】

坚果

28天写作 Android; 12月日更

React进阶(四):路由介绍

No Silver Bullet

React 路由 12月日更

今年双12,《代码随想录》冲榜TOP1

博文视点Broadview

❤️使用 HTML、CSS 和 JS 创建在线音乐播放器(免费送完整源码)❤️

海拥(haiyong.site)

响应式 大前端 28天写作 签约计划第二季 12月日更

C++的explicit关键字

行者孙

c++ 签约计划第二季 explicit

C++中的pimpl惯用法

行者孙

c++ 签约计划第二季 pimpl 惯用法

react源码解析9.diff算法

buchila11

React

Java反射机制获取运行时类的完整结构

编程江湖

JAVA开发

给弟弟的信第12封|阅读对一个人有多重要

大菠萝

28天写作

大数据开发技术NN和2NN工作机制

编程江湖

大数据

C++ 三种智能指针的使用场景

行者孙

c++ smart pointer 签约计划第二季

软件开发中的字符编码问题的思考

行者孙

c++ 软件开发 签约计划第二季 字符编码

初识腾讯移动通讯 TPNS~

阿策小和尚

28天写作 Android 小菜鸟 12月日更

从动物觅食学到的测试经验_语言 & 开发_Ben Linders_InfoQ精选文章