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

测试人员微博热议模型驱动测试 MBT

  • 2012-11-06
  • 本文字数:2290 字

    阅读完需:约 8 分钟

林曙湧是一位敏捷教练,在诺基亚西门子工作,专供敏捷测试、自动化测试。他在一条微博中指出:

在我看来,MBT 可以解决很多自动化测试中的顽疾,比如测试架构混乱,重复步骤很多导致测试执行效率低,自动化测试的杀虫剂效应等等。当然,要用好 MBT,我们还会面临诸多的挑战,包括理念上的,工具上的,技能上面的。不过已经有很多先行者帮我们铺好了道路,比如微软的测试架构师 Harry Robinson。

社区知名敏捷教练徐毅有些疑问:

找到银弹了?2011 年我组织 Conformiq 的 CTO 到成都 NSN 介绍过 MBT,我觉得 MBT 本身理念不错,但适用范围有限,引入 MBT 要进行思维转化,这对当时 NSN 的测试现状不见得是好事。MBT 的重点在于测试建模,缺乏此能力做不好 MBT,但培养此能力也耗费不低。

林曙湧的回应是:

没错,这个世界上没有银弹。不过它的确可以解决很多自动化测试中的问题,当然,这也是有代价的,没有免费的午餐。如何能够具备应用 MBT 需要的能力,思维的培养,还有如何与敏捷的上下文结合起来,也许值得讨论。

徐毅认为:

MBT 的主要出发点是专业测试人员只需要开发出测试模型即可,而产生自动化脚本的过程则可以委托给工具去完成,而在我看来这就是不靠谱的地方。自动生成代码的工具,多年前在开发领域早就出现过,至于它的效果如何,不必我浪费口舌。而至于那些自动生成的代码,可维护性如何,大家心里有数。

林曙湧回应:

测试代码和产品代码的性质还是不太一样的,在开发领域不适用未必在测试领域不适用。产品代码要考虑很多细节的东西,比如硬件的差别,性能的优化,等等,而测试代码更多地从用户需求来描述,复杂性相对有限。在我们的实践中,生成的测试用例只是很薄的一层,复杂的逻辑全部放在库里面。

徐毅认为:

测试自动化本身就是开发,测试代码就应该等同于产品代码进行对待,应该放在同一个代码库,维系同一版本号。另外,“把逻辑放在库里面”,你这句话说得不够清晰,我不知道你说的是“业务逻辑”还是“程序逻辑”,我认同后者应该放在库里,但如果把前者放在库里,那就是测试自动化的大忌。

“建模思想”确实重要。我当时另一个出发点是,如果公司本身就在采用 UML 那一套路的开发方式,那么测试发展的下一步选择 MBT 是比较自然也是比较经济实惠的方案。但是,我当时所接触的那些产品线,用 OO 开发的很少,用建模套路的更少,使用 MBT,会有极高的学习曲线,且开发也无经验借鉴。

林曙湧认为还是可以做到控制:

测试自动化是开发没错,但不见得所有的开发都遵循完全一样的规律啊,开发里面也有很多分支啊,不能一概而论。业务逻辑是通过模型去表现的。你说得没错,业务逻辑应该尽可能往上移,但是在具体实现的时候,有时候也会有些 Tradeoff。总得来说,还是我们可以控制的。

徐毅提出四点:

1,确实不是所有开发道理都一样;

2,但是测试自动化其实比一般的开发更复杂,因为“需求来源”更不稳定和易变;

3,业务逻辑用模型体现,我想很多 UX 的人不一定认同

4,我也认同有 tradeoff,但到底有多少,多和少,是有区别的,这决定了控制的成本,也影响了 ROI。

林曙湧:

在我们的实践中,发现通过 MBT 来实现自动化测试,的确比原来的方式对测试人员的能力要求更高,包括你说的建模能力,以及测试人员的编码能力。所以现在还是要手把手教的,但是测试人员学会了之后,反响都很不错,愿意在他们的领域推广使用。

徐毅发现:可能他和林曙湧说到的“模型”不是同一个概念

林曙湧的“模型”上下文是:

我们碰到的问题是 case 数量爆炸,而且测试的输入数据,测试步骤固化在 case 里面也不利于引入变化,无论是应对需求的变化还是避免自动化测试的杀虫剂效应。所以在原有的测试用例上抽象出一层,我们把它叫做模型,测试用例可以由它生成。

徐毅说的“模型”是:

对系统抽象理解的呈现,并以此为基准开发出测试用例。你举例的模型,我认为最多称为测试集(set 或 collection)。关键区别在于自顶向下还是自底向上。

林曙湧也同意两个不是一回事:

一般自底向上会采用抽象和归纳的手段建模,自顶向下会采用分而治之的手段。决不能说自底向上就不是建模。不过我的理解你说的 MBT 更多指战略层面的应用,的确这不是我们现在做的事情。

架构师 Jack 也加入了讨论:

关键还是你的团队具备测试建模的能力吗?测试建模不是直接把产品的流程模型复制过来,还有在产品模型的基础上衍生出更多分支才是测试模型。如果只有边界值、等价类、正交组合这样的测试方法是不够进行测试建模的。

对此,徐毅认为:

是否具备测试建模能力是一方面,也即是否可以立刻产生效果。另一方面是,如果暂不具备,是否愿意投入来培养这个能力,包括是否能够承受这个投入,或者说当前应该专注的是其他方面和提升点。这是我 2011 年在诺西时对 MBT 的看法的出发点。

之浩提到:

难得看到有讨论 MBT 的,modeling 的过程是好入手但是很难做好的,否则状态爆炸、路径筛选困难等问题会很难搞,而本身边界值这种扁平式的测试也不太适合 MBT。btw,即便在微软内部很多 team 对 MBT 也是尝试后放弃之。

InfoQ 之前介绍过的、在微软工作的刘彪也参与到讨论中。他说自己在与 Harry Robinson 吃饭时,专门问了下为什么微软也没有推广起来 MBT,而 Harry 给出的答案是:

最主要的原因是做测试人其实不是真正想做测试,不愿意在测试上专研。

围绕这个讨论,很多测试方面的技术人员都参与进来,希望了解更多内容的,可以去看这条微博的详细转发和讨论

此外,林曙湧还推荐了两个网址,可供大家了解更多关于 MBT 的知识:

林曙湧在自己的博客上还有很多关于 MBT、敏捷测试和自动化测试方面的文章,感兴趣的同学可以前往阅读。

2012-11-06 03:182961
用户头像

发布了 479 篇内容, 共 172.1 次阅读, 收获喜欢 52 次。

关注

评论

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

iOS MachineLearning 系列(10)—— 自然语言分析之文本拆解

珲少

Netty服务端开发及性能优化 | 京东云技术团队

京东科技开发者

Netty 高性能 netty内存管理 企业号 5 月 PK 榜

膜拜,国内算法大佬亲撰:数据结构与算法全解笔记

程序知音

Java 算法 数据结构与算法 后端技术

一文带你了解EPM系统的发展史

智达方通

EPM 业财融合 智达方通 企业绩效管理 海波龙

AIGC遇上低代码的碰撞与融合

力软低代码开发平台

AIGC产业研究报告 2023——图像生成篇

易观分析

产业 智能

得物直播低延迟探索 | 得物技术

得物技术

直播技术 直播推流 直播优化

NFTScan 推出「nftonchain」Telegram channel,实时推送链上 NFT 热点数据

NFT Research

NFT 智能推送 #Web3

五月到了,再来看看ChatGPT给我们带来了什么吧!

加入高科技仿生人

AI AIGC ChatGPT

华秋干货铺 | PCB板为什么要做树脂塞孔?

华秋电子

标签系列:标签的价值、生产与评价

小鲸数据

标签 CDP 用户画像 标签体系 精准营销

MySQL 8.0中InnoDB buffer pool size进度更透明

GreatSQL

MySQL InnoDB greatsql社区

版本控制 | 如何使用虚幻引擎的多用户编辑(MUE)功能

龙智—DevSecOps解决方案

版本控制 虚幻引擎 虚拟制作 虚幻多用户编辑

使用篇丨链路追踪(Tracing)很简单:链路拓扑

阿里巴巴云原生

阿里云 云原生 链路追踪 Tracing

京东物流常态化压测实践 | 京东云技术团队

京东科技开发者

测试 压测 常态化压测 企业号 5 月 PK 榜

演讲回顾 | 释放Atlassian工具的力量

龙智—DevSecOps解决方案

Atlassian Jira Atlassian 云版

巴别时代基于 Apache Paimon 的 Streaming Lakehouse 的探索与实践

Apache Flink

大数据 flink 实时计算

中国信通院召开政企信息技术应用创新(信创)促进中心启动会

信通院IOMM数字化转型团队

信创 信创产业 信创生态

八股MQ003——聊聊Consumer

Codyida

后端

自动化测试 | 如何在API开发中践行“设计优先”方法?SwaggerHub助您一臂之力

龙智—DevSecOps解决方案

API SmartBear

推动变革,打造全新的全面预算管理解决方案

智达方通

智能多维数据库 多维数据库 业财融合 全面预算管理

使用TPC-H 进行GreatSQL并行查询测试

GreatSQL

MySQL 并行查询 greatsql greatsql社区

重塑数据活力 | 焱融科技与DaoCloud 道客完成云原生兼容性认证

焱融科技

#云原生 #高性能 #分布式文件存储 #文件存储 #分布式存储

Python文件和操作系统基础

timerring

Python

大咖观点| AIGC与因果推断的双向赋能

九章云极DataCanvas

153个!PCB板上的字母符号都代表啥?一图带你搞懂!

华秋PCB

物理 电路 元器件 PCB PCB设计

简洁好用的思维导图软件:simplemind 中文版

真大的脸盆

Mac 思维导图 Mac 软件 思维导图软件

涨薪60%,从小厂逆袭,坐上美团技术专家(面经+心得)

程序知音

Java 后端 java面试 java架构 Java进阶

【Python实战】Python采集图片数据

BROKEN

三周年连更

分布式编译系统的搭建

GreatSQL

MySQL greatsql社区 分布式编译

Python函数基础回顾

timerring

Python

测试人员微博热议模型驱动测试MBT_微软_郑柯_InfoQ精选文章