뷰티풀 테스팅 8장 정리 - 테스팅 자동화?

쥐도리·2023년 2월 19일
0
post-thumbnail

8장 대규모 테스트 자동화의 아름다움

성공적인 테스트 자동화 구축 방법



내용 정리

자동화된 테스팅?

테스팅 자동화란?

  • 우리의 테스팅 자동화가 실패하는 이유
    • 자동화된 테스팅 != 테스트 실행의 자동화
      테스트 작성 이후 ~ 결과 분석 및 조회까지 모든 프로세스가 자동화 해야 한다.
  • 자동화 해야할 테스트 결정 방법
    • 얼마나 테스트를 자동화 해야 할지 고민
      → "자동화해야 하는 테스트는 100% 자동화해야 한다."

대규모 자동화란?

규모에 따른 테스트 자동화 범위

  • 규모에 따른 테스트 자동화
    • 규모 ↓ → 소수의 테스터 작업 시, 자주 반복하는 일부 기능만 자동화해도 Ok
    • 규모 ↑ → 수 백개의 장비에서 작업 시, 테스트 작성 ~ 테스트 조회까지 모든 단계가 완전히 자동화 Ⓜ︎
  • 기초적인 테스트 자동화 워크플로우
    • 단계
      1. 자동화 테스트 작성
      2. 테스트 & 테스트 플랫폼 선택
      3. 테스트 실행
      4. 테스트 결과 수집 및 보고
      5. 새로운 버그 보고/ 수정된 버그 확인
    • 문제점
      - 결과 수집 및 버그 확인 과정에서 수동 작업 개입이 많이 발생
      - 테스트 실행 자동화로 테스트 시간 단축 기대,
      but 테스트를 지켜보고 결과를 분석하는데 더 많은 시간 소비

테스트 자동화의 첫 번째 단계

자동화 테스트 코드 작성 시, 유의사항

  • 테스트 자동화의 첫 단계 (훌륭한 테스트 코드)
    • 테스트 코드의 품질 기준 > 제품 코드의 품질 기준
      ∵ 자동화 코드는 테스트 팀원들이 이용하고, 앞으로도 계속 이용하기 때문
      ⇒ 한 번 작성할 때 누구나 이해할 수 있도록 간결하게 작성할 것
  • 테스트 코드 작성 시 유의사항
    1. 테스트 코드는 관리하기 쉬워야 한다
      • 테스트 코드는 작성자 이외 여러 사람들이 읽고 수정할 코드다. 제품 코드보다 더 높은 관리성이 요구된다.
    2. 테스트 코드의 코드 리뷰와 정적 분석 또한 중요하다
      • 여러 프로젝트에 재사용될 수 있기에 서버 경로나 ID & PWD 등 하드코딩을 최대한 피하자
    3. 테스트 코드는 중앙에서 소스 관리와 빌드가 가능해야 한다.
      • 모든 테스트 팀원들이 사용할 코드이므로 통일된 버전으로 돌아가야 한다.
  • 테스트 보조 자원→ 테스트 시 사용되는 데이터 파일, 문서 기타 데이터
  • 테스트 보조 자원 유의사항
    1. 자동화된 테스팅 시스템은 보조 자원에 접근 가능토록 것.
    2. 보조 자원을 임시 저장소에 두지 말 것. (∵ 추후 자동화 테스트 검증 시 필요.)

자동화 테스트와 TC 관리

자동화 테스트 위한 TC 관리법

  • TC(테스트케이스) 관리
    • 대규모 프로젝트의 자동화 일수록 TC 관리 기능 또한 중요도 ↑
  • TC(테스트케이스)의 관리 속성
    1. TC ID : 고유 ID 자동 할당 및 속성에 따른 ID 분류 체계
    2. 테스트 스크립트 : 여러 자동 테스트 표준화
    3. 설정 : 자동화 테스트를 어떠한 환경에서 실행할지는 계획 초기에 설정할 것
    4. 태그 : 테스트에 대한 추가적인 메타 데이터 기재 방법. 태그를 달면 테스트 업무에 따라 실행해야할 TC를 자동적으로 필터할 수 있다.
      (예시 : "성능테스트", "인수테스트", "리그렉션", ...)
  • 체계적인 TC 관리의 효과
    자동화 프로세스의 뒷 단계에서의 시간을 절약해줌.
    ∵ 테스트 실패 시, 빠른 원인 파악 가능

자동화 테스트 환경

자동화 테스트 환경 구축 시, 유의사항

  • 테스트 환경 구축
    • 테스트는 반드시 실행할 장소가 필요하다.
    • 풍족한 장비가 있더라도, 구성 계획은 반드시 필요하다.
    • 테스트 실행에 있어서 순차적 진행보단 병렬적 진행 고려하자
    • 테스트 환경 구성은 장비 활용도가 낮지 않으면서도, 자동화 테스트가 기한 내에 완료할 수 있을 정도의 적절한 수준으로 구축하자.
  • 기타 고려사항
    • 여러 실행 환경에서의 테스트 위한 가상 장비 마련 필요
    • 원격 테스트 진행 가능토록 설계

테스트 분배

자동화 테스트 실행 시, 유의사항

  • 자동화 테스트 & 테스트 환경 구축 완료 → 자동화 테스트 배치 및 실행
  • 테스트 완료 시간 파악
    • 현재 테스트 환경에서 돌릴 수 있는 지 없는 지 파악
    • 자동화 테스트의 테스트가 언제 끝날지 완료 시간 파악 하는 것이 중요
      → 예상 완료 시간을 너무 길게 잡으면? 테스트 장비 효율성 ↓
      → 예상 완료 시간을 너무 짧게 잡으면? 테스트 도중 중단

실패 원인 분석 자동화

테스트 결과 분석 자동화가 필요한 이유 자동화 매커니즘

  • 자동화 테스트 실패 원인 분류
    1. 테스트가 이상 행동을 보인다 ? → 제품 버그 or 테스트 오류
    2. 관련된 여러 테스트 실패 ? → 제품 버그 가능성 ↑
    3. 여러 장비에서 하나의 테스트 실패 ? → 제품 버그 가능성 ↑ or 테스트 오류
  • 자동화 테스트 결과 분석이 어려운 이유
    → 자동화로 테스트 결과 분량이 폭발적 증가. 이에 따라 실패한 테스트 분석에 많은 시간 소요
    → 다른 테스트 진행 어려움 & 제품 품질 저하
    ⇒ 자동화된 테스트의 실패 원인 조사도 자동화 진행 필요
  • 실패 분석 자동화 매커니즘
    1. 테스트가 실패했는가?
    2. 이전에 알려진 실패인가? Y: 기존 버그 리포트 작성, N: 새로운 버그 리포트 생성 및 분석 필요 알림

마무리

요약

  • 테스팅 자동화의 과정
    1. 제품 품질과 비슷한 정도의 표준적인 테스트 작성
    2. 자동화 테스트 위한 환경 구축 & 테스트 장비 분배
    3. 자동화 테스트 결과 데이터 수집
    4. 결과 데이터에 따른 테스트 실패 원인 분류 및 버그 리포트 자동화 연구
    5. 이후, 테스터의 시간과 에너지를 많이 소비하는 일 탐색


정리

기억에 남는 문장

  • 테스터가 테스트 작성을 마치는 순간부터 테스트 결과 분석, 조회 단계까지 모든 프로세스가 자동화돼야 한다.
  • 테스팅 실행만 자동화 할 경우, 자동화 테스트를 지켜보고 결과를 분석하는데 시간을 너무 많이 소비해 결국 테스팅에 사용할 시간이 부족하게 된다.
  • 자동화 테스트를 배치하고 실행하는 단계는 전체 시스템 중 가장 중요하다.
  • 테스트 결과는 최근의 정보를 정확하고 쉽게 보여줄 수 있어야 한다.

배운 것

  • 테스팅 자동화는 테스트 실행뿐만 아니라 테스팅 프로세스 전체를 자동화해야 한다.
  • 자동화 테스트 코드는 제품 코드보다 더 많은 사람들이 볼 것이기 때문에 더욱 간결하게 작성해야한다.
  • 자동화 시스템의 작업 시간을 파악하고 있어야, 효율적으로 자동화 시스템을 돌릴 수 있다.
  • 테스트 실패 & 결과 분석에 대한 자동화도 이뤄져야만 한다.

참고도서

Adam Goucher, ⌜뷰티풀 테스팅⌟, 지앤선, 2011
profile
해보고, 정리하고, 돌아보자

0개의 댓글