Skip to main content
QUICK REVIEW

[論文レビュー] Automated Test-Case Generation for Solidity Smart Contracts: the AGSolT Approach and its Evaluation

Stefan Driessen, Dario Di Nucci|arXiv (Cornell University)|Feb 17, 2021
Advanced Malware Detection Techniques被引用数 7
ひとこと要約

本稿では、ランダムなファジングとDynaMOSA遺伝的アルゴリズムの両方を用いて、簡潔で高カバレッジのテスト・スイートを生成する、Solidityスマートコントラクト向けの自動テストケース生成フレームワークであるAGSolTを提示する。実験の結果、遺伝的アプローチはランダムテストに比べて顕著に高いブランチカバレッジを達成したが、両手法とも同程度のサイズのテストスイートを生成した。さらに、広く使われている3つのオープンソーススマートコントラクトに深刻なクラッシュを特定した。

ABSTRACT

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.

研究の動機と目的

  • スマートコントラクトの分野における実用的導入を妨げる、効果的で人間が読みやすいテストスイートの不足に対処すること。
  • 実際のユニットテストおよびレグレッションテストにおける利用を念頭に、テストスイートのサイズを最小限に抑えながら高いブランチカバレッジを達成するツールを開発すること。
  • 自動スマートコントラクトテスト生成におけるランダム探索(ファジング)とガイド付き探索(遺伝的アルゴリズム)の有効性を評価・比較すること。
  • 取引、ブロックチェーン、インタラクティブな性質といった、ブロックチェーン固有の課題がテストケース生成に与える影響を特定すること。
  • 人気のあるオープンソーススマートコントラクトにおいて、以前未知の深刻なランタイムクラッシュを発見することで、自動テスト生成の実世界での価値を示すこと。

提案手法

  • AGSolTは、ランダムファジングとDynaMOSA遺伝的アルゴリズムという2つの探索ベースの戦略を用いて、スタンドアロンのSolidityスマートコントラクト向けにテストケースを生成するフレームワークとして実装された。
  • 開発者が提供するオラクルを活用してテストの結果を検証し、生成されたテストケースの正しさを保証する。
  • テストスイートの有効性を評価する主な指標としてブランチカバレッジを用い、カバレッジはコントラクトの制御フローの静的解析によって測定された。
  • フレームワークはGanacheと統合され、ローカルブロックチェーン環境でテストケースを実行し、実際の実行条件を模擬した。
  • ファジングとDynaMOSAという2つの探索アルゴリズムを、同一のハードウェアおよび設定で実装し、公平な比較を実現した。
  • 効率性と実世界での実用性を評価するため、テストスイートのサイズと実行時間を測定した。

実験結果

リサーチクエスチョン

  • RQ1自動テストケース生成ツールは、人間がレビュー可能で実用的な使用が可能な、簡潔で高カバレッジのテストスイートを生成できるか?
  • RQ2ランダム探索(ファジング)とガイド付き探索(遺伝的アルゴリズム)は、スマートコントラクトテストにおけるブランチカバレッジ、テストスイートのサイズ、実行時間の観点で、どのように比較されるか?
  • RQ3実世界のスマートコントラクトは、テストケース生成に影響を与えるブロックチェーン固有の課題をどの程度示しているか?
  • RQ4AGSolTは、広く使われているオープンソーススマートコントラクトにおいて、以前未知の深刻なバグを発見できるか?
  • RQ5DynaMOSA遺伝的アルゴリズムは、ランダムファジングに比べて、スマートコントラクトテストで高いブランチカバレッジを達成する上でどの程度効果的か?

主な発見

  • DynaMOSA遺伝的アルゴリズムはファジングよりも顕著に高いブランチカバレッジを達成した。ウィルコクソン検定により、統計的に有意な差が確認された。
  • 追加の計算オーバーヘッドがあるにもかかわらず、遺伝的アルゴリズムはファイジングと比べて有意に大きなテストスイートを生成しなかった。これは、テストスイートの圧縮において効率的であることを示している。
  • ファイジングは遺伝的アルゴリズムより速くはなく、DynaMOSAの選好基準が複雑さにもかかわらず、実行および評価時間を短縮していることが示唆された。
  • GitHubで最も人気のある3つのスマートコントラクトは、テスト中に深刻なランタイムクラッシュを示した。これは、AGSolTの実世界でのバグ検出能力を裏付けている。
  • ブロックチェーン固有の性質—取引の依存関係、状態の永続性、インタラクティブな挙動—がテスト生成に大きな課題をもたらし、明示的に対処する必要があることが確認された。
  • ガイド付き探索アプローチ、特にDynaMOSAが、スマートコントラクトユニットテストにおける高カバレッジを達成する上で、ランダム探索よりもはるかに効果的であることが検証された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。