본문 바로가기

full of life/book

풀스택 테스트: 10가지 테스트 기술의 기본 원칙과 전략 - 가야트리 모한

https://www.google.co.kr/books/edition/%ED%92%80%EC%8A%A4%ED%83%9D_%ED%85%8C%EC%8A%A4%ED%8A%B8/_vjAEAAAQBAJ?hl=ko&gbpv=1&printsec=frontcover

 

테스트를 공부해야겠다고 항상 생각하고 있었기에 이 책에 관심이 갔다.

 

책에서 다루는 주제

지은이 가야트리 모한(Gayathri Mohan)은 기술 리더로서 QA팀을 이끌고 있다고 한다.

이 책의 목표는 테스트를 처음 접하는 사람이 오늘날의 웹 및 모바일 애플리케이션 테스트에 필요한 모든 기술을 초중급자 수준 이상으로 향상시킬 수 있는 종합적인 자료가 되는 것이다.

그래서, 모든 분야의 테스트를 폭넓게 다룬다. 필요하다면 선택적으로 읽어도 좋을 것 같다.

 

책을 읽고 얻어갈 수 있는 것

첫 서론에서 소프트웨어 개발 팀이 좋은 품질의 서비스를 제공해야 하는 이유에 대해 설명한다.

오늘날 고객은 더 신뢰할 수 있는 경쟁 업체로 이동하기 때문에, 품질에 신경써야 한다는 이야기를 예시를 들어 말한다.

 

이후 본격적인 테스트 기술을 알아볼 수 있다.

- 수동 탐색적 테스트

- 자동화된 기능 테스트

- 지속적 테스트

- 데이터 테스트

- 시각적 테스트

- 보안 테스트

- 성능 테스트

- 접근성 테스트

- 교차 기능 요구 사항 테스트

- 모바일 테스트

 

기억에 남는 부분

p117, 자동화된 기능 테스트 파트에서 좋은 테스트의 특징을 언급한다.

좋은 테스트란 다음과 같은 테스트를 의미한다.
  • 테스트는 적절한 메서드명과 변수명으로 작성되어 읽기 쉬워야 한다. AAA(Arrange, Act, Assert) 패턴에 따라 먼저 테스트 케이스에 필요한 사항을 준비한 다음 작업을 실행하고 결과를 검증한다.
  • 각 테스트는 의도가 명확해야 하고 빠르게 실행하기 위해 하나의 작동만 검증해야 한다.
  • 테스트는 서로 독립적이어야 한다. 테스트 간에 서로 연결되어 있다면 오류가 발생할 수 있다. 테스트 전후 작업을 적절하게 설정하면 테스트를 독립적으로 유지하고 병렬로 실행할 수 있다.
  • 실행 환경에 따라 테스트의 결과가 달라져서는 안 된다. 예를 들어 테스트는 특정 환경의 정적 데이터에 의존하면 안 된다.
  • 테스트를 위한 의존성을 수동으로 관리할 필요 없이 테스트 구축 및 실행 프로세스를 자동화해야 한다. 테스트는 코드 체크아웃 후 단일 명령어로 실행할 수 있어야 한다.

p262, 애플리케이션 성능 문제에 따른 고객의 이탈률을 예시로 파악할 수 있다.

웹 사이트의 페이지 로드 시간이 1초 증가할 때마다 사용자의 이탈률이 증가하고 경쟁사에 고객을 빼앗기게 된다.
  • 구글은 자신들의 웹 사이트를 0.5초 내에 로드하는 것을 목표로 하고 있다. 일반적인 웹 사이트의 경우 2초 이내에 로드할 것을 권장한다.
  • 2018년 아마존은 프라임데이 행사의 트래픽을 처리하지 못해 7,200만~9,900만 달러의 손해를 봤다.
  • 프론트엔드 서비스 업체인 모비파이는 홈페이지 로딩 시간이 100ms 감소할 때마다 전환율이 증가해 연간 매출이 38만 달러 증가한다고 발표했다.
  • 성능 문제는 매출과 브랜드 평판에 직접적으로 영향을 미친다.

p293, '페이지가 느린 것 같다'라는 막연한 표연 대신 RAIL모델 활용하기.

RAIL 모델은 프론트엔드 성능에 대한 사고 프로세스를 구조화하는 방식이다.
  • Response(응답): 사용자 입력에 반응하기까지 걸린 입력 지연 시간에 관한 목표를 정의한다. 버튼 클릭, 요소 전환과 같은 작업을 수행할 때 100ms 이내에 반응하기를 권장한다.
  • Animation(애니메이션): 각 프레임이 16ms(60FPS를 달성하기 위한 최솟값) 이내에 완료되지 않으면 사용자는 로딩, 스크롤, 드래그 앤 드롭 등 애니메이션 효과에서 지연을 느낄 수 있다.
  • Idle(유휴): 일반적인 프론트엔드 설계 패턴에서 분석용 데이터 전송, 댓글 상자 출력과 같이 중요하지 않은 작업은 브라우저가 유휴상태일 때 모아서 처리한다. 이때 가장 이상적인 방식은 50ms이내에 처리 가능한 작업으로 묶어서 실행하는 것이다.
  • Load(로드): 고성능 웹 사이트는 1초 이내에 페이지 렌더링을 시작하는 것을 목표로 해야 한다. 그래야만 사용자가 웹 사이트에 대한 탐색을 완전히 제어할 수 있다고 느낀다.

p328, 접근성 문화에 관해 질문하기.

접근성은 웹 사이트에만 적용되는 것이 아니라 하나의 문화이며 사고방식의 변화를 필요로 한다.
  • 이미지만 있고 대체 텍스트 요약이 없는 이메일을 보내면 모든 사람이 접근할 수 있을까?
  • 프레젠테이션 슬라이드에 작은 글꼴을 사용하면 모두가 읽을 수 있을까?
  • 모두가 이해할 수 있도록 어려운 전문 용어 대신 간단하고 명확한 메시지를 작성할 수 있을까?

접근성 생태계는 웹을 넘어서 도구와 기술을 포함한다. 스크린 리더와 같은 보조 기술을 사용해보면 애플리케이션에 적합한 접근성 지원 기능을 생각하는 데 도움이 된다.

 

마무리

프론트엔드 파트에 적합하거나 특히 도움되는 파트는 [시각적 테스트, 성능 테스트, 접근성 테스트] 였다.

폭넓게 이론적인 부분에 집중하고 있어서, 프론트엔드 테스트에 집중하고 싶다면 이 책만으로는 부족할 수 있다.

코드 자체는 많이 없는 편이고, 어떤 툴들이 있고 어떻게 설치하여 사용을 시작하는지 + 결과물 정도를 간단히 볼 수 있다.

 

개인적으로 한가지 아쉬웠던 점은

어떤 영어 단어를 모아 줄임말로 사용할 때 (예를 들면 위의 RAIL)

해당 대문자가 어떤 단어에서 따온 것인지 정확하게 언급해주지 않았다.

 

해당 문자로 시작하는 단어가 많고 의미가 모호한 경우가 있어서

처음 사용할 때 한 번이라도 언급되었다면 이해에 도움이 되었을 것 같은 아쉬움이 있다.

 

 

하지만 책 제목처럼, 전체적으로 테스트 바이블을 읽은 듯

다양한 분야의 테스트 사례로 배경지식까지 쌓을 수 있어

테스트에 관심 있는 개발자라면 충분히 도움 받을 수 있는 책이라고 생각했다.

 

 

 

해당 글은 한빛미디어의 후원으로 책을 받아 작성하였습니다.