(그러나 저는 진실되고 정직할 것입니다)
LinkedIn : devyulbae
Email : devyulbae@gmail.com

저는 현재 글또라는 개발자 글쓰기 모임에 참여하고 있습니다. 해당 스터디에서 한빛미디어에게 정기적으로 원하는 책을 신청하고 당첨되면 책을 제공받는 기회가 있어서, 이 책을 접해볼 수 있었습니다. 그러나 저는 이러한 리뷰성 글은 읽는 사람에게 진실된 정보를 제공하는 것이 1순위라고 생각하기 때문에, 최대한 객관적인 사실을 담을 수 있도록 고려하여 작성하겠습니다.
이 책은 거의 20년차의 QA 경력을 가지신 가야트리 모한(Gayathri Mohan)이라는 분이 집필한 책의 번역본이다. 그러나 책에서 거의 위화감을 느끼지 못했다는 점에서 번역 퀄리티는 매우 뛰어나다고 생각한다.
책에 대해서 한마디로 표현하자면, 깊이 있는 지식보다 넓은 지식을 제공하는 책이다. 책은 두께에 비해 정말 넓고 많은 양의 정보를 담고 있다. 따라서 한 파트의 설명이 대부분 1페이지를 넘기지 못하며, 따라서 내용이 깊지 않지만 그만큼 압도적으로 많은 종류의 내용을 서술한다. 이 책은, QA 업무를 하는 사람이거나 본인의 프로젝트에 여러가지 테스트로 검증해보면서 서비스의 퀄리티를 향상시키거나, 자동화하고 싶은 분들에게 적합한 책인 것 같다.
개인적으로 AI와 ML 관련해서 깊게 공부하고 있는 나에게는 직접적으로 도움이 되는 내용은 비교적 적어서 아쉬웠다. 프론트엔드 분야에 있는 사람에게는 블로그 주제를 찾기에 최적화된 책인 거 같다. 한 페이지 넘길 때마다 글 주제가 던져지는 느낌이다.
책의 주요 포인트는, 인사이트와 실습이다.
인사이트는, 단원의 마지막 부분에 가끔 '인사이트'라는 페이지가 있는데, 주로 저자가 경험한 문제점과 해결 방법 같은 실제 경험 위주의 정보가 담겨 있다. 책에서 가장 유용하다고 느낀 부분이었다.
실습은 해당 내용에 맞는 테스트 자동화 도구, 혹은 라이브러리 등이 서술되어 있으며, 실제로 따라해볼 수 있도록 순서도 제공해준다.
1. 풀스택 테스트
2. 수동 탐색적 테스트
3. 자동화된 기능 테스트
4. 지속적 테스트
5. 데이터 테스트
6. 시각적 테스트
7. 보안 테스트
8. 성능 테스트
9. 접근성 테스트
10. 교차 기능 요구 사항 테스트
11. 모바일 테스트
12. 테스트 너머의 세계로 나아가기
13. 신기술 테스트 소개
소프트웨어 품질과 시프트 레프트 테스트에 대해서 간략히 소개하고, 풀스택 테스트에 대해 설명하며 풀스택 테스트를 10가지로 분류하여 아래의 2~11번 목차에서 각각 설명한다. 사실상 책의 서론 역할을 하고 있다.
8가지 탐색적 테스트의 프레임워크를 제시하고 간략하게 설명해준다. 실습 부분에서는 API를 테스트하기 위한 포스트맨과 WireMock, 웹 UI를 위한 버그 마그넷과 크롬 개발자도구를 설명해준다. 크롬 개발자도구에 대한 설명이 예외적으로 4페이지나 차지하여 많은 내용을 담고 있었고, 실용적이라서 기억에 남았다.
자동화된 테스트가 왜 수동적인 테스트보다 압도적으로 유용한지에 대해 서술하고 있다. 마이크로 테스트와 매크로 테스트에 속한 여러 테스트에 대해서 서술한다. 실습에서는 셀레니움(Java)과 Cypress, REST assured, JUnit을 소개해준다. 개인적으로 Python으로도 셀레니움을 애용해서 흥미롭게 읽었는데, 책에서도 Java와 셀레니움을 이용한 BDD(행동주도개발)의 실제 사용 예시를 제공해줘서 좋았다.
CI/CD/CT의 정확한 개념과 CI 프로세스를 설명해준다. 실습에서는 Git과 젠킨스를 사용한 자동화를 안내해준다.
아래는 인사이트로 표시되어 있지는 않지만 인상 깊었기에 일부를 발췌하였다.
기본 원칙과 에티켓
- 코드를 자주 커밋해야 한다.
- 자체 테스트 코드를 커밋해야 한다.
- 지속적 통합 인증 테스트를 따라야 한다.
- 실패한 테스트를 무시하거나 주석 처리하면 안 된다.
- 빌드에 실패한 코드 위에 작업하지 않는다.
- 모든 실패에 오너쉽을 가져야 한다.
기능 테스트만으로는 데이터 테스트를 완전히 대체할 수 없다는 점을 언급하며, 여러 가지 저장 방법과 데이터 시스템을 설명하고 각각의 테스트 케이스 작성법을 소개해준다. 실습에서는 SQL(Postgres)을 통한 수동 테스트와 카프카, 제로코드를 이용한 자동 테스트 2가지를 제시해준다.
육안검사로는 놓칠 수 있는 부분들을 고려한 자동화된 테스트를 제시하며 디자인이 개발자가 예측한 모양을 잘 유지하는지 검사하는 방법을 알려준다. Applitools Eyes라는 AI 기반 테스트 도구가 인상깊었다.
[인사이트] 시각적 테스트 적용
- 테스트 생성 및 관리, CI 통합이 간편해야 한다.
- 다양한 스크린샷 관리 기능을 제공해야 한다.
- 사소한 UI 변경은 무시할 수 있도록 테스트 민감도 조정 기능을 제공해야 한다.
- 동적 데이터를 처리하는 기능을 제공해야 한다.
- 다양한 브라우저 및 기기 조합에서 실행 가능해야 한다.
- 다양한 브라우저 및 기기 조합에서 시각적 테스트를 실행할 때 성능이 좋아야 한다.
일반적인 사이버 공격 사례와 보안 취약점을 소개하며 잠재적인 위협을 구조화해보는 '위협 모델링' 방법을 알려준다. 실습에서는 OWASP를 사용한 자동화된 SCA와 CI 통합을 안내한다.
웹 사이트를 기준으로 프론트엔드 테스트와 백엔드 테스트로 나누어 설명한다. 수집해야 하는 정량적인 KPI(핵심 성과 지표)와 이를 수집하기 위한 테스트 설계법 위주로 내용이 전개된다. 해당 단원의 실습을 꼭 해보며 KPI를 직접 수집하고 시각화해보는 것을 추천한다.
페르소나와 접근성 생태계의 개념을 서술하며, 웹 콘텐츠 설계의 기본 원칙인 WCAG 2.0을 다룬다. 실습에서는 WAVE와 라이트하우스를 각각 사용한다.
교차 기능이라는 개념을 서술하며 교차 기능의 기능 요구 사항과 그에 맞는 테스트 전략을 제시해준다. 교차 기능의 소프트웨어 품질 요소인 CFR과 CFR의 테스트 모델인 FURPS, 그리고 시프트 레프트를 적용한 여러 테스트 방법을 소개해준다. 일반 데이터 보호 규정(GDPR)의 원칙 중 하나인 잊혀질 권리는 한번 읽고 인지해두면 좋을듯하다.
GDPR 규정
정보를 제공받을 권리
사용자는 개인 데이터가 어떻게 사용되는지 알 권리가 있다.
정보 주체의 접근권
사용자는 저장된 개인 기록을 요청할 권리가 있다.
잊혀질 권리
사용자는 사이트 소유자가 개인 정보를 보관해야 하는 타당한 이유가 없는 경우 데이터 삭제를 요청할 수 있다.
처리 제한권
사용자는 자신의 개인 데이터에 대한 처리를 금지하도록 요청할 수 있다.
정정권
사용자는 웹 사이트에서 불완전 혹은 부정확한 정보를 수정할 수 있다.
데이터 이동권
사용자는 자신의 데이터를 얻고 재사용할 수 있다.
반대권
사용자는 자신의 개인 정보가 마케팅, 연구, 통계에 사용되는 것을 반대할 수 있다.
자동 의사결정의 대상이 되지 않을 권리
프로파일링과 같은 자동화된 의사결정을 위해 사용자 프로필을 사용하려면 사용자에게 동의받아야 한다.
앞의 다른 단원에 비해 내용이 상당히 길다. 아키텍처에 대한 설명이 훨씬 풍부하고, 본인의 경험이 많이 담겨있는 거 같다.실습에서는 크로스플랫폼을 지원하는 자동화 도구인 앱피움을 깊이 있게 다룬다.
테스트를 잘 하기 위한 기술들을 소개해주는데, 하드 스킬과 소프트 스킬로 나누어서 자세하게 다룬다. 소프트 스킬은 나에게도 도움이 되는 내용이 담겨있었다.
블록체인, AI/ML 같은 최근에 많은 영향력을 끼치며 시장에 적용된 기술들에 대해 간략하게 언급한다. 그러나 앞의 내용들처럼 다양하거나 깊이 있거나 경험이 담겨 있지는 않기 때문에, 의미를 느끼진 못한 파트였다.
전체적으로 내용을 가볍게 다루긴 했지만, 언급하는 내용 하나하나에서 저자의 경험이 묻어나와서 내용이 압축되어 있다고 느꼈다. 책을 통해서 하나를 깊이 있게 얻으려고 하는 것보다, 큰 지도를 본다고 생각하고 앞으로 나아갈 방향을 찾을 때에 사용하는 것이 가장 유용할 것 같다. 특히나 프론트엔드와 관한 내용이 많아서, 프론트엔드의 4년차 이하의 개발자 분들에게 이 책을 추천한다.