📘 테스트 자동화
📌 개요
테스트 자동화는 반복적이고 시간 소모적인 테스트 활동을 자동화 도구와 스크립트를 이용해 수행하는 방법이다.
- 목표: 테스트 효율성 향상, 결함 조기 발견, 회귀 테스트 간소화
- 장점: 반복 테스트 신속 수행, 사람 오류 최소화, 품질 확보 용이
📌 도구 분류
| 분류 |
설명 |
예시 |
| 테스트 설계 도구 |
테스트 케이스 작성 및 관리 |
명세 기반, 구조 기반, 레거시 시스템 기반 |
| 테스트 환경 구축 도구 |
테스트 환경 자동화 |
IaC(Infrastructure as Code), VM/컨테이너 관리 |
| 테스트 실행 도구 |
테스트 스크립트 실행 |
선형, 모듈 기반, 데이터 주도, 키워드 주도 프레임워크 |
| 테스트 프레임워크 |
테스트 표준화, 재사용성 제공 |
JUnit, Selenium WebDriver, TestNG |
| 이슈 관리 도구 |
결함 및 변경 사항 추적 |
Jira, Redmine, Bugzilla |
📌 로그인 검증을 위한 테스트 단계 (예시)
- 요구사항 분석 → 로그인 기능 명세 확인
- 테스트 케이스 설계 → 정상/비정상 입력 시나리오 작성
- 테스트 스크립트 작성 → JUnit/WebDriver 코드로 변환
- 테스트 환경 구축 → 브라우저, DB, 서버 세팅
- 테스트 실행 → 자동화 스크립트 수행
- 결함 보고 → 발견 결함 기록 및 추적
📌 JUnit/WebDriver 코드 변환
- 테스트 케이스를 자동화 스크립트로 구현
- 단위 테스트와 UI 테스트 통합 가능
- 반복 테스트 및 회귀 테스트에 활용
📌 테스트 자동화 분야 및 도구
- 단위/통합/회귀 테스트 자동화
- 성능/부하 테스트 자동화
- UI/웹 테스트 자동화
- 테스트 데이터 생성 및 관리 자동화
📌 ISO/IEC/IEEE 29119 동적 테스트 프로세스
- 테스트 설계 및 구현
- 테스트 환경 구축 및 관리
- 테스트 실행
- 결함 보고 및 추적
자동화 도구는 위 프로세스 각 단계에서 반복적 작업을 지원
📌 테스트 설계 도구
- 개념: 테스트 케이스 작성 및 관리 자동화
- 종류:
- 명세 기반: 요구사항 기반 테스트 설계
- 구조 기반: 코드 구조 기반 테스트 설계
- 레거시 시스템 기반: 기존 시스템 분석 후 테스트 설계
📌 테스트 환경 구축 도구
- 개념: 테스트 수행 환경 구성 및 관리 자동화
- IaC(Infrastructure as Code): 코드로 서버, DB, 네트워크 환경 구성
📌 테스트 실행 도구
| 프레임워크 |
특징 |
| 선형 프레임워크 |
순차적 테스트 수행, 단순 구조 |
| 모듈 기반 프레임워크 |
모듈 단위 재사용 가능, 유지보수 용이 |
| 데이터 주도 프레임워크 |
입력 데이터 변경만으로 테스트 재사용 가능 |
| 키워드 주도 프레임워크 |
테스트 동작을 키워드로 정의, 비기술자 참여 용이 |
📌 테스트 프레임워크
- 테스트 스크립트 표준화 및 재사용 지원
- 자동화 테스트 실행, 보고서 생성, 오류 로그 기록
- 대표 도구: JUnit, Selenium WebDriver, TestNG
📌 이슈 관리 도구
- 개념: 결함 및 변경 요구사항 추적, 상태 관리
- 활용 영역: 신규 고객 요구사항, 기능 개선, 버그 수정, 문서 작업, 시스템 설치 작업
- 결함 생명주기 예:
- 신규(New) → 진행(In Progress) → 해결(Fixed) → 완료(Closed)
- 대표 도구: Jira, Redmine, Bugzilla
📌 테스트 도구 선정
- 테스트 피라미드 기반 접근: 단위 테스트 → 서비스/API → UI 테스트 우선순위
- 요구사항 정의: 자동화 필요 영역 식별
- 도구 조사 및 평가: 기능, 호환성, 유지보수성 검토
- 파일럿 프로젝트 수행 → 도구 적합성 확인
- 도구 선정 및 도입 → 전체 테스트 환경 적용
🧠 핵심 정리
- 테스트 자동화 = 반복적 테스트 수행 → 효율성과 품질 확보
- 설계/환경/실행/결함 보고 단계 모두 자동화 가능
- 테스트 프레임워크 + 이슈 관리 도구 연계 → 체계적 QA
- 도구 선정은 테스트 피라미드, 요구사항, 파일럿 프로젝트 기반으로 결정
자동화는 테스트 대상과 목적, 반복성에 따라 전략적으로 적용해야 하며,
단순 코드 실행이 아닌 설계, 환경 구축, 실행, 결함 관리까지 포함하는 전체 프로세스를 고려해야 한다.