半点优化网 http://www.bdxc.net/
当前位置首页 > 网站技术问题> 正文

Facebook的工程师是如何在一亿行代码中迅速找到缺陷的呢?

2022-06-03 09:03:53 暂无评论 194 网站技术问题 何在   缺陷   Facebook

题主您好。

在开发的时候,无论是什么语言,我们都会使用一个工具,叫做 “日志”,我们会在自己的代码中加入各种各样的日志,从而辅助判断检测问题的所在之处。

此外,我们还可以借助一些Debug工具,来辅助进行错误的定位。

如果你想要知道更多信息,可以关注我的头条号,了解更多编程知识

这个问题对专业的来说是常识,不过我还是简单解释一下给外行看吧。权当娱乐。

找Bug这事,最简单就是用开发工具,在代码执行的时候设置断点,看每条代码执行之后的结果是否符合预期。程序员也会在一些地方把软件的状态记录在日志文件里,就像飞机的黑盒子那样的,当程序出现问题的时候反查日志,也会对找到问题有帮助。

这些都是小儿科,但程序员几乎每天都在做这些。

对于像Facebook这种大型软件公司,如果光指望程序员这样干,那就不要玩了,有一套系统性的方法,叫做软件工程,专门研究的是如何科学地管理软件开发的过程。还有一系列质量认证来评估组织的过程管理能力,比如SEI-CMMI,类似工厂常用的ISO 9000系列,很多政府组织都要求有相关的资质才能接他们的项目。这里就不展开了。

对创业公司而言,完全实施这种严谨的软件过程成本很高。没有50人以上,组织角色都凑不齐,不太现实。但是一般而言,每日构建还是最基本的开发实践。

首先,所有代码要有相关的测试代码。比如,一个计算加法的程序,要有另一套程序负责测试其结果是否正确,用多种设计好的边界数据进行检验。当然做加法的代码不值得这样,仅为举例,不过大公司的测试程序数量远远大于正常的功能代码,也要经过严格的同行评审才能提交入库。

其次,比如微软是每天五点之前每个人上传当天改过的程序,系统编译过后自动执行所有测试程序,保证所有人改过的集成之后,各种功能可以正常工作。这个测试会包含功能、性能及各种极端用例,通常会持续数个小时。软件人员最怕就是下班了接到自己的代码测试出错的信息,那就意味着当天要改完通过测试,不然代码库会回滚到一天前,当日所有人的工作无进展。

尽管如此,总有一些问题会在上线后发生。毕竟各种硬件设备和运行环境的组合是个天文数字,手工找Bug还是免不了。这时候就看经验了,高手的效率也许是生手的上百倍。所以很多软件公司的高管都是技术出身,否则做个睁眼瞎,不知道会多花多少冤枉钱。

猜你喜欢