CHAPTER 14 더 큰 테스트

Part III 프로세스

CHAPTER 14 더 큰 테스트

테스트들이 자원 낭비가 아닌 값진 자산이 되게끔 하려면 또 다른 난관을 극복해야 된다

더 큰 테스트란?

더 큰 테스트의 특징

  • 느릴 수 있다
  • 밀폐되지 않을 수 있다
  • 비결정적일 수 있다

충실성

테스트가 대상의 실제 행위를 얼마나 충실하게 반영했는냐를 나타내는 속성

단위 테스트가 손 대기 어려운 영역

  • 부적확한 테스트 대역
  • 설정 문제
  • 과부하 시 나타나는 문제
  • 예기치 못한 동작 입력 부작용
  • 창발적 행위와 진공 효과

더 큰 테스트를 만들지 않는 이유

  • 높은 신뢰성
  • 빠른 속도
  • 높은 확장성

더 큰 테스트 @ 구글

  • 더 큰 테스트와 수명
    • 아이스크림콘 테스트 안티패턴
  • 구글 규모에서의 더 큰 테스트
    • 통합 테스트라 하더라도 가능한 작을수록 좋습니다

      큰 테스트의 구조

  1. 테스트 대상 시스템 확보
  2. 필요한 테스트 데이터 준비
  3. 대상 시스템을 이용해 동작수행
  4. 행위 검증
  • 테스트 대상 시스템
    • 밀폐성
    • 충실성
    • 단일 프로세스 SUT
    • 단일 머신 SUT
    • 다중 머신 SUT
    • 공유환경
    • 하이브리드
  • 밀폐된 SUT의 이점
    • 큰 테스트에서 SUT는 테스트 신뢰성을 떨어뜨리고 피드백 시간을 늘리는 주범이 될 수 있습니다
  • 쿤제 경계에서 SUT 크기 줄이기
    • 테스트 하다 보면 웬만해서는 피해야할 고통스러운 경계가 존재함
  • 기록/재생 프록시
    • 비결정성을 없애기 위해 매칭기를 이용하여 요청을 보고 기대하는 응답과 일치시킨다
  • 테스트 데이터
    • 시드 데이터
    • 테스트 트래픽
    • 도메인 데이터
    • 현실적인 기준선
    • 데이터 기록 API
    • 손수 가공한 데이터
    • 복사한 데이터
    • 샘플링한 데이터
  • 검증
    • 수동 검증
    • 단정문
    • A/B 테스트

더 큰 테스트 유형

  • 하나 이상의 바이너리에 대한 기능 테스트
    • SUT : 밀폐된 단일 머신 혹은 격리된 클라우드 배포
    • 데이터 : 수동 생성
    • 검증 방식 : 단정문
  • 브라우저와 기기 테스트
  • 성능, 부하, 스트레스 테스트
    • SUT : 격리된 클라우드에 배포
    • 데이터 : 수동 생성 혹은 프로덕션 환경에서 복사
    • 검증 방식 : 차이 비교
  • 배포 설정 테스트
    • SUT : 밀폐된 단일 머신 혹은 격리된 클라우드 배포
    • 데이터 : 없음
    • 검증 방식 : 단정문(비정상 종료는 하지 않음)
    • 스모크 테스트
  • 탐색적 테스팅
    • 한계
    • 버그 파티
  • A/B 차이(회귀) 테스트
  • 사용자 인수 테스트
  • 프로버와 카나리 분석
  • 재해 복구와 카오스 엔지니어링
  • 사용자 평가

큰 테스트와 개발자 워크플로

  • 큰테스트 작성하기
  • 큰테스트 수행하기
    • 테스트 속도 개선하기
    • 불규칙한 결과에서 벗어나기
    • 이해되는 테스트 만들기
  • 큰 테스트의 소유권
    • 반듯이 소유자가 문서로 기록되어 있어야 함

참조