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)|2021. 02. 17.
Advanced Malware Detection Techniques인용 수 7
한 줄 요약

이 논문은 랜덤 퍼징과 DynaMOSA 유전적 알고리즘을 모두 활용하여 간결하고 고카バレ지 테스트 셋을 생성하는 Solidity 스마트 계약을 위한 자동 테스트 케이스 생성 프레임워크 AGSolT를 제시한다. 유전적 접근 방식이 랜덤 테스팅보다 유의미하게 높은 분기 카バレ지 성능을 보이며, 두 방법 모두 유사한 크기의 테스트 셋을 생성하고, 널리 사용되는 세 개의 오픈소스 스마트 계약에서 핵심적인 크래시를 발견함을 입증한다.

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.

연구 동기 및 목표

  • 스마트 계약의 효과적이고 인간이 읽을 수 있는 테스트 셋이 부족한 문제를 해결하기 위해.
  • 실제 유닛 테스트 및 리gression 테스트에 활용 가능한 실용적인 환경에서 테스트 셋 크기를 최소화하면서도 고분기 카バレ지를 달성하는 도구를 개발하기 위해.
  • 자동 스마트 계약 테스트 생성에서 랜덤 검색(fuzzing)과 유도 검색(유전적 알고리즘)의 효과를 평가하고 비교하기 위해.
  • 거래, 블록체인, 상호작용적 성질과 같은 블록체인 특화 문제들이 테스트 케이스 생성에 미치는 영향을 식별하고 검증하기 위해.
  • 실제 산업 응용 가치를 입증하기 위해, 널리 사용되는 오픈소스 스마트 계약에서 이전에 알려지지 않은 핵심 런타임 크래시를 드러내기 위해.

제안 방법

  • AGSolT는 랜덤 퍼징과 DynaMOSA 유전적 알고리즘이라는 두 가지 검색 기반 전략을 사용하여 독립형 Solidity 스마트 계약의 테스트 케이스를 생성하는 프레임워크로 구현되었다.
  • 도구는 개발자가 제공한 오라클을 활용하여 테스트 결과를 검증하고 생성된 테스트 케이스의 정확성을 보장한다.
  • 테스트 셋의 효과성을 평가하기 위해 분기 카バレ지가 주요 메트릭으로 사용되었으며, 카バレ지 수준은 계약의 제어 흐름에 대한 정적 분석을 통해 측정되었다.
  • 테스트 케이스는 로컬 블록체인 환경에서 실행하기 위해 간처인과 통합되어 실제 실행 조건을 시뮬레이션한다.
  • 랜덤 퍼징과 DynaMOSA를 동일한 하드웨어 및 설정으로 구현하여 공정한 비교를 확보하였다.
  • 효율성과 실용성을 평가하기 위해 테스트 셋 크기와 실행 시간을 측정하였다.

실험 결과

연구 질문

  • RQ1자동화된 테스트 케이스 생성 도구는 인간이 검토하고 사용할 수 있는 간결하고 고카バレ지 테스트 셋을 Solidity 스마트 계약에 대해 생성할 수 있는가?
  • RQ2스마트 계약 테스트에서 랜덤 검색(fuzzing)과 유도 검색(유전적 알고리즘)은 분기 카バレ지, 테스트 셋 크기, 실행 시간 측면에서 어떻게 비교되는가?
  • RQ3실제 스마트 계약은 테스트 케이스 생성에 영향을 주는 블록체인 특화 문제를 어느 정도 보여주는가?
  • RQ4AGSolT는 널리 사용되는 오픈소스 스마트 계약에서 이전에 알려지지 않은 핵심 버그를 드러낼 수 있는가?
  • RQ5DynaMOSA 유전적 알고리즘은 랜덤 퍼징에 비해 스마트 계약 테스트에서 고분기 카バレ지를 달성하는 데 얼마나 효과적인가?

주요 결과

  • DynaMOSA 유전적 알고리즘이 랜덤 퍼징보다 분기 카バレ지 달성에서 유의미하게 뛰어나며, Wilcoxon 검정을 통한 통계적 유의성으로 확인되었다.
  • 추가적인 계산 오버헤드가 있음에도 불구하고, 유전적 알고리즘이 랜덤 퍼징과 유사한 크기의 테스트 셋을 생성하여 테스트 셋 압축의 효율성을 보였다.
  • 랜덤 퍼징은 유전적 알고리즘보다 빠르지 않았으며, 이는 DynaMOSA의 선호 기준이 복잡성에도 불구하고 실행 및 평가 시간을 줄임을 시사한다.
  • GitHub에서 가장 인기 있는 세 개의 스마트 계약이 테스트 도중 핵심적인 런타임 크래시를 보였으며, 이는 AGSolT의 실제 세계 버그 탐지 능력을 입증한다.
  • 연구 결과는 거래 의존성, 상태 지속성, 상호작용적 행동과 같은 블록체인 특화 성질이 테스트 생성에 심각한 도전 과제를 안기며, 이를 명시적으로 다뤄야 함을 확인한다.
  • 결과적으로, 랜덤 검색보다 유도 검색 기반 접근 방식인 DynaMOSA가 스마트 계약 유닛 테스트에서 고카バレ지를 달성하는 데 더 효과적임을 검증한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.