'
본문 바로가기
study/Insight

[QA Basics] 테스트 자동화

by meowdule 2025. 9. 8.

 

1. 테스트 자동화 개요

 

테스트 자동화(Test Automation)는
사람이 직접 수행하던 반복적인 테스트를 도구나 스크립트로 자동 실행하는 방식입니다.
목표는 효율성 향상, 일관성 확보, 빠른 피드백입니다.

 

📌 테스트 자동화의 필요성

  1. 반복 작업 효율화
    •   동일한 테스트를 여러 환경/버전에서 반복 실행 가능
    •   QA 리소스를 고부가가치 업무에 집중
  2. 일관성과 정확성
    •   사람에 따른 편차 제거
    •   항상 동일한 절차와 조건으로 실행
  3. 빠른 피드백
    •   코드 변경 직후 자동 테스트로 품질 영향 확인
    •   DevOps, CI/CD 환경에서 핵심

 


📌 테스트 자동화의 필요성

구분 수동 테스트 자동화 테스트
방식 사람이 직접 수행 스크립트·도구가 자동 실행
적합 영역 탐색적·UX 검증, 예외적 케이스 반복적·대량·회귀 테스트
장점 직관적, 유연성 높음 빠름, 일관성, 확장성
단점 인력/시간 소모, 실수 가능 초기 구축 비용·유지보수 부담

 

 

테스트 자동화는 “사람의 반복 업무를 줄이고, 빠르고 일관된 품질 피드백을 제공하는 도구”이다.

 

 

 

 

 

2. 자동화 전략

 

테스트 자동화는 ROI(투자 대비 효과)를 고려해 무엇을 자동화할지 결정해야 합니다.
효율적인 전략 없이는 “자동화 유지보수”가 오히려 더 큰 비용이 될 수 있습니다.


📌 테스트 피라미드 (Test Pyramid)

자동화 전략을 시각적으로 표현한 모델입니다.

  1. 단위(Unit) 테스트
    •   가장 바닥층, 실행 속도 빠르고 유지보수 용이
    •   함수, 메서드 단위 검증
  2. 서비스/통합 테스트
    •   모듈 간 상호작용, API 검증
    •   로직 통합과 데이터 흐름 확인
  3. UI 테스트
    •   사용자 인터페이스 검증
    •   가장 비용이 크고 불안정(Flaky)하기 때문에 최소화 권장

핵심: “단위 테스트 많게, UI 테스트 적게”

 


📌 자동화 대상 선정 기준

  • 반복 실행 빈도가 높은 테스트
    • 예: 로그인, 결제, 검색 플로우
  • 회귀 테스트 필요성이 큰 영역
    • 코드 변경 시 기존 기능이 깨지기 쉬운 부분
  • 데이터 조합이 많아 수동 테스트 비효율적인 영역
    • 예: 입력값 유효성, 브라우저 호환성



📌 자동화 대상 선정 기준

  • 안정성: 스크립트가 환경 변화에 쉽게 깨지지 않아야 함
  • 유지보수 비용: UI 변경이 잦은 경우 자동화보다 수동이 유리할 수도 있음
  • 리소스: 자동화 구축과 관리에 필요한 인력·시간 확보

 

 

효과적인 자동화 전략은 “테스트 피라미드를 기반으로, ROI가 높은 영역을 우선 자동화”하는 것이다.

 

 

 

 

 

3. 자동화 도구 소개

 

자동화 테스트 도구는 테스트 영역(UI, API, 단위, 모바일 등)에 따라 다르게 선택됩니다.
도구마다 장단점이 뚜렷하기 때문에, 목적과 환경에 맞는 선택이 중요합니다.


📌 UI 테스트 도구

  • Selenium
    • 가장 대표적인 웹 UI 자동화 프레임워크
    • 다양한 언어 지원(Java, Python 등), 브라우저 호환성 강점
  • Cypress
    • JS 기반 최신 웹 테스트 프레임워크
    • 설정이 간단하고 빠른 실행 속도, 개발자 친화적
  • Playwright
    • Microsoft에서 개발, 멀티 브라우저·멀티 탭 지원 강력
    • 안정적인 병렬 실행 지원


📌 API 테스트 도구

  • Postman
    • API 요청·응답 검증에 널리 사용
    • GUI 기반으로 쉬운 접근, 스크립트 자동화 지원
  • RestAssured
    • Java 기반 API 자동화 프레임워크
    • 코드 기반으로 테스트 시나리오 유연하게 작성 가능


📌 단위(Unit) 테스트 도구

  • JUnit (Java)
  • PyTest (Python)
  • NUnit (.NET)

코드 레벨에서 가장 빠른 자동화, 테스트 피라미드의 기반



📌 모바일 테스트 도구

  • Appium
    • iOS/Android 앱 자동화
    • WebDriver 기반, 네이티브·하이브리드·웹앱 모두 지원

 

자동화 도구는 “무엇을 테스트할지(UI, API, 단위, 모바일)”에 따라 달라지며,
환경과 팀 역량에 맞는 선택이 가장 중요하다.

 

 

 

 

 

4. CI/CD와 자동화

 

테스트 자동화는

CI/CD(Continuous Integration / Continuous Delivery) 파이프라인과 결합될 때

가장 큰 효과를 발휘합니다.
코드 변경 → 빌드 → 테스트 → 배포의 흐름을 자동화하여, 빠르고 안정적인 릴리스를 지원합니다.


📌 CI/CD 속 테스트 단계

  1. 코드 통합 (Continuous Integration)
    •   개발자가 코드를 저장소(Git)에 커밋 → 자동 빌드 실행
    •   단위 테스트 자동 실행 → 코드 안정성 확인
  2. 빌드 검증 (Build Verification Test, Smoke Test)
    •   빌드가 정상적으로 생성되는지 확인
    •   핵심 기능 몇 개만 빠르게 테스트하여 “배포 가능 상태” 보장
  3. 자동화 회귀 테스트 (Regression Test)
    •   서비스/API/UI 자동화 테스트 실행
    •   기존 기능이 깨지지 않았는지 검증
  4. 배포 전 검증 (Pre-deployment Test)
    •   스테이징 환경에서 통합 테스트 실행
    •   실제 운영 환경과 유사한 조건에서 안정성 확인
  5. 배포 후 모니터링 (Post-deployment Monitoring)
    •   운영 환경에서 로그·알람을 통해 품질 모니터링
    •   오류 발생 시 롤백 자동화


📌 주요 CI/CD 도구와 자동화 연계

  • Jenkins: 가장 널리 쓰이는 오픈소스 CI/CD 도구
  • GitHub Actions: GitHub 기반 자동화 워크플로우
  • GitLab CI/CD: GitLab 저장소와 밀접하게 통합
  • CircleCI, Azure DevOps, AWS CodePipeline 등도 활용 가능

 

CI/CD와 결합된 자동화는 “코드 변경 → 테스트 → 배포” 전 과정을 자동으로 연결해,
빠른 피드백과 안정적인 서비스 제공을 가능하게 한다.

 

 

 

 

 

5. 자동화의 한계와 보완

 

테스트 자동화는 강력한 도구지만, 만능은 아닙니다.
자동화가 가지는 한계를 이해하고, 수동 테스트와 적절히 보완해야 합니다.


📌 자동화의 한계

  1. 초기 구축 비용
    •   스크립트 작성, 프레임워크 세팅, 인프라 구축에 많은 시간·인력이 필요
  2. 유지보수 부담
    •   UI 변경, API 수정이 잦으면 스크립트가 자주 깨짐 (Flaky Test)
    •   장기적으로 관리 비용이 커질 수 있음
  3. 비기능적 영역 한계
    •   UX, 접근성, 직관적 불편함 등은 자동화로 검증 불가
    •   탐색적 테스팅, 사용성 테스트는 여전히 사람의 몫
  4. 완전한 커버리지 불가능
    •   자동화만으로 모든 경로와 조합을 다 검증할 수는 없음


📌 보완 방안

  • 자동화 + 수동 테스트 병행
    • 반복·회귀 테스트는 자동화, UX·탐색적 테스트는 수동으로 보완
  • 안정적인 테스트 데이터/환경 관리
    • Mock 데이터, 가상화된 환경 활용으로 Flaky Test 최소화
  • 테스트 전략 주기적 점검
    • ROI 기반으로 자동화 범위를 재조정
  • CI/CD와 연계
    • 작은 단위에서 자주 실행해 유지보수 부담 분산

 

테스트 자동화는 “효율성의 도구”이지,
모든 QA 활동을 대체하는 만능 열쇠는 아니다.
따라서 자동화와 수동 테스트의 균형 있는 조합이 필수다.

 

 

 

 

 

마무리
다음 게시글에서는 비기능 테스트에 대해 알아보겠습니다.

 

'study > Insight' 카테고리의 다른 글

[QA Basics] QA와 협업  (0) 2025.09.10
[QA Basics] 비기능 테스트  (0) 2025.09.09
[QA Basics] 테스트 설계 기법  (2) 2025.09.07
[QA Basics] 테스트 프로세스  (0) 2025.09.06
[QA Basics] 테스트 원칙  (1) 2025.09.05