소프트웨어 테스트를 위한 GenAI 효과적인 프롬프트 만들기
Source: Dev.to
왜 테스트에서 프롬프트 엔지니어링이 중요한가
잘 구조화된 프롬프트는 일반적이고 쓸모 없는 출력과 바로 활용할 수 있는 정확히 목표가 된 테스트 케이스, 자동화 스크립트, 혹은 분석 결과 사이의 차이를 만들 수 있습니다.
효과적인 프롬프트의 6가지 구성 요소
1. 🎭 역할
GenAI 모델이 채택해야 할 페르소나 또는 관점을 정의합니다.
목적: AI가 특정 전문적인 입장을 취하도록 안내
예시
- “테스터 역할을 수행하세요…”
- “테스트 매니저 역할을 가정하세요…”
- “당신은 테스트 자동화 엔지니어입니다…”
이점
- 응답이 의도된 전문성과 일치하도록 보장
- 적절한 어조와 상세 수준을 설정
- 관련 정보를 우선순위에 두는 데 도움
실제 예시
잘못된 예: “테스트 케이스를 생성하세요”
올바른 예: “전자상거래 애플리케이션에서 5년 경력의 시니어 테스터 역할을 수행하고 테스트 케이스를 생성하세요…”

2. 📋 컨텍스트
테스트 시나리오에 대한 배경 정보를 제공합니다.
목적: 작업을 이해하는 데 필요한 배경을 AI에게 제공
예시
- “우리는 전자상거래 웹사이트의 로그인 기능을 테스트하고 있습니다.”
- “해당 애플리케이션은 Android 12에서 실행되는 모바일 뱅킹 앱입니다.”
- “시스템은 사용자 계정을 관리하는 REST API입니다.”
이점
- AI가 범위와 목적을 이해함
- 보다 관련성 높은 결과 생성
- 모호성 감소

팁: 컨텍스트가 구체적일수록 결과도 더 목표 지향적이 됩니다.
3. ⚡ 지시사항
특정 작업을 명확하고 간결하게 설명합니다.
목적: AI가 해야 할 일을 명확히 정의
예시
- “로그인 기능에 대한 테스트 케이스를 생성하세요.”
- “다음 코드를 분석하여 잠재적인 보안 취약점을 찾아주세요.”
- “결제 프로세스를 검증하는 테스트 자동화 스크립트를 작성하세요.”
이점
- 명확한 방향 제공
- 모호성 감소
- 원하는 작업에 집중하도록 보장

더 나은 지시 예시
- ❌ “어떤 테스트를 할 수 있나요?”
- ✅ “사용자 등록 양식에 대해 긍정 및 부정 시나리오를 포함한 10개의 테스트 케이스를 생성하고, 데이터 검증 및 오류 처리에 초점을 맞추세요.”
4. 📥 입력 데이터
작업 수행에 필요한 정보를 제공합니다.
목적: AI에게 필요한 작업 자료 제공
포함할 내용
- 사용자 스토리
- 수용 기준
- 스크린샷
- 코드 스니펫
- 기존 테스트 케이스
- 출력 예시
이점
- 보다 정확하고 컨텍스트를 고려한 결과 가능
- AI가 작업을 수행할 기반 제공
- 기존 데이터로부터 학습 가능

예시
User Story: "As a customer, I want to be able to add items to my shopping cart"
Acceptance Criteria: "The cart should display the correct number of items and the total price"
5. ⚠️ 제약 조건
AI가 따라야 할 제한 사항이나 특별 고려사항을 명시합니다.
목적: AI가 특정 요구 사항을 준수하도록 안내
예시
- “테스트 케이스는 위험도에 따라 우선순위를 매겨야 합니다.”
- “코드 분석은 OWASP Top 10 취약점에 초점을 맞춰야 합니다.”
- “테스트 자동화 스크립트는 Python을 사용한 Selenium WebDriver여야 합니다.”
이점
- 요구 사항 준수 보장
- 중요한 측면에 노력 집중
- 관련 없는 결과 감소
실용적인 제약 예시
- “JUnit 5와 호환”
- “동시 사용자 100명 시뮬레이션”
- “Page Object Model 패턴 사용”

6. 📤 출력 형식
응답의 기대 형식과 구조를 지정합니다.
목적: AI가 결과를 어떻게 제시해야 할지 정의
예시
- “테스트 케이스를 테이블 형식으로 출력하고, 열은 테스트 케이스 ID, 설명, 단계, 기대 결과로 구성합니다.”
- “코드 분석 결과를 JSON 형식으로 제공하세요.”
- “테스트 자동화 스크립트를 Python으로 생성하세요.”
이점
- 출력이 바로 사용 가능하고 이해하기 쉬움
- 다른 도구와의 통합이 용이
- 워크플로 효율성 향상

🎯 완전한 프롬프트 예시
모든 구성 요소가 어떻게 함께 작동하는지 보여줍니다:
Role: Act as a Test Automation Engineer with 3 years of experience.
Context: We are testing the user registration functionality of a new social media application.
Instruction: Generate a Selenium WebDriver test script in Python to automate the user registration process.
Input Data:
- User Story: "As a new user, I want to be able to register for an account with a valid email address and password."
- Acceptance Criteria: "The system should validate the email address format and password strength."
Constraints:
- The script should use the Page Object Model
- Use Selenium WebDriver with Python 3.9
- Generate test data using the Faker library
Output Format:
- Provide the script in a single .py file
- Include comments for each step
- List any required dependencies in a requirements.txt block