QA를 보다 효과적으로?
QA를 보다 효율적으로?
들어가는 말
QA란 서비스가 배포되기 전 사용자가 느낄 수 있는 불편함 혹은 서비스 자체에 기능적 결함등을 확인 할 수 있는 마지막 관문과 같은 역할을 합니다. 이는 서비스의 품질을 보장하고, 사용자가 안정적이고 만족스러운 경험을 할 수 있도록 하는 중요한 단계입니다. 만약 QA가 온전히 진행되지 않고 사용자가 서비스를 마주하게 된다면, 서비스에 대한 신뢰가 무너지는 최악을 맞이할지도 모릅니다. 그렇기 때문에 QA는 꼼꼼하게, 그리고 체계적으로 진행되어야 합니다. 이에 대한 고민의 결과로, QA 프로세스를 개선하기 위한 몇 가지 방안을 생각하게 되었습니다.

현재 BCSD의 QA 방식은?
각 팀(User, Campus, Business)별 QA 방식이 조금씩은 모두 다르지만 그 결은 같다고 느껴졌습니다.
각 팀원들이 특정 혹은 여러 기능에 대한 모든 경우의 수를 체크하고 실행시켜 보는 방식으로 진행하고 있습니다. 이렇게 발견한 이슈들은 모두 문서화를 통해 공유하고 핫픽스로 즉각적으로 해결하거나, 필요에 따라 후속 작업으로 처리하게 됩니다.

이러한 방식은 개별 기능에 대한 집중적인 테스트를 가능하게 한다는 점에서 이점이 있을 수 있습니다. 그러나 동시에 아쉬운 점도 존재합니다.
- 의도와 실수의 경계가 모호해 질 수 있다.
- 불필요한 리소스 소모
- 경우의 수 파악 및 문서화 과정의 실수 발생
위 문장을 조금 풀어서 예시와 함께 이야기해보려고 합니다.
-
의도된 기능인지 개발 과정에서의 실수인지 파악하기 어렵습니다.
기능의 동작이 상상 혹은 기획(기능 명세)과 다른 경우, 이것이 추후에 수정이 된 부분인지 오류인지를 파악하기 위해 불필요한 시간이 들어갈 것입니다. QA에 개발에 참여한 모든 인원과 함께 진행해야하지만 그러지 못할 때를 생각한다면, 해당 기능의 Issue, PR, 관련 소통 기록 등을 보며 실수인지 수정된 기획인지를 파악해야 할 것입니다.
-
불필요한 리소스 소모
1번에서 말한 문제점이 발생했을 경우 이를 해결하기 위해 담당자를 찾고 커뮤니케이션하는 비용이 발생할 것입니다. 이는 전체적인 서비스의 배포 기간을 딜레이 시킬수도 있으며, 불필요한 수정등을 야기할 수 있습니다.
-
경우의 수 파악 및 문서화 과정의 실수 발생
모든 경우의 수를 파악한다는 것은 생각보다 매우 어려운 일일 것입니다. 빼먹는 경우도 있을 것이며, 문서화 과정에서 누락되는 부분도 있을 것입니다. 여러명에서 모든 사항을 문서화 한다 하더라도 이것을 검토하고 관리하는 어떤 추가적인 리소스가 필요할 것입니다.
위와 같은 문제점을 살펴보면, 현재의 QA 방식이 완전히 효과적이지만은 않다는 것을 느낄 수 있습니다. 들어가는 말에서 이야기 했던 것 처럼 QA는 서비스가 배포 되기 전 마지막 단계로 작은 빈틈이 서비스의 신뢰도와 직결되어 있습니다. 그렇기에 모두가 더 신경을 곤두세우고 진행될 것입니다. 이런 스트레스 강도가 높은 작업을 다른 방향으로 접근하여 위와 같은 문제점을 해결할 수 있는 방식을 모색할 필요가 있다고 느꼈습니다.

인수 테스트란?
앞선 문제를 개선하기 위해 저는 “인수 테스트”라는 접근 방식을 생각해보았습니다.
인수 테스트
: 사용자가 실제 서비스를 사용하는 것 처럼 실제 사용 시나리오를 기반으로 기능을 테스트하는 방법
단순히 개별 기능의 동작을 확인하는 것을 넘어, 서비스가 전체적으로 예상대로 동작 하는지 검증하는데 중점을 둡니다. 인수테스트는 나아가 서비스 유저 저니맵을 그릴 수 있는 기회도로 작용합니다. 이를 통해 사용자의 흐름을 예측하고 그 흐름에 이상이 없는지 확인할 수 있습니다.
예를 들어
-
유저가 회원가입을 합니다.
-
아이디 입력
-
비밀번호입력
-
비밀번호 재 입력
…
-
-
유저가 로그인을 합니다.
-
메인 페이지에 도착합니다.
-
복더방에 들어갑니다.
…
이렇게 시나리오를 기반으로 하면, 1차적인 기능 테스트가 보다 체계적이고 순조롭게 진행 될 것입니다.
(마치 참교 교재처럼 보고 따라갈 요소가 생긴다!)

단순히 코드의 오류를 찾는 것에서 나아가, 시스템이 실제 사용자에게 제공되는 순간들을 점검할 수 있는 것이 인수 테스트의 강점입니다. 또한, 여기서 약간의 바리에이션을 준다면, 사용자가 갑작스럽게 행하는 개발자가 예상하지 못한 동작을 시나리오 초기 단계에서 큰 부담 없이 예측하고 테스트할 수 있습니다. 이로써 다양한 상황에 대한 대비도 가능해지며, 보다 안정적인 서비스 제공이 가능해질 것입니다.
인수 테스트를 BCSD에 녹인다면?
한편으로는 "이미 기획이 짜여 있는데 시나리오가 왜 필요하지? 시나리오가 현재 기획과 무엇이 다른 거지?"라는 생각이 들 수도 있습니다.
