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는 앱을 직접 열기 전에 많은 문제를 잡아내지만, 스크린 리더와 다른 보조 기술, 실제 사용자들이 쓰는 다양한 설정과 구성으로 직접 사용해 보는 과정도 여전히 중요함.
- 시도한 뒤의 경험과 발생한 문제를 공유해 달라고 요청함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요