Skip to main content
QUICK REVIEW

[논문 리뷰] ADF-GA: Data Flow Criterion Based Test Case Generation for Ethereum Smart Contracts

Pengcheng Zhang, Jianan Yu|arXiv (Cornell University)|2020. 02. 29.
Software Testing and Debugging Techniques참고 문헌 25인용 수 5
한 줄 요약

이 논문은 이더리움 스마트 컨트랙트를 대상으로 한 전부의 사용 기준을 사용하여 전체 데이터 플로우 커버리지에 초점을 맞춘 유전 알고리즘 기반 테스트 케이스 생성 방법인 ADF-GA를 제안한다. 제어 흐름 그래프를 구축하고, 정의-사용 쌍(dup)을 식별하기 위해 데이터 플로우 분석을 수행하며, require 문과 관련된 dup의 커버리지를 우선시하기 위해 가중치가 부여된 적합도 함수를 적용함으로써, ADF-GA는 기준 방법보다 적은 반복 횟수로 더 높은 테스트 커버리지를 달성한다.

ABSTRACT

Testing is an important technique to improve the quality of Ethereum smart contract programs. However, current work on testing smart contract only focus on static problems of smart contract programs. A data flow oriented test case generation approach for dynamic testing of smart contract programs is still missing. To address this problem, this paper proposes a novel test case generation approach, called ADF-GA (All-uses Data Flow criterion based test case generation using Genetic Algorithm), for Solidity based Ethereum smart contract programs. ADF-GA aims to efficiently generate a valid set of test cases via three stages. First, the corresponding program control flow graph is constructed from the source codes. Second, the generated control flow graph is analyzed to obtain the variable information in the Solidity programs, locate the require statements, and also get the definition-use pairs to be tested. Finally, a genetic algorithm is used to generate test cases, in which an improved fitness function is proposed to calculate the definition-use pairs coverage of each test case with program instrumentation. Experimental studies are performed on several representative Solidity programs. The results show that ADF-GA can effectively generate test cases, achieve better coverage, and reduce the number of iterations in genetic algorithm.

연구 동기 및 목표

  • 이더리움 스마트 컨트랙트에 대한 동적이고 데이터 플로우 중심의 테스팅 기법이 부족한 문제를 해결한다.
  • 기존 방법들이 정적 분석이나 알려진 취약점 패tern에만 집중하는 한계를 극복한다.
  • 특히 require 문을 포함한 솔리디티의 고유한 기능에 맞춰진 테스트 케이스 생성 방법을 개발한다.
  • 특히 require 관련 논리에 초점을 맞춰 정의-사용 쌍(dup) 커버리지를 강조함으로써 테스트 커버리지를 향상시킨다.
  • 수렴 시간을 단축하고 테스트 케이스 생성의 효율성을 향상시키기 위해 유전 알고리즘 프로세스를 최적화한다.

제안 방법

  • 스마트 컨트랙트 소스 코드에서 제어 흐름 그래프(CFG)를 생성하여 중간 표현으로 사용한다.
  • 변수의 정의, 사용 및 모든 정의-사용 쌍(dup)을 추출하기 위해 데이터 플로우 분석을 수행하며, 이는 require 문을 포함한 경우도 포함한다.
  • 유전 알고리즘 프레임워크 내에서 테스트 케이스 입력을 표현하기 위한 염색체 인코딩 체계를 설계한다.
  • 선택적 진화를 이끌기 위해 require 관련 dup에 대해 높은 가중치를 할당하는 맞춤형 적합도 함수를 구현한다.
  • 선택, 교배, 변이와 같은 유전 연산을 사용하여 dup 커버리지를 최대화하도록 테스트 케이스를 진화시킨다.
  • 테스트 실행 중 실제 dup 커버리지를 측정하고, 이를 적합도 함수에 피드백하기 위해 스마트 컨트랙트 코드를 인스트루멘테이션한다.

실험 결과

연구 질문

  • RQ1데이터 플로우 기준 기반의 테스트 케이스 생성 방법은 이더리움 스마트 컨트랙트 테스팅에서 커버리지를 효과적으로 향상시킬 수 있는가?
  • RQ2require 문과 관련된 dup에 대한 가중치가 부여된 적합도 함수의 포함 여부가 테스트 케이스 생성의 효율성과 커버리지에 어떤 영향을 미치는가?
  • RQ3ADF-GA는 전통적인 유전 알고리즘 기반 접근법(GA-C# 등)에 비해 커버리지 및 수렴 속도 측면에서 어느 정도 뛰어나게 성능을 발휘하는가?
  • RQ4적합도 함수에서 최적의 커버리지와 성능을 얻기 위해 설정하는 파라미터 설정(예: ε)은 무엇인가?
  • RQ5ADF-GA는 랜덤 테스팅 또는 기준 GA 접근법에 비해 더 높은 정의-사용 쌍 커버리지를 달성할 수 있는가?

주요 결과

  • ADF-GA는 평가된 11개의 스마트 컨트랙트 전반에서 랜덤 테스팅(RT)과 GA-C#에 비해 정상 dup(N_dup) 및 require 관련 dup(R_dup) 커버리지가 가장 높았다.
  • ε를 0.45로 설정했을 때 ADF-GA는 최적의 커버리지를 달성했으며, R_dup와 N_dup 커버리지 최대화에 각각 11.36회와 7.45회 반복이 필요했다.
  • ADF-GA는 GA-C#이 첫 번째 최대 적합도 값을 달성하는 데 11.36회 반복이 필요한 데 비해, 단 7.45회 반복으로 GA-C#이 달성한 최고 커버리지를 재현했다.
  • 대부분의 컨트랙트에서 ADF-GA의 총 반복 횟수는 GA-C#보다 略적으로 적었으며, 이는 수렴 효율성이 향상되었음을 시사한다.
  • ADF-GA의 개선된 적합도 함수는 require 관련 dup를 효과적으로 우선순위에 두어, 고영향도 테스트 케이스의 구분과 선택을 향상시켰다.
  • 모든 테스트 컨트랙트에서 ADF-GA는 GA-C#보다 동일하거나 더 높은 N_dup 및 R_dup 커버리지를 달성했으며, 이는 가중치가 부여된 적합도 함수의 효과를 입증한다.

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

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

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

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