프로젝트 소개

NaNofuzz는 TypeScript와 Python을 위한 실험적 자동 테스트 스위트 생성기(ATUG)로, VS Code 내에서 실행되도록 설계되었습니다. 이 도구는 인간의 통찰력, 휴리스틱, 속성 검사를 결합하여 개발자가 테스트 예제를 빠르게 생성하고 개선할 수 있도록 돕습니다. 한 번의 클릭으로 NaNofuzz는 초기 테스트 예제 세트를 제안하며, 이는 정확성을 수동으로 주석 처리하거나 속성 검증 함수를 작성하여 개선할 수 있습니다. 이 도구는 테스트 결과를 단일 화면에서 정리하고 우선순위를 지정하여 무엇이 테스트되었고 무엇이 누락되었을 수 있는지 보여줍니다. 주요 기능으로는 퍼즈, 예제, 속성 기반 테스트 지원; CI를 위해 고정된 테스트를 Jest/Jasmine(TypeScript) 또는 pytest(Python)로 내보내기; 입력을 수정하거나 건너뛰는 입력 변환기; 다양한 유형(숫자, 문자열, 불리언, 리터럴 객체, 튜플, 유니온, 배열, 맵, 세트, 딕셔너리, 정규식 문자열, null, 이진 데이터, Record, Required, Partial과 같은 TypeScript 유틸리티 유형) 지원; 무작위, 변이, 인간, 선택적 AI 생성기를 결합한 복합 입력 생성; 편집기 내 코드 커버리지 시각화; 일시 정지/재개 및 실행 중 입력 추가가 가능한 중단-재개 테스트가 있습니다. 또한 사용 가능한 경우 프로젝트의 TypeScript 컴파일러와 tsconfig를 사용합니다. NaNofuzz는 카네기 멜런 대학의 가속 테스트 연구 프로그램에서 개발했습니다. 프로덕션 용도는 아니지만 기여를 환영합니다. 지원되는 매개변수 유형에는 숫자, 문자열, 불리언, 리터럴 객체, 튜플, 유니온, n차원 배열, 선택적 매개변수가 포함됩니다. 지원되지 않는 기능에는 구조 분해, 열거형, 제네릭, 교차 유형, 유틸리티 유형(Omit 등), bigint, 암시적 any, unknown, 함수 유형, NaN, Infinity, 클래스/객체 메서드, 비 CommonJS 모듈 형식, 상태 저장/불안정/비동기/비결정적 테스트, 부작용 샌드박싱, 모의 객체, 스텁, 사용자 정의 생성기/필터가 있습니다. NaNofuzz 버튼이 나타나지 않으면 함수가 내보내지지 않았거나 입력이 지원되지 않는 유형을 사용할 수 있습니다. 대신 테스트 하네스 함수를 사용할 수 있습니다. 저장소에는 nanofuzz-examples 저장소의 튜토리얼과 예제, 그리고 NaNofuzz(ESEC/FSE'23), TerzoN(FSE'25), TestLoop(TOSEM'26)에 관한 연구 논문 참조가 포함되어 있습니다. 마스코트는 난시(NaNcy)라는 이름의 실크 개미핥기입니다.