TL;DR

  • vmtest는 Claude가 Windows 데스크톱 앱의 창 조작·키 입력·설치·접근성 테스트를 내 PC 대신 Hyper-V 가상 머신(VM)에서 실행하게 하는 도구임.
  • VM과의 통신에는 네트워크나 창이 필요 없는 PowerShell Direct를 사용하며, 보조 도구가 앱 실행부터 접근성 트리 읽기, 키 입력, 스크린샷, 설치 프로그램 실행까지 담당함.
  • 작업별 체크포인트를 사용해 중단 후에도 앱 상태를 유지하고, 작업 병합 뒤에는 VM을 깨끗한 상태로 되돌릴 수 있음.
  • VM 테스트는 몇 초 안에 결과를 확인하고 앱을 자유롭게 탐색할 수 있지만, 실행 중 2~8GB 메모리를 사용하며 Windows 업데이트 관리가 필요함.
  • Windows 11 Pro·Enterprise·Education, Hyper-V, Claude Code와 Arm64 또는 x64 PC가 필요하며, 창을 여는 테스트는 VM에서, 무창 테스트는 PC에서, 전체 테스트 스위트는 CI에서 실행하는 구성을 제안함.

문제

  • Claude가 Windows 데스크톱 앱을 테스트할 때는 사용 중인 PC에서 앱을 실행함. 창이 뜨고 키보드 포커스가 이동하며, 앱에 보내려던 키 입력이 다른 곳에 전달되고, 스크린 리더가 작업 중 테스트 창을 읽는 문제가 발생함.
  • JAWS나 NVDA를 실행 중이면 혼란이 빠르게 커지며, 테스트가 진행되는 동안 하던 작업을 멈춰야 하는 상황이 생김.

Claude와 함께 만든 것

  • 도구 이름은 vmtest이며, Claude가 PC 대신 Hyper-V 가상 머신 안에서 앱 테스트를 전부 수행하게 함.
  • 데스크톱에는 아무것도 열리지 않고 포커스도 이동하지 않으며, 키 입력이 앱에 전달되지 않아 스크린 리더가 조용한 상태를 유지함.
  • Claude는 네트워크 연결이나 창을 열 필요가 없는 Hyper-V 기능인 PowerShell Direct를 통해 VM과 통신함.
  • VM 안의 작은 보조 도구가 앱 실행, 접근성 트리 읽기, 버튼 누르기, 키 전송, 텍스트 입력, 스크린샷 촬영, 설치 프로그램 실행을 담당함. 각 단계 뒤에는 키보드 포커스가 위치한 곳을 보고함.
  • 저장소와 브랜치로 이루어진 각 작업에는 자체 체크포인트가 있어 Claude가 작업을 멈췄다가 앱을 열린 상태로 이어서 작업할 수 있음. 작업을 병합하면 VM은 깨끗한 상태로 돌아감.
  • Claude는 컨트롤의 역할·이름·상태와 포커스 등 앱의 접근성 정보를 읽고 확인 결과를 보고함.
  • 모든 구성 요소는 GitHub의 vmtest 폴더에 있음.

적용 방식

  • Claude의 앱 테스트 방식으로 세 가지를 비교함.
  • 내 PC에서 테스트: 가장 빠르고 실제 환경에서 앱이 실행되지만, 포커스 이동과 엉뚱한 키 입력, 스크린 리더의 발화가 문제임.
  • GitHub 워크플로(CI)만 사용: PC에는 영향을 주지 않지만 각 확인에 몇 분이 걸리고, 사전에 작성한 테스트만 실행하며, Claude가 실행 중 앱을 탐색할 수 없음.
  • PC의 테스트 VM 사용(vmtest): PC에 영향을 주지 않으면서 몇 초 안에 결과를 확인하고 Claude가 앱을 자유롭게 탐색할 수 있으며, 작업마다 깨끗하고 반복 가능한 시작 상태를 제공함. VM 실행 중 메모리를 사용하고 VM의 Windows를 최신 상태로 유지해야 하는 비용이 있음.
  • 따라서 다음과 같이 조합해 사용함.
  • PC에서는 창을 열지 않는 빌드와 테스트를 실행하며, 작업을 방해하지 않음.
  • 창을 열거나 키를 보내거나 설치·제거를 수행하거나 접근성 확인이 필요한 테스트는 VM에서 실행함.
  • 안전망으로 모든 풀 리퀘스트에서 CI 전체 테스트 스위트를 실행함.
  • 현재 대상은 Windows 데스크톱 앱임.

이미 수행한 실제 테스트

  • QuickMail 이메일 앱을 작업하던 별도의 Claude 세션에 vmtest 사용법을 가르치도록 요청했고, 두 세션은 다른 일을 하는 동안 메시지를 주고받으며 작업함.
  • QuickMail 세션은 VM에 앱을 설치하고 첫 실행 때 포커스가 어디에 놓이는지 확인함. 이어 앱을 제거하고 제거 확인창이 적절한 시점에 나타나며 포커스가 안전한 버튼에 놓이는지 확인함.
  • 자동화된 빌드 확인만으로는 답할 수 없었던 항목임. 진행 중 vmtest 자체의 문제도 보고됐으며, 첫 번째 세션이 이를 수정함.

필요한 항목

  • Windows 11 Pro, Enterprise 또는 Education이 필요함. Home에는 Hyper-V가 없음.
  • 기본적으로 꺼져 있는 Hyper-V 기능을 켜야 함.
  • 작업용 PC와 함께 VM을 실행할 메모리가 필요함. 테스트 VM은 실행 중 약 2~8GB를 사용하고, 저장된 상태에서는 메모리를 사용하지 않음.
  • Claude Code가 필요함.
  • Arm64 또는 x64 PC에서 작동하며, 사용 환경은 Snapdragon Surface임.

설정 방법

1단계: Hyper-V 켜기

  • Hyper-V가 켜져 있지 않다면 활성화해야 하며, 이후 재시작이 필요함. 두 가지 방법 중 하나를 사용할 수 있음.
  • 기존 Windows 기능 대화상자 방식에서는 Windows+R을 누르고 appwiz.cpl을 입력한 뒤 Enter를 누름. ‘Windows 기능 켜기/끄기’로 이동해 Hyper-V를 선택하고 확인을 누름.
  • 관리자 권한 PowerShell에서는 온라인 Windows 선택적 기능인 Microsoft-Hyper-V-All을 활성화함.

2단계: Hyper-V Administrators 그룹에 추가

  • 관리자 권한 PowerShell에서 사용자 계정을 Hyper-V Administrators 그룹에 한 번 추가한 다음 로그아웃하고 다시 로그인함. 이후 이 절차에서는 관리자 권한이 필요하지 않음.

3단계: 테스트 VM 만들기

  • ClaudeTesting이라는 이름의 Windows 11 VM을 만듦.
  • Hyper-V Manage는 같은 저장소의 Hyper-V Manage 폴더에서 Windows ISO를 사용해 Windows 설치 과정을 클릭으로 진행하지 않고 VM을 만듦. 스크립트를 선호한다면 hyperv-rdp-vm도 같은 작업을 수행함.
  • VM을 인터넷에 연결되는 가상 스위치에 연결함.

4단계: VM 준비

  • vmtest prepare를 한 번 실행함. VM이 자동으로 로그인하도록 설정하고 보조 도구를 설치하며, 각 테스트가 시작되는 ‘Clean’ 체크포인트를 저장함.

5단계: Claude에 사용법 안내

  • vmtest 폴더의 스킬 파일인 skill\SKILL.md를 개인의 .claude\skills\vmtest 폴더에 복사하고, 파일 안의 경로를 vmtest를 둔 위치에 맞게 변경함. 그러면 Windows 앱을 열거나 조작하거나 설치하는 작업에서 Claude가 vmtest를 사용함.
  • 선택 사항이 되지 않도록 전역 CLAUDE.md에 Windows 데스크톱 앱 테스트는 이 PC가 아니라 vmtest 스킬을 사용한 테스트 VM에서 수행한다는 한 줄을 추가할 수도 있음.
  • 매번 허가를 묻지 않고 vmtest를 실행하도록 권한 규칙도 추가함. 정확한 규칙은 README에 있음.

비밀번호 참고

  • 테스트 VM 계정에는 임시 기본 비밀번호를 사용함. 테스트 전용 VM에서는 괜찮지만 실제 비밀번호를 재사용해서는 안 됨.

참고 사항

  • 자동화 테스트만으로 확인할 수 있는 범위에는 한계가 있음. vmtest는 앱을 직접 열기 전에 많은 문제를 잡아내지만, 스크린 리더와 다른 보조 기술, 실제 사용자들이 쓰는 다양한 설정과 구성으로 직접 사용해 보는 과정도 여전히 중요함.
  • 시도한 뒤의 경험과 발생한 문제를 공유해 달라고 요청함.