메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

NLP4Tests: AI-guided Authoring of Software Tests Milos Grigoric

noriwiki


일자: 6월 9일 월요일 오전 11시
장소: KAIST E3-1 4448호
연사: Milos Grigoric

개요

NLP기술을 Software testing에 어떻게 적용할까? 소프트웨어 테스팅은 기존에는 사람의 Intervention이 필요하였다. High quality의 fuzzing을 위해서는 사람이 어느정도 개입을 하여야 하였다.

Learning Deep Semantics for Test Completion

NLP는 Input이 있으면 Test코드를 만들어야 한다. 여기서 Input은 소스 코드, test signature, prior statement와 같은 것이 들어간다. 여기서 Test completion은 execution의 결과에 의해서 큰 도움을 얻을 수 있다. 따라서 Input을 바탕으로 생성된 Test가 잘 작동하는지, Execution결과를 바탕으로 Reranking하는 작업이 필요하다. 생성된 코드가 Compilable하고 Runnable한지 검사한후에, 그 결과에 따라서 Reranking작업을 거쳐서 NLP가 생성한 작업물이 잘 작동하는지를 데이터 생성에 다시 반영한다.

exLong: Generating Exceptional Behavior Tests with Large Language Models

자바나 Python같은 프로그램은 프로그래머가 Exception handler를 정의하도록 한다. 그러나 프로그래머가 Exception handler작성을 까먹는 경우가 많아서, Code가 작동하는 중간에 Exception을 발생시켜서, 코드에 적당한 Exception handler가 정의되어 있는지를 체크해야 한다. exLong은 Relavant non-EBT테스팅 handler와, Stack trace, guard expression을 Input으로 Exception handler를 생성한다. Relevant non-EBT는 Test케이스를 어떤 Source format을 가지고 생성해 낼것인지에 대한 힌트를 제공한다. Stack trace는 Exception에 대한 Semantic 정보를, Guard expression은 Exception을 어떻게 생성해야 하는지에 대한 힌트를 제공한다.