brunch

You can make anything
by writing

C.S.Lewis

by 카카오스타일 Nov 24. 2020

프로젝트 관리, 테스트 케이스의 중요성

지그재그 팀의 테스트 케이스 작성 사례를 소개합니다. 

안녕하세요. 지그재그 팀에서 PM 업무를 담당하고 있는 진용진입니다.


흔히 제품은 사용자와 이를 만드는 회사·사람과 관계라고 합니다. 사용자는 단순히 지그재그란 제품을 사용하는 것이 아니라, 지그재그가 제공하는 제품의 가치와 관계를 형성하는 것으로 생각합니다.


사람의 관계가 단 한번의 만남 만에 이뤄지지 않듯이, 사용자는 지그재그 팀으로부터 지속적인 가치를 얻기를 기대합니다. 따라서 제품 개발팀은 사용자의 가치가 극대화되는 적절한 시점에 기능을 출시해야 합니다. 우리가 흔히 말하는 '일정 관리'는 이와 같은 'on-time delivery'를 지속할 수 있는 개발 프로세스에 대한 고민을 의미할 것입니다.




프로젝트 배포의 지연


PM은 프로젝트 진행을 위해 요구사항 문서(이번 글에서 편의상 국내 업계에서 많이 사용하는 '기획서'라고 용어를 사용하겠습니다)를 작성합니다. 지속적인 제품 개발 프로세스 유지를 위해 기획서의 역할은 기능에 대한 모든 세부 사항을 정의하기 보다, 직군간 커뮤니케이션을 위한 일종의 시작점, 또는 가이드 역할을 합니다. 따라서 기획서는 제품 개발 과정에서 계속 업데이트 되어야 합니다.


일반적으로 테스트 케이스(test case)는 기획서를 바탕으로 작성됩니다. 테스트 케이스의 정의는 기업마다 다르겠지만 제가 과거에 근무했던 국내 포털 기업들은 기능의 UI, 상태, 주요 액션이 세부적으로 정의된 기획서를 바탕으로 QA 진행 전에 일종의 체크리스트 개념으로 작성했습니다. 이러한 업무방식에 익숙했던 저는 테스트 케이스를 바라보는 인식이 단순히 테스팅 과정에서 기능의 정상 동작을 검증하는 가이드로 생각했습니다.


테스트 케이스를 바라보는 PM의 관점은 실제 프로젝트 진행 방식에 반영되었습니다. 테스트 케이스는 QA 예정일 직전 주간에 정의되도록 일정이 관리되었습니다. 하지만 QA 과정에서 문제점이 나타났습니다. QA 과정에서 기획서가 정의하지 못한 기획 미비점이 드러났기 때문입니다. 운이 좋게 기획 미비점의 범위가 작으면 기획 요구사항을 급히 보완하여 목표 배포일정에 해당 기능을 출시할 수 있었습니다. 하지만 제품의 결함과 오류를 발견하며 집중해야 할 QA 기간에 기획 미비사항까지 대응하는 것은 현실적으로 힘들었으며, 이러한 이슈가 발생한 경우 대부분 배포 일정 지연으로 이어졌습니다.





회고를 통한 테스트 케이스의 역할 재정의


프로젝트 관리, 테스트 케이스의 중요성

속되는 주요 프로젝트 지연으로 테크 어드바이저 김형래님(a.k.a 줄기세포 개발자) 의 제안에 따라, 회고에서 해당 이슈를 검토하기로 했습니다. 프로젝트 지연 관련해서 포털 기업의 기획서처럼 사전에 기획서를 매우 세부적으로 정의하는 것은 기존에 팀이 추구하던 업무 방식과 속도에 적합하지 않은 것으로 판단했습니다.


대신 QA 담당자 윤수완님께서 테스트 케이스 정의를 기획서가 최초 작성이 완료된 시점에 미리 작성할 것을 제안주셨습니다. 실제 개발을 시작하기 전에 테스트 케이스를 기반으로 기획서의 주요 유저 스토리를 점검하여 추후에 발생할 수 있는 변경 범위를 줄이자는 것이 취지였습니다.


팀은 여러 개의 프로젝트를 진행하고 있어, 기존 업무 호흡에서 테스트 케이스를 사전에 작성하고, 이를 리뷰하는 업무 방식에 적응하지 못했습니다. 하지만 일정 기간의 과도기를 거치면서 테스트 케이스를 사전에 검토하는 프로젝트 관리 프로세스가 안착하게 됐습니다.


본 포스팅은 프로젝트 관리에 있어 테스트 케이스의 중요성과 테스트 케이스를 통해 기획서를 사전에 리뷰하는 것이 프로젝트 가시성과 리스크 관리에 어떻게 도움이 되는지 실제 프로젝트 사례를 통해 설명드리고자 합니다.






안녕하세요. 지그재그 팀에서 QA 업무를 담당하고 있는 윤수완입니다.


제품 개발 프로세스에서 테스트 케이스를 작성하고 수행하는 목적은 무엇 일까요? 바로 제품 개발 과정에서 발생한 버그가 사용자에게 전달되는것을 예방하는것입니다. 그렇다면 테스트 케이스의 작성과 수행을 통해 찾아낼 수 있는 버그의 종류는 무엇이 있을까요?




테스트 케이스로 발견할 수 있는 버그 유형


소프트웨어 버그는 발생 원인에 따라 크게 세 가지로 분류 할 수 있습니다. 개발 결함으로 인한 버그, 기획 미비로 인한 버그, 기획 오류로 인한 버그 입니다. 여기서 기획 오류는 기획 명세 자체의 오류 또는 기획 이해의 오류에 기인하는 버그를 의미합니다.


실제로 프로젝트 기간에 보고되는 버그 중에서 개발 결함으로 인한 버그는 생각보다 적습니다. 프로젝트를 들여다보면 개발 구현 범위 자체에 집중하면서 놓치는 사용성 시나리오가 늘 존재합니다. 또, 꼼꼼하게 문서화 해두는 개발 문화 속에서도 팀원 개개인이 기획 의도를 해석하는 관점에 따라 PM의 의도가 잘못 구현되는 경우를 종종 접할 수 있습니다.


실무에서 테스트 케이스를 직접 작성하거나 수행해보셨다면 ‘테스트 케이스 문서'라는 단어를 들었을 때, 수행절차와 기대결과로 구성된 문서를 떠올리실 것으로 예상됩니다. 또는 어떤 분들은 테스트 케이스 문서를 테스트 절차 나열, 테스트가 필요한 기획 요구사항을 옮겨둔 문서로만 생각할 수도 있습니다. 이렇게 테스트 케이스를 단순히 테스트 수행을 위한 도구 또는 체크리스트로 바라본다면 테스트 케이스의 역할을 '개발 결함으로 인한 버그만을 찾아내는 것'으로 한정지을 수 밖에 없습니다.


하지만, 테스트 케이스를 작성하고 수행하는 과정을 들여다보면, 개발 결함을 찾아내는 것보다 훨씬 넓은 범위의 버그들을 사전에 발견하여 예방하는 도구로 생각 할 수 있습니다.




제품 개발 프로세스에서 테스트 케이스


테스트 케이스 작성 및 수행과정은 프로세스 전반에 걸쳐 수행됩니다.   

1. 기획 문서 리뷰
기획 또는 디자인 문서를 리뷰하며, 이해가 어려운 명세에 대한 질의응답 등을 통해 잘못된 기획 명세 또는 잘못된 이해로 인한 버그가 발생할 수 있는 요소를 점검하고 예방합니다.

2. 플로우차트 및 테스트 케이스 작성
기획서를 기반으로 플로우 차트를 그리며, 요구사항의 기획 단계에서 생각하지 못한 시나리오를 점검하고 예방합니다. 해당 차트를 기반으로 테스트 케이스를 작성합니다.

3. 내부 리뷰
개발자, PM, 테스터 등 프로젝트 내 팀 구성원들이 테스트 케이스의 적정성을 점검하며, 잘못된 요구사항 이해로 인한 오류를 점검합니다. 또한, 프로덕트 관점에서 기술적 정의를 문서화하고, 팀 구성원들의 커뮤니케이션 브릿지 역할을 함으로써 커뮤니케이션 비용을 절감합니다.

4. 테스트 케이스 수행
테스트 케이스를 직접 수행하며 Pass / Fail 여부를 확인하고 코드 오류를 점검합니다.

위와 같은 과정을 살펴봤을 때, 테스트 케이스를 통해 세 가지 유형의 버그를 모두 예방하고 점검할 수 있다는 것을 알 수 있습니다. 또, 테스트 케이스는 테스트 수행만을 위한 도구가 아닌 프로덕션의 품질 향상을 위한 활동의 산출물이라고 할 수 있습니다.




지그재그 팀의 테스트 케이스 작성 사례


테스트 케이스 작성 및 버그 예방 사례를 함께 살펴보면 조금 더 이해가 잘 될 것 같습니다.


지그재그 연령대 필터링 검색 화면

최근에 검증한 프로젝트 중 지그재그 검색에 연령대(전체 연령대, 10대, 20대, 30대) 속성을 설정할 수 있는 기능을 추가해, 사용자가 연령대별로 필터링된 검색결과를 확인할 수 있도록 지원한 프로젝트가 있습니다.


해당 프로젝트의 QA를 위해 아래 예시 이미지와 같이 테스트 케이스(전체 테스트 케이스 중 일부)를 작성했습니다.

예시) 테스트 케이스 작성

테스트 케이스를 작성하는 과정에서 기획 요구사항이 잘못 이해될 수 있는 요소를 찾아내고 점검할 수 있었습니다.


테스트 케이스 작성을 통해 발견한 이슈는 지그재그 검색 결과에 노출되는 상품 중에서 10대, 20대, 30대 연령대 속성이 부여되지 않는 케이스입니다. 그래서 사용자가 검색결과에서 연령대 속성을 '전체 연령대를 선택했을 때'와 '10대, 20대, 30대의 연령대를 모두 선택했을 때'의 검색 결과가 다를 수 있다는 것을 확인했습니다.


이슈가 되는 사항을 위 이미지의 다섯번째 케이스를 작성하는 과정에서 고민하게 되었으며, 확실한 기획 정의를 위해 이슈레이징 하여 프로젝트 내 팀원들과 빠르게 공유하여 요구사항을 정리할 수 있었습니다.

만일 해당 이슈가 테스트 케이스 작성을 통해 사전에 이슈레이징되지 않았다면, 기능 개발 과정에서 연령대 속성을 '10대,20대,30대 모두 선택하는 케이스'에 해당하는 기획 미비점을 논의했을 것이며, 이는 앞서 반복했던 프로젝트 일정 지연의 리스크로 이어질 가능성도 존재했을 것입니다.


이상, 프로젝트 관리와 테스트 케이스의 중요성에 대한 설명이었습니다. 다음에 또 다른 주제로 찾아 올게요~ 감사합니다!! 




프로프로젝트 관리, 테스트 케이스의 중요성젝트 관리, 테스트 케이스의 중요성프로젝트 관리, 테스트 케이스의 중요성

매거진의 이전글 개발자들의 언어 적응기 (with MC헨리)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari