부득이하게 Jira, Asana, Trello를 쓰지 못할 때
소프트웨어 개발은 끊임없는 테스트와 검증을 필요로 합니다. 그중에서도 대규모 프로젝트의 경우, 체계적인 테스트 케이스 작성과 테스트 수행 관리가 성공적인 프로젝트 완료에 핵심적인 역할을 합니다. 이번 글에서는 구글 시트(Google Sheet)를 활용하여 대규모 테스트를 어떻게 관리할 수 있는지, 테스트 케이스 작성부터 실제 테스트 수행까지의 과정을 알아보겠습니다.
테스트는 전문적인 업무 영역으로, 소프트웨어 제품에 대한 분석을 바탕으로 테스트를 설계 및 수행하여 기업이 설정한 제품의 품질 목표를 달성하기 위해 수행합니다.
물론 Jira, Asana 등의 티켓 발행 및 이슈 관리 서비스를 이용한다면 편리하겠지만, 규모가 작은 기업에서는 (특히 자사 서비스를 개발하는 것이 아닌, SI 프로젝트를 주로 담당하는 기업에서) 엑셀 또는 구글 시트로 테스트 케이스를 작성하고 테스트 결과 및 처리를 관리하는 경우가 많습니다.
사실 아래와 같은 상황에서는 시트로 테스트 수행을 관리하는 것은 권장하지 않습니다.
비전문가가 테스트를 수행하면 테스트 케이스를 빠뜨리거나 부정확하게 작성할 수 있으며, 테스트 결과의 해석이나 결함의 식별에 어려움이 발생할 수 있습니다.
복잡한 테스트 환경에서는 결과의 일관성과 신뢰성이 떨어질 수 있습니다. 이는 테스트의 효율성과 정확성을 저하시킬 수 있습니다.
동시에 많은 테스터가 작업하는 경우, 테스트 케이스의 중복, 충돌 등이 발생할 수 있습니다. 테스트 결과를 종합하고 관리하는 것이 어려워집니다. 또한, 각 테스터 간의 일관된 테스트 품질을 유지하기도 어렵습니다.
유사한 테스트를 수행한 경험이 없는 경우, 새로운 프로젝트에서 일관된 접근 방식과 기준을 정의하기 어려울 수 있습니다.
이 대신 잇몸으로, 어떻게든 위와 같은 상황에서 구글 시트 또는 엑셀 등으로 테스트 수행 및 처리 결과를 관리해야 할 때 사용하는 방법과 간단한 함수를 소개하겠습니다.
주의사항: 모든 프로젝트는 각 조직과 프로젝트의 상황과 성격에 따라 다릅니다. 아래 예시는 테스트 케이스 작성에 참고로만 활용하시고, 반드시 상황에 맞는 테스트를 계획하시기 바랍니다.
테스트 환경, 투입 인원, 일정, 커뮤니케이션 방법 등 테스트 전반에 대해 계획을 수립합니다. 테스트 환경의 경우, 테스트를 수행하는 기기의 조건과 및 브라우저 등을 정의하여 테스트 환경을 예측할 수 있도록 설정합니다. 투입 인원이 다수인 경우, 각 투입 인원의 테스트 수행 경험 및 제품 이해도 등을 파악하여 적절한 배치와 테스트 항목 배분이 되도록 합니다.
먼저 무엇(What)을 테스트할 것인지 구체화해야 합니다. 환경별, 화면별, 기능별 테스트 항목을 마인드맵 형태로 구조화합니다. 이렇게 작성한 마인드맵은 동료에게 공유하여 누락 및 중복이 없는지 검토를 받는 것이 좋습니다. 동료 검토가 끝나면, 개발부서와 PM(Project Manager)에게 공유하여 최종 검토를 받습니다.
대략적인 테스트 시나리오 테스트 수행 인원이 여럿인 경우, 각 테스터의 테스트 수행 환경에 대해 정확히 파악하고 테스트 항목을 배분하는 것이 중요합니다. PC와 Mobile 환경을 모두 테스트하는 경우, 각각의 정보를 모두 수집받습니다. PC의 경우 OS와 버전 정도를 수집받고, Mobile의 경우 OS, 기기 모델명, OS 버전을 수집받습니다. 필요에 따라 브라우저 버전 정보 등도 추가로 수집받을 수 있습니다.
이어서 테스트 시나리오 마인드맵을 첨부하여 테스트 계획(참여 인원, 일정 등)에 대해 간략하게 문서 등으로 정리하여 테스트 참여자 전원에게 공유합니다. 예시의 테스트의 경우, iOS와 Mac 경우 브라우저를 Safari로만 테스트하고 AOS와 Windows의 경우 다수의 브라우저를 테스트하기로 했기 때문에, AOS와 Windows 테스터의 경우 테스트 항목 개수에 가중치를 주어 테스트에 대한 부담을 덜고자 했습니다. 동일한 테스트 항목이나, 테스트 횟수나 조건에 차이가 있는 경우 해당 차이에 대해 충분히 알리고 협조를 구해야 합니다.
테스트 시나리오 마인드맵이 최종 검토 완료 되면, 테스트 시나리오를 각 케이스 단위별로 세분화하여 작성합니다.
먼저 전체 테스트 내용을 작성할 파일을 생성하여 1개 시트 내에서 아래와 같이 열을 구분합니다.
화면(메뉴): 테스트가 수행되는 화면(또는 메뉴)를 명시합니다. 이때, 각 화면명 미리 데이터 확인 기능을 활용해 입력할 내용을 등록해 두면 오타 및 중복 작성을 줄이고 빠르게 작성할 수 있습니다.
테스트 케이스: 테스트 케이스의 명칭을 입력합니다. 기능, UI 요소 등으로 나눌 수 있습니다. '회원가입', '로그인', '예약하기', '헤더', '푸터'와 같이 나눕니다.
테스트 수행 단위: 각 케이스에 해당되는 수행 단위에 대해 작성합니다. '예약하기'가 테스트 케이스라면, '지역 선택 및 입력', '날짜 선택 및 입력', '인원 선택' 등으로 각각의 성격이 다른 테스트 항목으로 구분할 수 있습니다.
수행 내용 세부: 테스트 수행 단위를 잘게 나누어, 실제 테스터가 수행해야 하는 Action(+Data)를 순서대로 작성합니다.
예상 결과: 수행 내용 세부를 동일하게 이행했을 때 예상되는 결과(Expected Result)를 작성합니다.
위와 같이 열을 구분한 뒤, 테스트 시나리오 마인드맵을 바탕으로 각 테스트 케이스/단위/세부 수행 내용을 작성합니다. 이 시점에는 테스트 환경(기기, 운영체제, 브라우저)은 아직 고려하지 않고, 유효한 테스트 항목과 내용을 작성하도록 합니다. 작성 중반부터 완료까지 비주기적으로 동료에게 검토를 요청하여 누락 및 중복 항목이 없는지 체크하며 작성합니다. 또한 수행 내용과 예상 결과에 대한 설명이 부족하지 않은지 확인하며 보완해 나갑니다.
여기서는 생략했으나 그 외 테스트 수행에 필요한 내용(테스트 단위 규모, 중요도, 비고 등)을 작성해 두면 좋습니다.
각 항목을 명칭이나 세부 정의 내용으로 부르며 트래킹 하는 것은 어렵기 때문에, 관리를 용이하게 하기 위해 각 케이스와 단위의 번호를 생성합니다. 이 테스트에서는 케이스 번호를 상위 번호로 하여 4자리 수로 생성하고, 단위 번호를 케이스 번호의 하위 번호로 하여 2자리 수로 생성했습니다. 테스트 케이스 명과 수행 단위 명의 일치 여부를 기준으로 자동으로 케이스 번호를 생성하는 함수는 아래와 같습니다.
케이스 번호 열 작성법
예시에서는 케이스 번호 열은 D열, 테스트 케이스 열은 E열입니다.
먼저, 가장 첫 번째로 작성한 테스트 케이스 행의 번호는 '1'로 직접 입력해 둡니다.
그다음 행부터는 아래와 같이 함수를 입력합니다.
=IFS($E3=$E2,$D2,$E3<>$E2,$D2+1)
이렇게 하면 IFS 뒤로 작성한 조건을 충족하는 경우 해당 값을 반환하게 됩니다. 따라서, 현재 행의 테스트 케이스 명이 이전 행의 테스트 케이스 명과 같다면(동일한 케이스라면) 같은 케이스 번호를 반환하고, 케이스명이 다르다면(다른 케이스라면) 이전 행의 케이스 번호에 1을 더한 값을 반환합니다.
테스트 단위 번호 열 작성법
예시에서는 케이스 번호 열은 D열, 테스트 단위 번호 열은 F열, 테스트 단위 열은 G열입니다.
케이스 번호와 마찬가지로, 첫 번째로 작성한 케이스 번호는 '1'로 직접 입력해 둡니다.
그다음 행부터는 아래와 같이 함수를 입력합니다.
=IFS($D3=($D2+1),1,$G3=$G2,$F2,$G3<>$G2,$F2+1)
이렇게 하면 현재 행의 케이스 번호가 이전 행의 케이스 번호보다 1 증가한 경우(다른 케이스인 경우), 단위 번호를 '1'로 반환합니다. 현재 행의 테스트 단위가 이전 행의 테스트 단위와 같은 경우(동일한 단위인 경우), 이전 행의 단위 번호를 반환합니다. 그리고 현재 행의 테스트 단위가 이전 행의 테스트 단위와 다른 경우(동일한 케이스 내의 다른 단위인 경우) 이전 행의 테스트 단위 번호에 1을 더한 값을 반환합니다.
이런 식으로 함수를 입력해 두면, 자동으로 각 케이스 명칭과 단위 명칭의 차이에 따라 번호가 생성되어, 수기 입력을 하지 않아도 됩니다.
이제 테스트 환경에 대한 정보를 작성해야 합니다. 여기서는 기기 유형(Desktop PC, Mobile Phone), OS 유형(운영체제), 브라우저명 등을 작성하여 각 테스트 환경별로 테스트 항목이 누락되지 않도록 합니다. 이때 데이터 확인 기능을 활용하여 내용을 미리 등록해 두면 내용을 좀 더 빠르게 입력할 수 있습니다.
이제 각 테스트 항목별로 환경별로 나누어 테스트가 필요한 경우와 개수를 확인하여 미리 작성한 내용(행)을 복제하여 환경 정보를 입력할 수 있도록 합니다. 테스트 환경이 복잡하지 않고 제한되어 있으며 하나의 행에서 테스트 결과를 모두 입력할 수 있다면 굳이 분리할 필요는 없으나, 그렇지 않은 경우 분리하는 것이 추후 이슈 관리에 조금 더 용이합니다.
테스트 수행 환경까지 모두 입력했다면, 이제 세부 수행 항목 (각 1개 행) 별 고유번호를 생성합니다.
테스트 단위별 고유 번호를 생성하는 방식은 여러가지가 있으나, 이 테스트에서는 케이스별 번호와 단위별 번호를 생성하고, OS명의 맨 앞글자를 따서 조합하는 방식으로 만들었습니다.
고유번호 자동 생성
예시에서는 케이스 번호 열은 D열, 테스트 단위 번호 열은 F열, OS 열은 M열입니다.
A열에 새로운 열을 삽입하고, 아래와 같은 함수를 입력합니다.
=TEXTJOIN("-",false,$D2,$F2,(left($M2,1)))
작성하다 보니 길이 많이 길어져, 이어지는 글로 나누어 작성하겠습니다.