一句话:提出 NaturalFuzz,利用细粒度数据溯源混合真实数据,为大数据分析生成既自然又高覆盖的合成测试输入。
大数据分析期望接收真实数据,传统模糊测试生成的合成输入虽提升覆盖率却缺乏真实性,不利于调试。论文提出 NaturalFuzz,从两方面实现自然合成测试生成:基于现有小规模测试数据增长以提升覆盖率;利用细粒度数据溯源跨行跨列混合片段,生成带语义(如 zipcode、age)的非/半/结构化数据。在商业大数据应用基准上,相较 ML 合成数据生成器 SDV,在输入规模相当时额外提升 19.9% 覆盖率、多检测 1.9 倍故障;数据比 BigFuzz 和 Jazzer 更真实。它是首个仅生成自然输入、可同时模糊多输入源并发现更深语义故障的方法。
Fuzzing applies input mutations iteratively with the only goal of finding more bugs, resulting in synthetic tests that tend to lack realism. Big data analytics are expected to ingest real-world data as input. Therefore, when synthetic test data are not easily comprehensible, they are less likely to facilitate the downstream task of fixing errors. Our position is that fuzzing in this domain must achieve both high naturalness and high code coverage. We propose a new natural synthetic test generation tool for big data analytics, called NaturalFuzz. It generates both unstructured, semi-structured, and structured data with corresponding semantics such as ‘zipcode’ and ‘age.’ The key insights behind NaturalFuzz are two-fold. First, though existing test data may be small and lack coverage, we can grow this data to increase code coverage. Second, we can strategically mix constituent parts across different rows and columns to construct new realistic synthetic data by leveraging fine-grained data provenance. On commercial big data application benchmarks, NaturalFuzz achieves an additional 19.9% coverage and detects 1.9× more faults than a machine learning-based synthetic data generator (SDV) when generating comparably sized inputs. This is because an ML-based synthetic data generator does not consider which code branches are exercised by which input rows from which tables, while NaturalFuzz is able to select input rows that have a high potential to increase code coverage and mutate the selected data towards unseen, new program behavior. NaturalFuzz's test data is more realistic than the test data generated by two baseline fuzzers (BigFuzz and Jazzer), while increasing code coverage and fault detection potential. NaturalFuzz is the first fuzzing methodology with three benefits: (1) exclusively generate natural inputs, (2) fuzz multiple input sources simultaneously, and (3) find deeper semantics faults.