专栏名称: 云头条
云计算领域科技媒体:传播观点,传播价值,连接商业与技术;Web:www.yuntoutiao.com ,欢迎互动~~~
目录
相关文章推荐
新浪科技  ·  【#Mate70系列样机到店##Mate70 ... ·  6 天前  
新浪科技  ·  【#前10月一般公共预算收入184981亿# ... ·  6 天前  
51好读  ›  专栏  ›  云头条

Facebook开源捕捉代码缺陷的自家工具:OneWorld、Jupiter、AL

云头条  · 公众号  · 科技媒体  · 2017-05-25 22:36

正文

大规模测试管理和调试工作从此变得容易了一点。



Facebook设备测试


Facebook周三计划推出一套开源开发工具,以简化应用程序开发测试和缺陷查找工作。


Facebook在伦敦的Dev Tools @Scale大会上打算大秀一把:


  • OneWorld(http://code.facebook.com/posts/1708075792818517),这种系统用于跨多个设备和环境测试软件;

  • Jupiter(http://code.facebook.com/posts/222017798302928),这种工具用于将后端作业与计算资源相匹配;

  • 以及AL(http://code.facebook.com/posts/277643589367408),这种声明式编码语言用于编写可与Facebook的开源静态代码分析工具Infer结合使用的自定义缺陷查找器。


工程主管布莱恩·奥沙利文(Bryan O'Sullivan)在接受英国IT网站TheRegister的电话采访时表示,虽然Facebook可能因Oculus和Aquila之类的知名项目而家喻户晓,但该公司有大批工程师致力于设法提高软件开发效率。


OneWorld体现了这个目标。OneWorld旨在补充Facebook的移动设备实验室,让开发人员得以在数千个移动设备上同时进行测试,它提供了一套API来管理远程测试资源,比如手机、浏览器和仿真器。


在Facebook,OneWorld每天协调大约20000个终端资源,处理100多万个作业。


奥沙利文说:“这个系统旨在帮助工程师处理Android设备、iPhone以及模拟这些设备的仿真器,还有浏览器。我们的目标是,让这些资源处理起来尽量简单明了。”


OneWorld包括运行时worker服务(在连接到远程资源的计算机上运行的守护程序)、调度程序(这里是指Jupiter)以及让工程师可以将本地资源连接到One World云的卫星服务。


奥沙利文说:“这些不同的环境往往有点怪异。在OneWorld出现之前,工程师常常获得或收到硬件,但代码在硬件上运行不了,或者他们无法获得所需的资源。OneWorld把所有这些细节隐藏了起来。”


Jupiter与OneWorld配合使用,还支持软件工程师提交的其他作业,比如构建新的软件包、安装应用程序依赖项以及运行测试。


该服务试图将工作请求与可用于处理该工作的计算资源相匹配,并跟踪作业流程,确保资源高效分配。


Facebook的开发人员编写了大量测试,确保代码正常运行。Jupiter帮助那些测试尽快加以提交和处理。Facebook的软件工程师阿德里安娜·利博里奥(Adriana Liborio)解释道:“借助Jupiter,我们将调度作业的时间由数百秒缩短到了几毫秒。”


与此同时,AL是一种新的声明式语言,可用于为Facebook的静态代码分析工具Infer(https://code.facebook.com/posts/1648953042007882/open-sourcing-facebook-infer-identify-bugs-before-you-ship/)编写自定义缺陷查找器,这是一种查找源代码中缺陷的工具。


Facebook的软件工程师朱尔斯·维拉德(Jules Villard)说:“Infer可以在不必运行源代码的情况下,了解源代码执行什么样的功能,试图发现不一致的地方。”他表示,静态分析与测试相辅相成,通常会在源代码进入到在Facebook用户的手机上运行的应用程序之前,每个月发现源代码存在的成千上万个问题。


维拉德表示,Infer试图证明代码没有缺陷,不过并不给出证据。


奥沙利文说:“Infer能够在代码片段中找到工程师不一定能想到的缺陷。这非常有价值,因为它能执行透彻的分析。”


AL代表AST(抽象语法树)语言,它为在不调整或改动Infer源代码的情况下定义错误查找器提供了一种方法。这使得扩展Infer不那么复杂。


比如说,开发人员使用AL,就可以声明下列规则,然后检查代码是否符合要求:“包含单词‘delegate’但不包含单词‘queue’的属性不应被声明为是strong属性。”


奥沙利文表示,这些工具“节省了大量的时间,它们直接提高了Facebook工程师每月向20亿人交付的软件的质量。”


它们还可能对其他企业组织大有用处。


相关阅读:

中高端IT圈人群,欢迎加入!

赏金制:欢迎来爆料!长期有效!