[论文解读] Automated Test-Case Generation for Solidity Smart Contracts: the AGSolT Approach and its Evaluation
该论文提出 AGSolT,一种用于 Solidity 智能合约的自动化测试用例生成框架,结合了随机模糊测试与 DynaMOSA 遗传算法,生成简洁且高覆盖度的测试套件。结果表明,遗传方法在分支覆盖度方面显著优于随机测试,而两者生成的测试套件大小相近,并在三个广泛使用的开源智能合约中发现了关键崩溃问题。
Blockchain and smart contract technology are novel approaches to data and code management that facilitate trusted computing by allowing for development in a distributed and decentralized manner. Testing smart contracts comes with its own set of challenges which have not yet been fully identified and explored. Although existing tools can identify and discover known vulnerabilities and their interactions on the Ethereum blockchain through random search or symbolic execution, these tools generally do not produce test suites suitable for human oracles. In this paper, we present AGSOLT (Automated Generator of Solidity Test Suites). We demonstrate its efficiency by implementing two search algorithms to automatically generate test suites for stand-alone Solidity smart contracts, taking into account some of the blockchain-specific challenges. To test AGSOLT, we compared a random search algorithm and a genetic algorithm on a set of 36 real-world smart contracts. We found that AGSOLT is capable of achieving high branch coverage with both approaches and even discovered some errors in some of the most popular Solidity smart contracts on Github.
研究动机与目标
- 为解决 Solidity 智能合约缺乏有效且人类可读的测试套件的问题,该问题阻碍了其在工业界的采用。
- 开发一种工具,以实现高分支覆盖度的同时最小化测试套件大小,从而适用于单元测试和回归测试的实际应用。
- 评估并比较随机搜索(模糊测试)与引导搜索(遗传算法)在自动化智能合约测试生成中的有效性。
- 识别并验证测试用例生成中的区块链特有挑战,例如交易依赖、区块链状态和交互行为等特性。
- 通过在流行开源智能合约中发现关键运行时崩溃,展示自动化测试生成的实际价值。
提出的方法
- AGSolT 实现为一个框架,通过两种基于搜索的策略——随机模糊测试与 DynaMOSA 遗传算法——为独立的 Solidity 智能合约生成测试用例。
- 该工具利用开发人员提供的预言机(oracles)验证测试结果,确保生成测试用例的正确性。
- 分支覆盖度作为评估测试套件有效性的主要指标,覆盖度通过合约控制流的静态分析进行测量。
- 该框架与 Ganache 集成,可在本地区块链环境中执行测试用例,模拟真实执行环境。
- 两种搜索算法——模糊测试与 DynaMOSA——在相同硬件和配置下实现,以确保公平比较。
- 通过测量测试套件大小与执行时间,评估其效率与在真实场景中的实用性。
实验结果
研究问题
- RQ1自动化测试用例生成工具能否为 Solidity 智能合约生成简洁、高覆盖度的测试套件,使其适合人工审查与使用?
- RQ2在智能合约测试中,随机搜索(模糊测试)与引导搜索(遗传算法)在分支覆盖度、测试套件大小与执行时间方面如何比较?
- RQ3现实世界中的智能合约在多大程度上表现出影响测试用例生成的区块链特有挑战?
- RQ4AGSolT 能否在广泛使用的开源智能合约中发现此前未知的关键性错误?
- RQ5与随机模糊测试相比,DynaMOSA 遗传算法在实现智能合约测试高分支覆盖度方面有多高效?
主要发现
- DynaMOSA 遗传算法在分支覆盖度方面显著优于模糊测试工具,且通过 Wilcoxon 检验确认了该差异具有统计显著性。
- 尽管存在额外的计算开销,遗传算法生成的测试套件与模糊测试相比并未显著更大,表明其在测试套件压缩方面具有高效性。
- 模糊测试并不比遗传算法更快,表明尽管 DynaMOSA 算法结构更复杂,但其偏好准则仍能有效减少执行与评估时间。
- 在 GitHub 上最受欢迎的三个智能合约中,测试过程中均发现了关键的运行时崩溃,证明了 AGSolT 的实际漏洞检测能力。
- 研究证实,区块链特有属性(如交易依赖、状态持久性与交互行为)对测试生成构成重大挑战,必须显式加以处理。
- 结果验证了类似 DynaMOSA 的引导搜索方法在实现智能合约单元测试的高测试覆盖度方面,比随机搜索更有效。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。