近期美国Facebook公司在@Sacle工程大会上发布了名为Sapfix的人工智能自动化测试和修复BUG的工具,该工具能够代替软件工程师的测试和修复BUG的工作。现已经支持了代码自动扫描,实现自动功能测试,发现BUG后能够自动为工程师推荐最佳修复方案。
目前诸多热门App,如Facebook,Instagram,Messenger等已经导入了该工具,软件行业的全新时代已经来临了。这也意味着,传统软件工程师的一部分工作,要被AI取代了!
Facebook的自动测试三剑客
Facebook的自动化测试解决方案,包含名为infer,Sapienz和SapFix的三剑客。
infer是一个静态代码分析工具,支持的语言有Java/C/Objective-C,可以在代码构建之前检测出资源泄露,初始化异常等问题,将这些严重的BUG扼杀在摇篮之中。
Sapienz是一个基于人工智能的黑盒测试工具,它最大的优势是能够自动生成测试用例,并进行测试和结果检证。这些测试用例是Sapienz通过自主学习工程师的UI操作,并基于页面搜索自动生成而来。
SapFix是一个基于人工智能的BUG修复工具。SapFix针对Sapienz发现的BUG提出修复方案,也可以自动尝试修复方案。
Facebook的自动测试流程
Facebook已不再像传统软件行业一样,在全部开发工程完成之后再进行测试,而是在每天夜间自动构建和测试软件系统,第二天早上测试结果就会自动发送给工程师。
在夜间,首先通过Infer代码静态分析工具和Sapienz黑盒测试工具,会发现代码中存在的BUG,一旦BUG被精确定位后,就会将异常信息发送给SapFix。最后SapFix会根据策略库,不断的对错误进行修复。如果错误不能被修复,则会将该信息汇总发送给工程师人工审核。
SapFix如何修复BUG
SapFix并不具备像工程师一样的思考能力,它是通过对工程师的修复行为进行学习,生成BUG的修复模板。SapFix会在发现BUG之后,不断尝试工程师的修复模板,每次修复之后对系统进行再测试。如果BUG没有被修复,就再尝试下一个修复模板。当所有的修复模板都无法解决问题之时,SapFix会尝试进行基于突变的修复,对出现缺陷的代码进行小范围修改,直至解决问题。
虽然这么做,与工程师比起来还是有些笨拙,但是要知道AI最大的优势就是超强的运算速度,对于企业来说SapFix可不要支付加班费。
目前Facebook已经将AI作为战略性技术,在计算机软硬件生态系统中落地。Facebook称将于芯片制造厂商和开发社区合作推广SapFix自动测试解决方案。
ITgo认为SapFix自动修复BUG是AI发展的重要里程碑,这意味着AI技术会逐渐摆脱雷声大雨点小的处境,一旦有合适的应用场景,AI技术便会迅速的落地生根。
领取专属 10元无门槛券
私享最新 技术干货