|
풀스택 테스트를 읽고나서, 테스트에 관한 잘못된 생각 및 여태까지 존재도 모르고 있었던 수 많은 테스트 도구와 테스트 원칙, 테스트 방법론에 대해서 무지했던 나를 반성하는 기회가 되었다. 매우 재미있게 읽었으며, 개발자로써 한층 업그레이드된 느낌이다. ㅎㅎ
이 책은 제목에서 처럼 소프트웨어에 대한 거의 모든 테스트를 다루고 있다. 개발자는 물론 PM, PO, QA, 테스터, SRE 모두에게 도움이 될 것을 확신한다. 데이터 과학자를 포함해서 말이다. 책에서 전달하고자 하는 것이 테스트 도구의 사용법이 아니라 테스트가 필요한 부분과 전략(방법론)이기 때문이다. 도구 사용법은 덤이다.
책을 다 읽고 난 지금 저자의 프론트엔드와 백엔드를 가리지 않고, 데이터와 AI, 블록체인까지 다루는 어마어마한 기술 스택에 존경심을 표한다. 이 많은 내용을 어떻게 한 권에 넣었는지 정말 대단하다는 생각이다.
책의 구성은 전체 13개장으로 되어 있는데, 1장은 풀스택 테스트의 기초 개념을 소개하고, 2장부터 11장까지는 10가지 상황에 대한 테스트 방법을 설명한다. 12장에서는 불변하는 테스트의 기본 원칙과 마음 가짐에 관해 설명하고, 마지막으로 4가지 신기술에 대한 테스트 방법을 설명으로 마무리한다.
각 장 설명하면 아래와 같다. Chapter 1은 소프트웨어 품질에 대한 저자의 생각과 좋은 품질을 유지 하기 위한 방법 및 테스트라는 주제에 관해 설명하고, Chapter 2는 주어진 요구 사항의 의미를 분석하고, 소프트웨어의 작동을 탐색하여 테스트하는 수동 탐색적 테스트 방법에 관해 설명한다. Chapter 3은 도구를 활용하여 사람 대신 도구가 수행하는 자동화된 기능 테스트 방법에 관해 설명한다. Chapter 4는 CI 소개 및, CI를 통한 지속적 테스트 방법에 대해 설명하고, Chapter 5는 애플리케이션에서 가장 중요한 요소인 데이터 테스트에 관해 설명한다. Chapter 6은 애플리케이션의 첫인상을 결정하는 시각적 품질을 테스트하는 시각적 테스트 방법을 설명하고, Chapter 7은 해커의 입장에서 생각하여 사이버 범죄에 노출될 수 있는 위협을 테스트하는 보안 테스트에 관해 설명한다. Chapter 8은 성능이 소프트웨어에 미치는 영향과 함께 성능 테스트 방법에 관해 설명하고 Chapter 9는 영구적, 일시적, 상황적 장애가 있는 사용자가 쉽게 소프트웨어를 사용할 수 있도록 하는 접근성 테스트 방법에 설명한다. Chapter 10은 우리가 비기능이라고 알고 있는 교차 기능 요구 사항 테스트 방법에 관해 설명하고, Chapter 11은 전세계 사용자가 66억명이나 되는 스마트폰, 태블릿등의 모바일 테스트 방법에 관해 알아본다.
Chapter 12는 테스트 기술이 아닌, 테스트 원칙과 마음 가짐에 관해 설명하고, 마지막으로, Chapter 13은 신기술(인공지능과 머신러닝, 블록체인, 사물인터넷, 증강 현실(AR).과 가상 현실(VR)) 테스트 소개로 마무리한다.
테스트의 각 장(2장~11장)은 먼저 해당 주제와 관련된 명언으로 시작하여 , 해당 주제(테스트)의 개념과 필요성에 대해 설명한다. 그리고 테스트 대상의 구성 요소를 확인하고, 이어서 테스트 전략(방법론)을 살펴보고, 실습 방법을 설명한다. 추가 테스트 도구가 있으면 덧붙여 설명하고, 마지막으로 요점을 정리한다.
실습 방법 설명은 기술 스택의 설명과 실제 명령줄 코드로 설치 방법을 알려준다. 필요하면 소스코드와 설정 예제도 함께 보여준다. 툴을 설명할 때는 캡처화면으로 설명한다. 무엇보다 설명하기 전에 워크플로부터 알려주는 패턴이 도움이 많이 되었다.
특히, 인사이트는 저자의 경험이나 안티 패턴, 실수할 수 있는 부분을 전달하기에 꼭 챙겨보기 바란다.
개인적으로 모든 장이 훌륭하지만, '10장 교차 기능 요구 사항 테스트'와 '12장 테스트 너머의 세계로 나아가기'가 인상 깊었다.
10장은 비기능으로 인식하던 교차 기능 요구 사항 테스트가 매우 중요하다는 사실을 알게 되었으며, 테스트로 교차 기능 요구 사항을 커버할 수 있었고, 거의 모든 기능은 테스트가 가능하며, 결국에는 좋은 소프트웨어 품질로 이어진다는 것이다.
12장은 앞으로 계속 개발될 테스트 도구에 종속되지 않고 사용할 수 있는 불변하는 테스트 기본 원칙과 품질을 우선으로 생각하는 팀의 소프트웨어 스킬(커뮤니케이션, 문제 해결, 리더쉽, 유연성) 연습도 기술을 배우는 것 이상으로 중요하다는 것이다.
디자인은 주황색 테마로 주제에 맞는 다양한 그림과 추가 용어를 설명하는 NOTE 블록, 표, 예제 소스코드, 결과 캡처, 테스트 도구 설치 화면이 굉장히 많았음에도 전혀 이질감이 없이 잘 읽히고 좋았다.
어마어마한 기술 스택을 다루고, 많은 툴과 용어가 있었음에도 번역이 어색하지 않았고, 매우 깔끔했다. 역자님에게도 감사드린다. :D
마지막으로 일반적으로 생각하는 테스트의 관습적인 잘못된 태도에 관한 저자의 생각으로 마무리한다.
"한빛미디어<나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
#풀스택테스트 #테스트 #test #풀스택 #소프트웨어개발 #소프트웨어엔지니어 #개발방법론 #자바 #자바스크립트 #프론트엔드 #백엔드 #JUNIT #JEST #시프트레프트 #셀레니움 #Cypress #한빛미디어 #가야트리모한 #최경현 #소프트스킬 #시프트레프트테스트
|
|
서비스를 개발하다 보면 가장 중요한 부분이 테스트이지 않을까 싶다. 요건대로 기능이 제대로 작동하고, 예외 케이스 발생해서 오류가 발생하는지 다양한 케이스가 존재하기 때문이다. 물론 서비스를 런칭하고 나서도 마찬가지다. 일부 기능을 수정했는데, 수정한 기능 때문에 기존에 잘 동작하던 기능이 제대로 동작하지 않는 경우도 있기 때문이다. 그렇기에 서비스를 개발할 때, 테스트가 가장 중요한 부분인데 이것을 일정에 쫒겨 놓치는 경우가 많다. 책 이름에서 알수 있듯이, 풀스택이다. 한쪽의 테스트만 잘 수행됐다고 제대로 동작이 안되는 것처럼 백엔드, 프론트 모두 테스트가 통과되어야 정상적인 서비스를 제공할 수 있다고 판단할 수 있다. 테스트도 아래와 같이 여러 테스트가 있다. 수동 탐색적, 자동화된 기능, 지속적, 데이터, 시각적, 보안, 성능 , 접근성, 교차 기능 요구 사항, 모바일 테스트 등이런 여러가지 테스트가 있다는 것도 책을 읽으면서 알 수 있었습니다. 다만 여러가지를 다루다 보니 깊게 배우고 싶으신 분은 조금 아쉬운 분도 계실 것 같지만 이 책의 가장 큰 장점은 웹 및 모바일 애플리케이션 테스트에 필요한 모든 기술을 다루는 종합적인 가이드라는 것입니다. 테스트의 기본 개념부터 다양한 테스트 기술, 실무적인 테스트 접근법, 테스트 도구 활용 방법까지 폭넓게 다루고 있습니다. 따라서, 웹 및 모바일 애플리케이션 테스트에 대한 기초 지식을 쌓고 싶은 분이나 다양한 테스트 기술을 배우고 싶은 분에게 유용한 책이라 생각됩니다. 품질 좋은 서비스를 제공하기 위해서는 그에 준하는 테스트가 뒷받침 되어야 된다고 생각합니다. 아직도 테스트에 목마르신 분들은 한 번 읽어보시라고 추천 드립니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
풀스택 개발자로서 되도록이면 테스트를 많이해 내가 짠 코드의 품질을 높이자는 주의인데, 프로젝트 일정에 쫓기다 보면 제대로 하지않고 테스트를 하는 경우가 있어 참 아쉬움이 남는 경우가 많이 있었습니다. 뭔가, 테스트를 안했을때는 불안감이 커지고 내가 짠 코드에 자신감도 없고 찜찜한 기분이 남습니다. 이제부터라도 테스트에 더 많은 시간을 좋은 품질의 소프트웨어를 만들기 위해 노력해야 하겠습니다. 풀스택 테스트는 모든 계층에서 애플리케이션의 모든 영역을 테스트하여 좋은 품질의 소프트웨어를 제공하는 것을 말합니다. 이책에서는 풀스텍 테스트를 크게 10가지 영역으로 나눕니다. 수동 탐색적 테스트, 자동화된 기능 테스트, 지속적 테스트, 데이터 테스트, 시각적 테스트, 보안 테스트, 성능 테스트, 접근성 테스트, CFR 교차 기능 요구사항 테스트, 모바일 테스트로써 풀스택 테스트를 효율적으로 수행하기 위한 테스트 기법입니다. 위의 10가지 테스트를 상황별로 기술을 활용하는 방법과 전략을 자세히 설명하며, 특히 자바 및 자바스크립트를 활용해 실무에서 어떻게 단계별로 안내하는 점 그리고 여러가지 테스트를 소개하고 각 도구로 최대의 가치를 창출할 수 있는 시점을 자세히 설명하는 점이 이 책의 특징이라고 할수 있습니다. 또한 오랜 실무 경험을 통해 터득한 저자의 노하우를 알려주며 웹 및 모바일 애플리케이션 테스트에 필요한 모든 기술을 접하고 익숙해질 수 있습니다. 전문 테스터 뿐만 아니라 애플리케이션 개발자, 데비옵스 엔지니어 같이 테스트와 밀접한 관련이 있는 업무를 당담하는 모든 사람에게 큰 도움이 되는 테스트계의 교과서라 할 수 있습니다.
목차 Chapter 1 풀스택 테스트 1.1 좋은 품질을 위한 풀스택 테스트 1.2 시프트 레프트 테스트 1.3 10가지 풀스택 테스트 요점 정리
Chapter 2 수동 탐색적 테스트 2.1 구성 요소 _2.1.1 탐색적 테스트 프레임워크 _2.1.2 기능 탐색 2.2 수동 탐색적 테스트 전략 2.3 실습 _2.3.1 API 테스트 _2.3.2 웹UI 테스트 2.4 인사이트: 테스트 환경 위생 요점 정리
Chapter 3 자동화된 기능 테스트 3.1 구성 요소 _3.1.1 마이크로 테스트와 매크로 테스트 유형 3.2 자동화된 기능 테스트 전략 3.3 실습 _3.3.1 UI 기능 테스트 _3.3.2 서비스 테스트 _3.3.3 유닛 테스트 3.4 추가 테스트 도구 _3.4.1 팩트 _3.4.2 가라테 _3.4.3 AI/ML 자동화 테스트 도구 3.5 인사이트 _3.5.1 주의해야 할 안티 패턴 _3.5.2 100% 자동화 커버리지 요점 정리
Chapter 4 지속적 테스트 4.1 구성 요소 4.2 CT 전략 _4.2.1 CI의 이점 4.3 실습 _4.3.1 Git _4.3.2 젠킨스 4.4 4가지 주요 지표 요점 정리
Chapter 5 데이터 테스트 5.1 구성 요소 _5.1.1 데이터베이스 _5.1.2 캐시 _5.1.3 배치 처리 시스템 _5.1.4 이벤트 스트림 5.2 데이터 테스트 전략 5.3 실습 _5.3.1 SQL _5.3.2 JDBC _5.3.3 아파치 카프카 및 제로코드 5.4 추가 테스트 도구 _5.4.1 테스트 컨테이너 _5.4.2 Deequ 요점 정리
Chapter 6 시각적 테스트 6.1 구성 요소 _6.1.1 시각적 테스트 소개 _6.1.2 프로젝트/비즈니스별 유스 케이스 6.2 프론트엔드 테스트 전략 _6.2.1 유닛 테스트 _6.2.2 통합 테스트 _6.2.3 스냅샷 테스트 _6.2.4 엔드 투 엔드 기능 테스트 _6.2.5 시각적 테스트 _6.2.6 교차 브라우저 테스트 _6.2.7 프론트엔드 성능 테스트 _6.2.8 접근성 테스트 6.3 실습 _6.3.1 BackstopJS _6.3.2 Cypress 6.4 추가 테스트 도구 _6.4.1 Applitools Eyes _6.4.2 스토리북 6.5 인사이트: 시각적 테스트 적용 요점 정리
Chapter 7 보안 테스트 7.1 구성 요소 _7.1.1 일반적인 사이버 공격 _7.1.2 STRIDE 위협 모델 _7.1.3 애플리케이션 취약점 _7.1.4 위협 모델링 7.2 보안 테스트 전략 7.3 실습 _7.3.1 OWASP Dependency-Check _7.3.2 OWASP ZAP 7.4 추가 테스트 도구 _7.4.1 스닉 IDE 플러그인 _7.4.2 탈리스만 커밋 전 훅 _7.4.3 크롬 개발자 도구와 포스트맨 7.5 인사이트: 보안은 습관이다 요점 정리
Chapter 8 성능 테스트 8.1 백엔드 성능 테스트 구성 요소 _8.1.1 성능, 매출, 주말 휴무의 상관관계 _8.1.2 성능 목표 _8.1.3 성능에 영향을 미치는 요소 _8.1.4 핵심 성과 지표 _8.1.5 성능 테스트 유형 _8.1.6 부하 패턴 유형 _8.1.7 성능 테스트 단계 8.2 실습 _1단계: 목표 KPI 정의 _2단계: 테스트 케이스 정의 _3~5단계: 데이터, 환경, 도구 준비 _6단계: 제이미터를 사용한 성능 테스트 스크립트 작성 및 실행 8.3 추가 테스트 도구 _8.3.1 개틀링 _8.3.2 아파치 벤치마크 8.4 프론트엔드 성능 테스트 구성 요소 _8.4.1 프론트엔드 성능에 영향을 미치는 요소 _8.4.2 RAIL 모델 _8.4.3 프론트엔드 성능 메트릭 8.5 실습 _8.5.1 WebPage Test __워크플로 _8.5.2 라이트하우스 __워크플로 8.6 추가 테스트 도구 _8.6.1 페이지 스피드 인사이트 _8.6.2 크롬 개발자 도구 8.7 성능 테스트 전략 요점 정리
Chapter 9 접근성 테스트 9.1 구성 요소 _9.1.1 접근성 사용자 페르소나 _9.1.2 접근성 생태계 _9.1.3 예제: 스크린 리더 _9.1.4 WCAG 2.0: 기본 원칙과 수준 _9.1.5 레벨 A 적합성 표준 _9.1.6 접근성 지원 개발 프레임워크 9.2 접근성 테스트 전략 _9.2.1 사용자 스토리의 접근성 체크리스트 _9.2.2 자동화된 접근성 감사 도구 _9.2.3 수동 테스트 9.3 실습 _9.3.1 WAVE _9.3.2 라이트하우스 _9.3.3 라이트하우스 노드 모듈 9.4 추가 테스트 도구 _9.4.1 Pa11y CI 노드 모듈 _9.4.2 Axe-core 9.5 인사이트: 접근성 문화 요점 정리
Chapter 10 교차 기능 요구 사항 테스트 10.1 구성 요소 10.2 CFR 테스트 전략 _10.2.1 기능성 _10.2.2 사용성 _10.2.3 신뢰성 _10.2.4 성능 _10.2.5 지원성 10.3 기타 CFR 테스트 방법 _10.3.1 카오스 엔지니어링 _10.3.2 아키텍처 테스트 _10.3.3 인프라 테스트 _10.3.4 규정 준수 테스트 10.4 인사이트: 진화성 요점 정리
Chapter 11 모바일 테스트 11.1 구성 요소 _11.1.1 모바일 환경 _11.1.2 모바일 앱 아키텍처 11.2 모바일 테스트 전략 _11.2.1 수동 탐색적 테스트 _11.2.2 자동화된 기능 테스트 _11.2.3 데이터 테스트 _11.2.4 시각적 테스트 _11.2.5 보안 테스트 _11.2.6 성능 테스트 _11.2.7 접근성 테스트 _11.2.8 CFR 테스트 11.3 실습 _11.3.1 앱피움 _11.3.2 앱피움 시각적 테스트 플러그인 11.4 추가 테스트 도구 _11.4.1 안드로이드 스튜디오 데이터베이스 인스펙터 _11.4.2 성능 테스트 도구 _11.4.3 보안 테스트 도구 __MobSF __Qark _11.4.4 접근성 검사기 11.5 인사이트: 모바일 테스트 피라미드 요점 정리
Chapter 12 테스트 너머의 세계로 나아가기 12.1 테스트 기본 원칙 _12.1.1 결함 예방 _12.1.2 최종 사용자의 관점 반영 _12.1.3 마이크로 및 매크로 수준 테스트 _12.1.4 빠른 피드백 _12.1.5 지속적 피드백 _12.1.6 품질 지표 측정 _12.1.7 커뮤니케이션과 협업 12.2 품질을 우선으로 생각하기 위한 소프트 스킬 마무리
Chapter 13 신기술 테스트 소개 13.1 인공지능과 머신러닝 _13.1.1 ML _13.1.2 ML 애플리케이션 테스트 13.2 블록체인 _13.2.1 블록체인 개념 _13.2.2 블록체인 애플리케이션 테스트 13.3 사물인터넷(IoT) _13.3.1 IoT의 5 계층 아키텍처 _13.3.2 IoT 애플리케이션 테스트 13.4 증강 현실(AR)과 가상 현실(VR) _13.4.1 AR 및 VR 애플리케이션 테스트 마무리 |
|
근래 테스트에 대해 잘 알아야겠다는 생각을 하고 있습니다. 잘 갖춰진 테스트 체계는 개발 조직에 학습 기회를 제공하는 피드백을 제공하게 되는데요. 적절한 피드백을 받는 조직에서 일하는 것만큼, 개발자의 자기 계발에 중요한 요소가 없다고 이해하게 되었기 때문입니다. 그 배경에는 작년 말에 읽었던 <디지털 트랜스포메이션 엔진>이 한몫을 했습니다. 기업가 정신이나 인수 합병과 같은 기업 행위 보다, 기업의 수익률을 높이는 요소는 "적절한 기술"의 사용이라고 했기 때문인데요. 이는 "고성과" 기술 조직의 뒷받침이 있어야 가능한 일입니다.
다시 말해, 고성과 기술 조직이 회사의 사활을 가를 수 있는 거죠. 고성과 조직은 고객의 요구사항이 빠르게 서비스로 반영되고, 그 과정이 대단히 안정적이며, 과정을 거친 다음 나오는 피드백이 조직의 학습에 도움이 되는 조직입니다. 여기에 지속적인 통합, 지속적인 배포 등의 기술과 함께 적절한 테스트 기법이 상당히 중요한 위치를 차지하고 있습니다. 그러니 테스트에 대해 관심을 가질만하죠.
우리가 가지고 있는 선입견에서 '테스트'는 제품을 만들어서 최종 출시 전 승인을 받는 정도의 역할을 하는 것입니다. 하지만 그건 애자일 방식의 테스트가 아닙니다. 테스트 주도 개발(TDD: Test driven development) 개념에서 볼 때 테스트는 선행으로 시작해야 하거든요. 여기서 문제가 발생합니다. 애자일이 왜 필요한지 이해하기 전, 무작정 테스트를 앞으로 보내는 게 맞는다는 강요를 받게 되면, 정말 테스트만 앞으로 보내려고 노력하다가 포기하게 됩니다. 테스트를 앞으로 보내는 건, 개발자 입장에서는 다른 방식의 사고로 개발을 하는 것을 의미하지만 개발 프로세스의 입장에서는 그만큼 자동화 기회를 얻겠다는 의미가 됩니다. 되도록 많은 테스트를 확보해야 코드를 유지 보수하는 과정에서 시스템이 안정적으로 변화하게 될 것이기 때문입니다.
반드시 필요하지만, 우리의 지식과 경험이 거부하는 상황이라 표현하면 될 것 같습니다. 그럼, 서로의 이해를 돕기 위해서, 전통적인 테스트 방법과 애자일 테스트 방법에 대한 적절한 비교를 통해서 고성과 조직이 어떤 방식으로 지속적인 학습을 도모하는지 이해하는 과정이 필요할 것 같습니다. 그게 이해된다면, 그다음 필요한 건, 우리가 서비스를 운용하기 위해 필요한 테스트들을 분야별로 나누고, 우리가 이해한 대로 기존의 테스트 프로세스를 바꾸는 작업이 필요하게 될 것 같은데요. <풀 스택 테스트>는 그 부분에서 필요한 책인 것 같습니다. 저자는 테스트를 분야로 나누고 각 분야 테스트가 어떤 의미를 지니는지 독자를 이해시킨 다음 관련 코드로 그 이해의 깊이를 깊게 해줄 설명을 보태는 방식으로 책의 내용을 꾸리고 있습니다.
그래서, "풀스택"이라는 용어보다는 모든 분야 서비스를 잘 설명한다는 다른 용어를 찾아서 책의 제목을 삼았으면 어떨까 하는 생각도 해보게 되더군요. "풀스택"이라고 하면 왠지 프런트엔드, 백엔드를 아우르는 테스트 정도로 이해되기 때문이죠.
회사에서 특정 기술을 도입하거나, 또는 우리 회사만의 독특한 기술을 문서화할 때 필요한 건, 특정 기술을 사용하는 샘플 코드 보다, 그 기술이 왜 세상 밖으로 나오게 되었는지, 그리고 그 기술은 어떤 이론적인 배경을 가지고 만들어졌는지 설명하는 내용입니다. 기술 블로그나 회사 내 문서를 볼 때마다 저는 이 부분의 결핍을 느꼈는데요. 이 책을 읽으면서, 이 책의 설명 방식이 하나의 샘플이 되면 좋겠다는 생각을 했습니다. 앞에서 말씀드린 것처럼 이 책은 왜 그게 필요한지를 먼저 설명하고 코드를 보여주는 방식으로 구성되어 있기 때문입니다.
우리가 복잡한 일을 해야 할 때 가장 중요한 준비가 일의 목록을 정하는 것입니다. 뭘 해야할지 먼저 정리해 둬야 막상 일을 하게 될 때 놓치고 하지 않는 불상사가 일어나지 않기 때문이죠. 문제는 목록을 작성하는게 그리 만만치 않다는 것입니다. 저는 이런 경우에 필요한 책이 <풀스택 테스트>와 같은 책이 아닐까 싶습니다. 읽어보시면 아시겠지만, 필요한 테스트를 설명하는 과정에서 그 테스트에 어떤 개념과 일이 필요한지 목록 정리를 잘해주는 부분들이 많이 보이거든요.
아참, "시각 테스트"에 대해서 설명하는 부분은 흥미로웠습니다. 로버트 C 마틴은 <소프트웨어 장인 정신 이야기>에서 GUI는 테스트하지 말라"고 직접 이야기 하고 있는데요. 이 책에서는 "시각 테스트"라는 장을 따로 나눠서 설명하고 있기 때문입니다. 하지만 어떤 면에서 기조가 비슷하다고 생각하게 되었습니다. "따라서 시각적 테스트의 경우에는 명확하게 관련된 사용자 스토리가 있을 때만 적용해야 한다"라고 199페이지에 못박고 있기 때문입니다. 로버트 C 마틴도 GUI를 위한 유닛테스트는 필요없다고 설명하지만 화면을 그리는 프리젠테이션 컴포넌트를 테스트하지 말라는 것이지 여기에 '그릴' 데이터를 주입해주는 프리젠터에 경우에는 유닛테스트를 추가해서 TDD방식으로 구현하라고 설명하고 있습니다. 그렇다면 테스트를 마무리하는 시점에서 "사용자 스토리"가 있는 경우에는 "인수"를 위해 테스트를 추가할 필요가 생길 것 같습니다.
이 책은 한번 보고 끝나는 것보다 관련 업무를 할 때 다시 들춰보며 "목록" 확인을 하는 용도로 사용하면 꽤 유용하겠다는 생각을 했습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
이번에 리뷰할 책은 풀스택 테스트 책을 제공받았습니다. 개발을 진행 후에 개발이 잘되었는지 검증하는 것이 매우 중요한 파트입니다.
본 책에서는 개발 환경 및 운영계 운용과 배치 처리로 데이터를 효율적으로 처리하는 법을 주로 다루고 있습니다. 더 원활한 개발을 위해서 자동화된 테스트를 실습을 통해 익혀볼 수 있습니다. 다양한 언어를 기반으로 사전 요구사항과 어떻게 기본 설정값을 주어야 하는지도 친절하게 코드로 설명해놓았기에 실제 프로젝트 적용에도 수월하다고 생각합니다.
책을 읽으면서 다양한 풀스택 테스트를 해볼 수 있는 책이였으며, 추후 업무에 적용을 하는데 있어서도 추천드리고 싶은 책입니다.
마지막으로 좋은 책 제공과 기회를 주신 한빛미디어 담당자 분들께 감사 드립니다. 9월에도 내용이 탄탄한 도서를 읽고 빨리 리뷰를 남기고 싶습니다. |
|
※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 장점
단점
후기
|
|
이 책은 크게 10가지의 S/W 테스트에 대해서 다루고 있습니다.
각 테스트 분야에서는 테스트의 개념과 전략 그리고 이 테스트를 자동화할 수 있는 도구들에 대해서 정리가 잘 되어 있습니다.
우리가 보통 수행하는 수동적 테스트는 테스트 시나리오와 체크 리스트를 작성해서 고객의 요구사항대로 소프트웨어가 동작하는지 살펴보는 1차원적인 방법이지만
여기서 더 나아가 수동 탐색적 테스트, 자동화된 테스트 그리고 지속적 테스트 등의 다양한 테스트 방법론과 접근 방법에 대해서 배울 수 있습니다. 좀 더 구체적인 테스트 분야로는 데이터 테스트, 시각적 테스트, 보안 테스트, 성능 테스트, 접근성 테스트, 교차 기능 요구 사항 테스트, 모바일 테스트 등에 대해서 설명되어 있습니다.
이 책에서 정리한 10가지의 풀스택 테스트는 다소 이론적인 설명이 많지만, 소프트웨어를 개발하거나 품질을 관리하는 대부분의 사람들이 꼭 알아야 하는 내용들로 채워져 있으니, 테스트 체크리스트를 작성할 때 참고하면 도움이 될 것입니다. -- |
|
"한빛미디어 <나는 리뷰어다>활동을 위해서 책을 제공받아 작성된 서평입니다."
이 책은 테스트의 중요성에 대해서 ‘이 책에 대하여’에 필자의 경험으로 ‘테스트 전략을 잘 구현한 팀은 좋은 품질의 소프트웨어를 제공하는 데 성공했고 그렇지 않은 팀은 실패했다.’고 기술하였다. 나는 최근 이 말에 매우 많은 공감을 하고 있다.
개발자로서 개발을 하다 보면 테스트의 중요성을 매우 다양한 곳에서 다양한 방법으로 느끼게 된다.
그러나 스타트업 중소기업 등에서는 현실상 생산성이 없다는 이유로 QA를 두고 제대로 된 테스트를 하는 것이 어려운 것은 현실이다. 그렇기 때문에 개발 단계에서의 단위 테스트 와 형식적인 테스트로 끝나는 경우가 많다.
필자는 10가지 풀스택 테스트를 분류하여 테스트 방법을 소개하고 있다. 1 . 수동 탐색적 테스트, 2. 자동화된 기능 테스트, 3. 지속적 테스트, 4. 데이터 테스트, 5. 시각적 테스트, 6. 보안 테스트, 7. 성능 테스트, 8. 접근성 테스트, 9. 교차 기능 요구 사항 테스트, 10. 모바일 테스트
각각의 테스트는 기능적 또는 분석적 측면에서 나누어 놓은 것일 뿐 이 분류된 테스트가 자신이 개발하는 시스템에 필요하다면 모든 테스트를 다 진행하여야 한다.
다시 한번 말하지만 이 책에서는 테스트의 필요성에 대해 매우 잘 설명하고 있다고 생각한다.
이 책은 개발자 또는 QA 테스터 이외에도 소프트웨어로 서비스를 하는 모든 분야의 사람들이 읽어 보면 좋을 듯하다. 특히나 소프트웨어의 아웃풋 만큼이나 소프트웨어의 품질의 중요성을 알아야 하는 기획 및 운영진 등에서도 알아야 한다고 생각한다.
|
![]() 테스트가 무엇인지, 어떻게 해야 하는지, 좋은 테스트 시스템을 갖추기 위해 어떤 것을 고려해야 하는지를 다루는 책이다.
우선 테스트를 크게 10가지로 분류하고 있다.
이 10가지 테스트를 제품에 적용하면 웹, 모바일 모든 측면에서 품질을 테스트할 수 있다고 말한다.
소프트웨어 품질은 더 이상 기능적인 측면에서만 평가할 수 없고 보안, 성능, 시각적 품질과 같은 애플리케이션의 전반적인 부분을 만족시켜야만이 좋은 품질의 소프트웨어라고 할 수 있다.
이를 위해서 단순히 소스코드만을 다루는 단위 테스트의 범위를 벗어나 모든 계층, 모든 영역의 테스트를 통해 좋은 품질의 소프트웨어를 만들 수 있다고 저자는 말한다. 그리고 모든 개발이 완료된 시점에서 시작하는 것이 아닌 테스트 시점을 요구 사항 분석이라는 극 초기 단계부터 끌어당기는 시프트 레프트 테스트를 통해 소프트웨어 개발 주기의 여러 단계에서 발생하는 피드백을 빠른 시점에 얻는 것이 중요하다고 강조한다.
QA 엔지니어이시거나 지망하고 계신 분이라면 반드시 읽어봐야 하는 책이라고 생각한다. 그리고 내가 작성한 코드가 어떤 테스트를 통해 검증되는지만 알고 있어도 개발 단계에서 누락할 수 있는 부분을 메꿀 수 있다고 생각하는 개발자분들에게도 추천한다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
|
테스트를 해도해도 끝이없는 영역인 것 같다. 개발자로써 프로그램을 개발하면 테스트 단계를 거치는데, 항상 테스트 단계에서 제대로 테스트가 이루어지지않아 나중에 가면 어디선가 터지고만다. 그렇게 프로그램 개시 후에 오류가 터지고나면
상사님 : "테스트를 잘했어야지" 나 : "분명 테스트 잘 했는데..."
이런 구차한 변명만 늘어놓게된다. 변명을 하지않을 수가 없다. 왜냐하면 "네 다음엔 더 잘하겠습니다 ~" 하기엔 이미 진심으로 테스트를 잘했다고 생각했기 때문에....... 그래서 (늘 마음속으로) 나는 되묻는다.
'어떻게 하는게 잘하는건데요..?' 이런 고민을 하던 찰나에 이 책을 접하게 된 것은 나에겐 행운같은 일이다.
이 책은 개발 프로그램의 품질 검증을 위한 테스트에 대한 방법론을 다루고있다. 테스트를 '잘'하는 것에 대한 막연함이 든다면 이 책은 개발 품질을 위한 테스트 방법론을 총망라하고있다. 그래서 실전 테스트를 할 때 옆에 껴두고 두고두고 보면서 적용하기에도 괜찮은 책인 것 같다.
다루고 있는 테스트 방법으로는 1. 풀스택테스트 2. 수동 탐색적 테스트 3. 자동화된 기능 테스트 4. 지속적 테스트 5. 데이터 테스트 6. 시각적 테스트 7. 보안 테스트 8. 성능 테스트 9. 접근성 테스트 10. 교차 기능 요구 사항 테스트 11. 모바일 테스트 12. 신기술 테스트
에 대해서 다루고있다.
?? 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |