While fuzzing effectively catches crashes, its shallow oracles often miss semantic drifts and optimization-related errors in data-intensive scalable computing (DISC) frameworks. Property-based testing (PBT) addresses this limitation by checking general semantic invariants across diverse workloads and inputs, rather than relying on specific expected outputs. However, systematically operationalizing PBT for DISC systems remains difficult because it requires both reusable property definitions and effective instantiation into valid workloads and data. We present DiscPBT, a property-based testing engine for Apache Spark. DiscPBT introduces eight reusable meta-properties for DISC semantic testing, spanning equivalence rewriting, data decomposition, computation decomposition, and operator-local semantic relations. To operationalize these meta-properties, DiscPBT provides reusable generators for synthesizing valid workload skeletons and input data, together with an instantiation framework that realizes each meta-property in schema-compatible contexts through compatible operators, expressions, and UDFs. Our evaluation on PySpark shows that DiscPBT achieves 1.2$\times$ higher branch coverage and 1153$\times$ greater plan diversity than CometFuzz. Across 66 concrete properties, DiscPBT reveals cross-version semantic drift as well as subtle corner-case pitfalls involving NaN and empty inputs, that are not captured by crash-based fuzzing alone. These results demonstrate the value of systematic PBT for uncovering semantic issues in DISC frameworks.
翻译:尽管模糊测试能有效捕获程序崩溃,但其浅层判断标准常忽略数据密集型可扩展计算(DISC)框架中的语义漂移及优化相关错误。属性化测试通过检验跨多样化工作负载与输入的通用语义不变性,而非依赖特定预期输出,弥补了这一局限。然而,为DISC系统系统化地实践属性化测试仍面临挑战,因为这既需要可复用的属性定义,又需将其有效实例化为合法的工作负载与数据。本文提出DiscPBT——针对Apache Spark的属性化测试引擎。DiscPBT引入八种面向DISC语义测试的可复用元属性,涵盖等价重写、数据分解、计算分解及算子局部语义关系。为实践这些元属性,DiscPBT提供可复用的生成器用于合成合法的工作骨架与输入数据,并构建实例化框架,通过兼容的算子、表达式及UDF将各元属性在模式兼容的上下文中实现。我们在PySpark上的评估表明,DiscPBT比CometFuzz实现1.2倍的分支覆盖率和1153倍的查询计划多样性。在66个具体属性测试中,DiscPBT揭示了跨版本语义漂移以及涉及NaN和空输入等细粒度边界案例缺陷——这些无法单独基于崩溃的模糊测试捕获。实验结果证明了系统化属性化测试在揭示DISC框架语义问题中的价值。