为什么开源C/C++单元测试框架极昂贵?

开发 测试 开发工具
三月份,准备搞一个C/C++单元测试在线培训,草拟了一份课程提纲,发给一位老朋友(马工)征求意见,马工在一家研究院工作,领导一个近百人的开发团队,单元测试推广和实施都很有经验,给我的意见只有几句话。

三月份,准备搞一个C/C++单元测试在线培训,草拟了一份课程提纲,发给一位老朋友(马工)征求意见,马工在一家研究院工作,领导一个近百人的开发团队,单元测试推广和实施都很有经验,给我的意见只有几句话:

删除开源框架部分,这个太昂贵,用的企业会越来越少,讲这个浪费听众的时间。我猜你花一大段时间来讲开源框架,目的仅仅是为了减少宣传商业工具的嫌疑,课程只要考虑听众的真正利益(学到有用的东西)就行,何必考虑别的。”

课程内容删除开源框架部分,这个我马上接受,因为当初加上这部分内容,原因正是马工所猜的。不过,用“太昂贵”来形容免费的开源框架,有些匪夷所思,我知道用开源框架做C/C++单元测试很难且成本很高,但从没想到“昂贵”这个词。在电话里和马工聊了半天,讨论了C/C++单元测试框架“太昂贵”的理由,整理如下。

免费的反而“昂贵”,这很平常,比如企业要派一个人从成都到北京出差,可以坐飞机、坐火车、租汽车,也可以借一辆自行车骑过去,前几种都是要付钱的,骑自行车免费,毫无疑问,骑自行车是最昂贵的,“昂贵”表现在:费钱(不算别的,工资就很吓人)、费力(这种累死人的事谁愿意干?)、误事(这个不用解释吧?)。[点评:我个比喻我也用过,不过没那么透彻,真是有实践者所见略同]

使用C/C++单元测试框架做单元测试,其结果跟骑自行车很像,也是费钱、费力、误事。

费钱:工具可以免费,人才不能免费,相反,人才极昂贵,而且越来越最昂贵。一个程序员,如果月薪1万,企业实际要支付的全部成本为1.5到2万,折算成每小时的成本,大概是100元,也就是说,写1小时的测试代码,企业要付出100元,这是使用开源框架的成本,是不是比自动化工具昂贵得多?[反驳:用工资低的实习生或初级程序员来写测试代码,成本不就降低了吗?答:那就别做单元测试了,单元测试是程序员自己做的,要边开发边做,越是重要的程序员越要做(因为他写的代码也越重要),事后让别人做单元测试,那是毫无意义的,除非每个函数都有非常详细的文档,可是谁做得到?]

费力:程序员为什么不愿“写”单元测试?请注意,是“写”单元测试,不是“做”单元测试。程序员不是不知道单元测试的好,而是不愿意写测试代码,因为太烦了。程序员不怕难,最怕烦。创造往往很难,但却是程序员的***,也是程序员的价值所在。测试代码既然用工具都可以生成,自然没有创造性,程序员怎么可能喜欢写呢?让程序员做自己很不喜欢做的事,这是很累人的,特别费力。

误事:误事表现在三方面:

一、花很多时间来写测试代码,延长了项目的周期,严重时可能失去市场机会。

二、太费力,程序员可能消极应对,最终做不下去,折腾很长时间,又回到原点。

三、测试不充分,很多测试点,是手工编写代码难以达到的,举个简单的例子,要让malloc()在***个用例返回NULL,其他用例正常申请内存,手工编写代码就很难做到。用开源框架,完成代码覆盖都几乎不可能,而使用合适的商业工具,完成MCDC覆盖一点也不困难。

原文链接:http://blog.csdn.net/easytdd/article/details/24288727

责任编辑:林师授 来源: EasyTDD的博客
相关推荐

2010-01-15 14:10:42

C++单元测试

2010-01-13 09:38:17

C++单元测试

2012-06-18 10:03:46

Visual Stud

2022-08-05 09:30:57

单元测试C++

2017-01-14 23:42:49

单元测试框架软件测试

2022-02-21 07:54:28

单元测试编程开发

2011-08-22 13:57:55

gtest

2024-04-26 11:14:34

C#单元测试框架

2010-01-12 16:12:47

C++单元测试

2009-09-01 16:35:16

C#单元测试

2022-05-12 09:37:03

测试JUnit开发

2015-04-21 13:37:44

Google开源CC++版

2024-10-16 16:09:32

2022-06-30 09:20:32

单元测试测试

2009-09-01 16:45:00

C#单元测试工具

2009-09-01 16:10:28

C#单元测试

2021-08-04 10:51:04

数据库单元测试SQL

2009-08-19 09:00:48

单元测试框架自动化测试

2022-11-28 09:58:58

C++开发

2023-12-24 10:00:35

Java单元测试
点赞
收藏

51CTO技术栈公众号