中文

使用 EvoMaster 对基于 RPC 的 API 进行白盒模糊测试:一项工业案例研究

软件工程 2023-02-06 v2

摘要

远程过程调用(RPC)是一种支持网络上服务间客户端-服务器交互的通信协议。RPC 在工业界被广泛用于构建大规模分布式系统,例如微服务。现代 RPC 框架包括 Thrift、gRPC、SOFARPC 和 Dubbo 等。由于分布式系统的复杂性以及系统可能采用的各种 RPC 框架,对此类系统的测试非常具有挑战性。据我们所知,目前不存在任何能够实现现代基于 RPC 的服务自动化测试的工具或方案。为填补这一空白,本文提出了文献中首个基于搜索的对现代基于 RPC 的 API 进行白盒模糊测试的方法,以及一个开源工具。为评估我们的新方法,我们与工业合作伙伴一起选取了两个人工 API 和四个工业 API 进行了实证研究。该工具已集成到真实的工业流水线中,可应用于真实的工业开发流程中对基于 RPC 的 API 进行模糊测试。为进一步展示其在工业环境中的有效性与应用,我们还报告了工业合作伙伴在其测试流程中自主使用我们的工具对另外 50 个工业 API 进行模糊测试的结果。结果表明,我们的新方法能够为工业基于 RPC 的 API(即两个人工和 54 个工业)实现自动化测试用例生成。我们还与一种简单的灰盒技术以及现有人工编写的测试进行了比较。我们的白盒方案在代码覆盖率上取得了显著提升。在故障检测方面,通过与工业合作伙伴对我们新方法在选定四个工业 API 中生成的测试进行仔细审查,共识别出 41 个真实故障,目前均已修复。另有 8,377 个检测到的故障正在调查中。

关键词

引用

@article{arxiv.2208.12743,
  title  = {White-box Fuzzing RPC-based APIs with EvoMaster: An Industrial Case Study},
  author = {Man Zhang and Andrea Arcuri and Yonggang Li and Yang Liu and Kaiming Xue},
  journal= {arXiv preprint arXiv:2208.12743},
  year   = {2023}
}