认识那些评论和编写Facebook代码片段的机器人
空指针异常就像拥有一个从未构建过的房子的地址。这意味着程序员已经引用了一个实际上不存在的对象,因为它从未在代码中描述过。实际上,空指针是非常常见的并且相对容易修复 - 很容易让人觉得无聊。
不幸的是,发现和修复这些错误的繁琐工作仍占用了开发人员的大部分时间和精力。2016年对1,000个Android应用程序的评估 [PDF]发现空指针比任何其他类型的错误导致更多崩溃,包括非法参数,数组索引超出范围异常和错误令牌。
为了让开发人员的工作更有价值,Facebook现在使用两种名为Sapienz和SapFix的自动化工具来查找和修复其移动应用程序中的低级错误。Sapienz通过许多测试运行应用程序,以确定哪些操作会导致崩溃。然后,SapFix建议对开发人员进行修复,他们会对其进行审核并决定是否接受修复,提出自己的问题或忽略问题。
工程师们于2017年9月开始使用Sapienz审查Facebook应用程序,并逐渐开始将其用于公司的其他应用程序(包括Messenger,Instagram,Facebook Lite和Workplace)。今年5月,该团队将在加拿大蒙特利尔举行的国际软件工程会议上描述其最近采用的SapFix (他们正在招聘)。
据该团队称,到目前为止,Sapienz和SapFix的组合运作良好。“这节省了开发人员的时间,这是我们的主要目标,” Facebook工程经理马克哈曼说。哈曼也是伦敦大学学院的软件工程教授,他与创始人岳佳和柯茂共同创办了Sapienz,他们的前创业公司Majicke是Facebook于2017年2月收购的。
自首次亮相以来,Sapienz每个月都会发现数百种新方法让每个Facebook的应用程序崩溃。虽然其中一些崩溃不是开发人员主要担心的问题,但大约75%的崩溃事件已经受到保护。
目前,SapFix仅建议修复空指针,但团队希望有一天能够扩展该系统以协助处理许多不同的错误类型。作为其修复的起点,SapFix依赖于在Facebook开发的另一个名为Getafix的工具提供的模板 。这些模板基于人类开发人员针对类似问题所做的先前修复。
自动化错误修复,至少对于某些类别的错误,应该让开发人员可以编写更多代码或解决更难的问题 - 类似于处理故事的逻辑和语义而不是修复拼写和语法错误。
加州大学圣巴巴拉分校的计算机科学教授Giovanni Vigna说:“我认为在未来,这将成为主流,因为它具有重要意义。” “而不是支付昂贵的质量保证工程师找到琐碎的错误,付钱给他们找到超级难题。而简单的,自动化。“
到目前为止,关于自动化错误修复的大部分工作仅限于学术实验室或DARPA竞赛,但Facebook的进展表明这些技术现在已开始进入主要科技公司的工作流程。“就真实部署而言,Facebook的系统是我听过的第一个,”维尼亚说。
Harman预测,使用像SapFix这样的工具,可以在两到五年内消除特定类型的错误 - 这意味着它们将被自动化系统完全找到并修复。本地化为几行代码的错误比更复杂的代码更可能位于灭绝列表中。
瑞典KTH皇家理工学院软件技术教授Martin Monperrus的前景更加保守。他说自动虫修复“仅在开始时”,并将其与运输史上的“早期自行车水平”进行比较。
SapFix当然还有改进的余地。“它经常会提出不好的解决方案,”哈曼说。但是,他补充说,完美不一定是目标。“我们不一定每次都是对的; 它只需要经常足以帮助开发人员。“
Sapienz帮助的一项任务是决定运行哪些测试以确定哪些用户操作会导致应用程序崩溃。此类操作可能包括一次单击两个按钮,在结帐时应用多个优惠券代码,或从列表中选择多个选项。提出这些测试是一个复杂的问题,因为正如哈曼所说,“即使是一个简单的应用程序也有比宇宙中的恒星更多的测试用例。”
尽管可以通过称为随机模糊测试的技术自动生成测试,但这样做计算成本高,并且可能产生极长或其他不切实际的情况(例如一次触摸屏幕上的20个位置)。当开发人员手动设计这些测试时,他们经常会忽略他们没有明确设计的案例。
Sapienz不是依赖于随机生成的或开发人员设计的测试,而是生成可能的测试列表,并支持那些以最短步骤产生崩溃的测试。它还优先考虑具有更高覆盖率的测试,这意味着他们点击应用程序中的更多屏幕。从那里,它略微改变这些测试(通过改变点击或交换一个步骤)来提出另一批类似的测试,并重复该过程。
在评估结束时,Sapienz将找到快速可靠地崩溃应用程序的新方法。使用预测模型,Sapienz根据他们可能的常见和严重程度对这些崩溃进行优先排序。系统使用一系列启发式规则来研究可能产生问题的代码行,并在Facebook的代码审查工具中注释这个位置,允许开发人员看到系统的注释覆盖在他们编写的实际代码上。
Facebook的开发者每周进行超过100,000次提交,Android的Facebook应用程序包含数百万行代码。Sapienz全天候运行数百个仿真器来检查代码发布前后的代码,每天进行数万次测试。
“这是这些技术如何慢慢成为主流的一个很好的例子,”维尼亚说。“我认为未来我们会看到越来越多这样的事情。”
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
试驾极狐阿尔法S(ARCFOX αS)是一次令人印象深刻的体验。从咨询开始,品牌的专业客服迅速回应了我的疑问,...浏览全文>>
-
如果您想预约哈弗猛龙的试驾体验,可以按照以下步骤快速在4S店完成预约:首先,您可以通过哈弗汽车的官方网站...浏览全文>>
-
如果您想体验零跑汽车的试驾服务,可以通过以下步骤在4S店快速预约:首先,访问零跑汽车的官方网站或通过其官...浏览全文>>
-
试驾奔驰迈巴赫S级的预约流程简单清晰,以下是具体步骤:首先,访问奔驰官方网站或联系当地授权经销商。在网站...浏览全文>>
-
纳米01试驾流程通常包括以下几个步骤:第一步:预约试驾用户可以通过品牌官网、4S店或电话预约试驾。提前预约...浏览全文>>
-
奔腾B70是一款集时尚设计与卓越性能于一身的中型轿车,近期有幸对其进行了一次深度试驾。这款车型不仅外观大气...浏览全文>>
-
想要快速预约福特蒙迪欧的试驾体验驾驶乐趣?以下是一些简单步骤帮助您轻松完成:首先,访问福特官网或通过福...浏览全文>>
-
大众试驾,轻松搞定试驾想要深入了解一款车的性能与驾驶感受?试驾是最佳选择!无论是追求操控感的运动型轿车...浏览全文>>
-
试驾现代胜达时,您需要满足一些基本条件以确保安全和顺利的体验。首先,您必须持有有效的驾驶证,并且驾龄通...浏览全文>>
-
小鹏G7是一款备受关注的智能电动车,对于新手来说,试驾前需要了解一些关键步骤和注意事项,确保安全且充分体...浏览全文>>
- 哈弗猛龙预约试驾,如何在4S店快速预约?
- 零跑汽车试驾,如何在4S店快速预约?
- 江淮iEV7试驾预约预约流程
- 试驾MG4 EV全攻略
- 奥迪SQ5 Sportback预约试驾,线上+线下操作指南
- 全顺试驾预约,一键搞定,开启豪华驾驶之旅
- 魏牌预约试驾全攻略
- 试驾零跑汽车零跑C01,畅享豪华驾乘,体验卓越性能
- 试驾哈弗H6操作指南
- 零跑T03试驾,畅享豪华驾乘,体验卓越性能
- 菱势汽车预约试驾,轻松搞定试驾流程
- MINI试驾,线上+线下操作指南
- 试驾沃尔沃XC60,从预约到试驾的完美旅程
- 试驾QQ多米,畅享豪华驾乘,体验卓越性能
- 试驾丰田汉兰达,一键搞定,开启豪华驾驶之旅
- 力帆预约试驾,一键搞定,开启豪华驾驶之旅
- 阿维塔12预约试驾,4S店体验全攻略
- 试驾江铃E路顺V6,简单几步,开启完美试驾之旅
- 灵悉L试驾预约,如何享受4S店的专业服务?
- 极氪7X试驾,如何享受4S店的专业服务?