论文标题

与Evomaster的白色盒子模糊基于RPC的API:工业案例研究

White-box Fuzzing RPC-based APIs with EvoMaster: An Industrial Case Study

论文作者

Zhang, Man, Arcuri, Andrea, Li, Yonggang, Liu, Yang, Xue, Kaiming

论文摘要

远程过程调用(RPC)是一种通信协议,可支持网络上服务之间的客户服务器交互。 RPC广泛用于构建大型分布式系统(例如微服务)。现代RPC框架包括旧货,GRPC,Sofarpc和Dubbo。由于分布式系统的复杂性以及该系统可以采用的各种RPC框架,测试此类系统非常具有挑战性。据我们所知,没有任何可以实现现代RPC服务自动测试的工具或解决方案。为了填补这一空白,在本文中,我们提出了文献中的第一种方法,以及开源工具,用于通过搜索使用搜索的白色框模糊。为了评估我们的新方法,我们对工业合作伙伴选择的两个人工和四个工业API进行了一项实证研究。该工具已集成到真正的工业管道中,可以应用于基于RPC的API的实际工业开发过程。为了进一步证明其在工业环境中的有效性和应用,我们还报告了采用工具的结果,使我们的工业合作伙伴在其测试过程中自动进行了另外50个工业API。结果表明,我们的新方法能够为基于工业RPC的API(即两个人工和54个工业)实现自动测试案例生成。我们还将简单的灰色盒技术和现有的手动书面测试进行了比较。我们的白色框解决方案在代码覆盖范围内取得了重大改进。关于故障检测,通过与我们在选定的四个工业API中新型方法产生的测试的工业合作伙伴进行仔细的审查,总共确定了41个实际故障,现在已经固定了。目前正在调查另外8,377个检测到的断层。

Remote Procedure Call (RPC) is a communication protocol to support client-server interactions among services over a network. RPC is widely applied in industry for building large-scale distributed systems, such as Microservices. Modern RPC frameworks include for example Thrift, gRPC, SOFARPC and Dubbo. Testing such systems is very challenging, due to the complexity of distributed systems and various RPC frameworks the system could employ. To the best of our knowledge, there does not exist any tool or solution that could enable automated testing of modern RPC-based services. To fill this gap, in this paper we propose the first approach in the literature, together with an open-source tool, for white-box fuzzing modern RPC-based APIs with search. To assess our novel approach, we conducted an empirical study with two artificial and four industrial APIs selected by our industrial partner. The tool has been integrated into a real industrial pipeline, and could be applied to real industrial development process for fuzzing RPC-based APIs. To further demonstrate its effectiveness and application in industrial settings, we also report results of employing our tool for fuzzing another 50 industrial APIs autonomously conducted by our industrial partner in their testing processes. Results show that our novel approach is capable of enabling automated test case generation for industrial RPC-based APIs (i.e., two artificial and 54 industrial). We also compared with a simple grey-box technique and existing manually written tests. Our white-box solution achieves significant improvements on code coverage. Regarding fault detection, by conducting a careful review with our industrial partner of the tests generated by our novel approach in the selected four industrial APIs, a total of 41 real faults were identified, which have now been fixed. Another 8,377 detected faults are currently under investigation.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源