닫기
Loading..

전자정보연구정보센터 ICT 융합 전문연구정보의 집대성

EIRIC 세미나

국내외의 전자정보 분야 연구자들이 학술정보 또는 연구와 관련된 교육 콘텐츠를 무료로 접할 수 있는 온라인 세미나입니다.

화상회의시스템을 활용하여 소규모 세미나, 워크숍 등 목적에 따라 다양하게 활용할 수 있습니다.

Webinar

홈 홈 > EIRIC 광장 > EIRIC 세미나
컴퓨터 전자/전기 통신 AI
[신진연구자] JEST: N+1-version Differential Testing of Both JavaScript Engines and Specification
  • 일시2021년 10월 12일 (화) 오후 2시
  • 연사박지혁 박사과정KAIST Programming Language Research Group
  • 약력 PDF
개최완료
세미나 개요

최근 들어, 대부분의 개발 과정은 순차적인 소프트웨어 개발 프로세스 모델인 폭포수 모델(waterfall model) 대신 지속적인 통합 및 제공(CI/CD) 방식을 사용하고 있습니다. 이러한 추세는 일반적인 소프트웨어를 넘어, 나날이 변화하는 개발 환경에 맞춰 새로운 프로그래밍 언어의 기능을 원활하게 제공하고자 프로그래밍 언어 개발에도 사용하고 있습니다. 따라서, 이제는 언어의 명세서에만 의존하여 구현체들을 개발하는 것을 넘어 명세서와 구현체들이 상호보완하면서 공진화하고 있습니다. 이러한 환경에서는 명세서와 구현체 양쪽에 오류가 존재할 수 있고, 올바름을 보장하는 것은 더 어려운 문제과 되었습니다.

본 발표에서는 이러한 문제를 해결하기 위한 방안으로 제시한 N+1-version differential testing 기법을 소개하고자 합니다. 기존의 differential testing 기법과는 달리, 이 테스팅 기법은 네 단계로 구성이 되어 있습니다: 1) 주어진 언어의 명세로부터 추출한 syntax와 semantics를 기반으로 다양한 프로그램들을 합성하는 단계, 2) 합성한 프로그램들의 마지막 상태를 검사하기 위한 assertion 구문을 삽입하여 일치성 테스트를 생성하는 단계, 3) 생성한 일치성 테스트들을 서로 다른 구현체들에서 실행하여 명세와 구현체들의 오류를 검출하는 단계, 그리고 4) 통계 기반 정보를 통한 오류의 위치를 찾아내는 단계. 이러한 N+1-version differential testing 기법을 실제 프로그래밍 언어인 JavaScript에 적용하여 JEST라는 도구를 개발하였고, 이는 JavaScript의 명세서인 ECMAScript와 서로 다른 JavaScript 엔진들의 버그를 검출할 수 있습니다. 실제로, 2020년 ECMAScript와 이를 지원하는 네 가지의 서로 다른 JavaScript 엔진들을 이용하여 실험해본 결과, JEST는 97.78%와 87.70%의 syntax 및 semantics를 cover하는 자동으로 1,700개의 일치성 테스트를 성공적으로 자동생성하였습니다. 이를 기반으로 실제로 44개의 엔진의 결함과 27개의 명세의 결함을 검출하여 보고 및 확인을 받았습니다. 이러한 N+1-version differential testing 기법은 앞으로 더욱 방대해지고 빠르게 변화할 프로그래밍 언어의 명세와 구현체들의 간극을 줄이는데 크게 이바지할 수 있을 것입니다. 저희는 현재 이외에도 명세서와 구현체 사이의 간극을 줄이기 위한 연구를 진행하고 있습니다.

동영상

댓글(0)