最近InfoQ 推了篇文章标题为 “# 从 TikTok“重 QA 轻测试”来看中美软件开发之间的差异”。
文章讲述了一位曾在一家在美中企(TikTok)工作了一年多的华裔(之前任职于 Snapchat 和 Facebook),在 YouTube 上发布了一个视频“5 crazy things about working for Tiktok(why we quit our PM and engineering jobs)”,列举了中美软件开发公司的 5 个主要的不同点。具体内容可以参考 InfoQ 原文:从 TikTok“重 QA 轻测试”来看中美软件开发之间的差异
Tiktok 重 QA 轻测试
其中和技术相关的一点是中美软件公司对待单元测试、代码合并请求及代码审查的方式不同
很多西方企业都会写单元测试,每个人都知道这是非常基本的事情。但这里的中国工程师们不需要编写单元测试!每项代码提交都指望 QA 部门的手动测试,团队在提交之前手动测试每个 code commit 提交。
你可能认为这完全是疯了,为什么不写单元测试?利用 QA 进行测试,实际上是希望工程师们关注于功能,并快速启动,写测试就完全交给了 QA。
而且让人震惊的另一件事情是,代码合并请求也不需要批准。在一个十万人的企业里(这不是一个小型初创企业),没有单元测试也没有代码审查,仅依赖于 QA,但这却是“有效”的方式!也没有发生过重大宕机事件。
中国企业的产品团队往往人员更多,也更倾向于依靠运营团队推动业务增长;这一点与美国被动加数据驱动的增长思路不太一样。我注意到中美科技企业之间的主要差异,是中国企业对人力的依赖性更高,这个优势也是中国企业得以迅速占领新市场的核心原因。
单元测试有用码?单元测试是必要的吗?
我不知道TikTok 或者字节跳动是否写单元测试。百度搜索 “字节跳动 单元测试”,第一页全是字节跳动面试相关的。倒是微软的必应返回了一个收录自 “掘金” 的相关文章 “字节跳动服务端单测ATG-SmartUnit 探索实践 - 掘金” 。这篇文章是一个字节跳动自研了一个自动扫描代码,自动构建单元测试的框架的介绍。从这点上推出字节跳动应该是做单元测试的吧。
不过国内确实有很多公司不做单元测试。很多软件工程师认为写单元测试是浪费时间。很多工程师认为需求改个不停,甚至快上线了,还在改需求,这样的环境,根本没有办法写单元测试。也有工程师认为只有底层代码才有必要写单元测试,业务代码没有必要。
这里想做个调研,感兴趣的同学可以回复下你的公司是否做单元测试。后续打算写几篇关于单元测试的文章。