单元测试与仿真步伐之间的选择

[复制链接]
发表于 2025-10-20 15:56:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
为什么写这篇文章

如今的工作需求,让我有须要总结和整理一下。
凡事都有实用的场景。起首这里我须要提示一下,这里的信息,大概并不普适。
但是可以肯定一点的是,有些人,岂论办事还是写书,上下文还没有交待清楚,就对你说单元测试怎样告急,这种是极为无耻的。
是的,我是说无耻。由于说风凉话的人,他们不须要像那些奋战在一线的步伐员那样,须要面对效果质量与进度和本钱,以及维护性之间的考量,他们只须要在意自己说的话是不是看来永久正确即可。
这么说吧,一个想要他说的话永久正确,只须要故意将上下文删除即可,这也就是人们常说的站着语言不腰疼,大概永恒正确的废话,大概何不食肉糜之类的正确但无用的话。这些话每每常出如今册本上。
但是,实际中,我们天天都须要面对痛楚的选择:是让自己本心好受一些,写出质量过得去的步伐,还是让老板看到,我又出活了如许的外貌文章。
以是,我们必须要思量怎样测试,以及怎样制止重复雷同的错误如许的标题。
然而,测试从来不是一件简朴的事,毕竟上,我的硕士论文写的就是怎样在被测对象升级之后,自动测试的脚本,可以大概95%以上自动升级的故事。这个我们不多说了。但各人都知道这是一个困难的变乱。以是我的论文开篇讲的是自动测试的灭亡史。
讲到测试,我们就不得不思量测试的方法。
全部的书上,都夸大Unit test是必不可少,多么告急。
这点相识我的人都知道,我是嗤之以鼻的。
正确的事,就好比亚当.斯密的《国富论》,以为自由竞争是是经济的基石;而毕竟是,人们总会有想尽办法使自由竞争失效。
同样,这些看似正确的废话,只能带来灾难。软件行业的灾难性失败还少吗?这些大公司没有做单元测试吗?
以微软为例,2003年,其时我还在某为,听说微软过了CMM2级,我说了一句:微软今后再也不能开辟出有完备度的软件。一语成谶。
铺垫这么多,就是想对一些人说:凡事须要思量上下文,不要被全部的书里都承认的话所蒙蔽:全部的写书的人,大多没有在一线工作过。
单元测试VS模仿(或仿真)步伐

反面我们来比力一下这二者
单元测试的实用范围

1。 相对简朴的步伐或产物。
2。 与装备无关的步伐或产物。
3。 需求变更相对慢的步伐或产物。
4。 筹划良好,接口清楚,与人机界面交互不多的多线程的每个模块或层之间。
上述为一样寻常的单元测试能取得良好效果的上下文。
单元测试的标题

对代码有依靠。

这显然是最严肃的标题。
有人说,为什么我要极客编程的缘故起因正是云云,由于从前测试与研发是相对的,由于体制要求云云,但测试发现,研发的人可以随意改代码,以是白盒测试就灭亡了。
以是,管理者就想到让步伐员吃自己的狗食如许的损招:自己写自己的单元测试——反正嘴一动就可以了,这多简朴。他们不思量这么做带来的效果是什么。
这是一个悲痛的期间的缘故起因是真正的步伐员,已失去是了话语权。
那么有人说,是你自己的狗食,做得欠好吃是你自己的标题。
然而毕竟真的是如许吗?
需求变更,产物司理认了客户当干爹,他敢对干爹说不吗?
还是苦一苦步伐员吧。
筹划错误,全部的PMP(我不是说PMP认证,我是说捧臭脚谁人PMP)的组长,敢对总工说不吗?
还是苦一苦步伐员吧。
接口常变更,步伐员同样没有权利找高出多个部门的技能官僚体系去说理。
还是苦一苦步伐员吧。
以是,这狗食难吃,大概只有不到1%的标题,在步伐员。
以是,步伐员如今不但要捏着鼻子做难吃的狗食,还要自己吃了。
固然我们须要肯定单元测试的代价

如果你有良好筹划的复杂的步伐,全部的模块相对独立,接口相对稳固,
而且这个步伐是多线程步伐,那么单元测试是能发挥出极大的代价的。
如果再加上我写的论文里形貌的,当被测对象发生改变时,自动测试脚本也能自动升级,显然对步伐员是有利的。
固然,这是永恒正确的废话。
由于分工是你步伐员浇水,官僚体系吃桃子。
呕,我忘了说,这种分工很公平:一棵树,一人一半,你要下面,我要上面。你不绝浇水,我不绝吃桃子,对了,老吃桃子也很累人的,你们浇水人不会懂我们的痛楚的。一人一半,很公平,放称上称称,肯定一样重的。。。
大概说,除非这项目是你一个人在写。
多数环境,单元测试害处多于优点。
缘故起因很简朴,导致这种环境的官僚体系,是无人问责的(单向向上体系)。责权不对等。固然,他们吃桃子也很累,我也很有同理心的。
以是总结:
一个人的项目,而且项目很复杂,筹划可控,接口清楚,需求清楚,而且你要对被测的对象非常相识,才可以。
模仿(或仿真)步伐

固然一样寻常我们是指模仿步伐。除非有条件(作装备仿真)。
人们有个误解,以为互联网步伐代表步伐员,这显然是错到离谱,离了大谱。
广大的步伐员,是须要与装备或硬件打交道的。
以是,模仿或仿真步伐,是至关告急的。
缘故起因是绝大多数公司,无法提供充足的硬件给步伐员。
步伐员的困难在于,有困难无处去说,好比说,我须要行拿到装备,才华徐徐的相识它的习性;
但向导却对峙以为,你是懂的,你非常懂。
等你刚懂,这个项目完事了,新的装备又到了。
以是,步伐开辟是个动态过程,这些话,向导是无法明确的,由于中国的环境,如今的向导都是硬件身世,麻麻不懂。而且也不讲原理。我这么说是有依据的。
在如许的环境下,写单元测试,是相当离谱的。
但是,写模仿步伐却黑白常须要的。
这是从技能开辟和技能管理两个视角来看的。
由于模仿步伐的仿照对象仅仅是我们的target,而unit的服务对象却是我们的步伐。
这个你轻微明确一下就懂了。一个是对哈雷彗星,另一个是对哈雷将军。
也就是说,我们自己写步伐,是最不可信的,由于你在信息的末了一道工序,没人在乎你。
但装备差别。
以是,岂论你怎样改代码,都不会影响simulator。
这是最关键的要点。与unit test差别。
我常说,第一点占75%以上。
但是反面的不告急的来由我们也要说说。
资产保值性

资产保值这件事,也是有水分的。由于你得是“资产”,才有须要保值。
一堆垃圾代码,它就不是资产。
单元测试的代码,每每云云。由于它要测的对象如果是个垃圾,它就肯定是垃圾。
但是,simulator却不是如许的。
由于它mirror的对象是真实的装备。
随着公司工程的一年一年的积累,这个simulator会变成emulator的一部门,末了会变成产物的一部门,末了,会比产物更好。
以ABB的呆板人为例,相识过的人都知道它的simulator有多强。FPGA的步伐,DSP的步伐,直能能跑。呆板人也是三维CAD动画模仿出来的。
用户不须要买robot就能完全与买了一样给呆板人编程。
这个算是15%?
管理角度

使用分工,也就是说,大公司,可以专门派专人写simulator,这点着实非常有代价的。留意是专岗。
如果有公司这么做,分析这老板有程度。
只管中国大多是垃圾公司,管理极为垃圾。
但如果你的老板有这程度,恭喜你。只管多干几年。
啊对了,你不大概设立专岗写unit test。前面这我表明得许多多少了。
跋文

可万万不要以为,单元测试不告急。
着实我也写的。
由于我能做到可控。
由于是我一个人在干。我对我的本领也相当自负。以是我用。
但我尽最大大概,会合中精神写模仿步伐,由于太须要了。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表