모바일 앱 테스트는 PC, 모바일 웹 테스트와 다르다. 웹 테스트는 브라우저에 종속되므로 브라우저의 종류, 화면의 크기 정도로 제한된 환경만을 필요로 하지만 모바일 앱 테스트는 다양한 단말 및 OS 플랫폼, 네트워크, 펌웨어의 버전 등 각 분류마다 다양한 환경이 필요하다.
사용하다 조금이라도 불편하거나 불만이 있다면 즉시 앱을 삭제하는 것이 대부분의 앱 사용자 패턴이다. 동일한 서비스를 제공하면서 안정적이고 편리한 경쟁 앱을 스토어에서 쉽게 찾을 수 있는 것이 현실이기 때문이다.
당신의 앱이 사용자의 스마트폰 속에서 계속 살아남기 위해서는 모바일 앱 테스트 과정을 지금보다 더 중요한 역할로 인식해야 한다.
이렇게 중요한 모바일 앱 테스트 과정에서 개발자와 테스터가 꼭 피해야 하는 7가지 실수를 설명하고자 한다.
처음 테스터가 실수하는 것은 MVP(Model + View + Presenter), MVC(Model + View + Controller) 및 MVVM(Model + View + ViewModel) 패턴과 같은, 개발 단계에서 활용하는 원칙을 모른 채 테스트하는 것이다. 더 나은 테스트를 위해서 QA 팀은 테스트 업무를 시작할 때 개발팀과 협력하여 모바일 앱이 구현되는 기술을 이해하고 진행해야 한다. 특히 모바일 앱은 반드시 목표 사용자 그룹을 위한 목적이 있으므로 그 목적을 중심으로 서비스가 어떻게 구현되었는지 이해할 필요가 있다. 이런 학습 과정을 통해 이해도를 높인 후 테스트 시나리오를 정의해야 한다.
모바일 앱의 이용 목적, 목표에 대한 이해가 없다면 필요성에 대해 평가하지 못할 수 있다. 따라서 개발자와 테스터는 테스트 업무가 시작될 때 테스트의 목적과 상세한 테스트 시나리오를 확립해야 한다. 이 과정을 통해 개발 및 테스트 업무를 일관된 프로세스로 수행할 수 있고 효율적인 테스트 과정을 통해 효과적인 결과를 달성하는 데 도움이 된다.
대부분의 테스터들은 모든 시나리오를 우선순위 없이 테스트한다. 이런 방식은 테스터들 간에 중복된 테스트 시나리오가 있을 확률이 높다. 결국 전체 테스트 시간이 길어지고 효율성은 떨어진다. 테스트 프로세스를 효율적으로 운영하기 위해서는 서비스 요구 사항과 중요성에 따라 시나리오와 테스트 우선순위를 지정해야 한다.
만약 모바일 앱 업데이트 과정에서 기능 변경 및 추가로 인해 이전 기능도 테스트 필요성이 발생했다면 테스터들은 전체에 대한 포괄적인 재 검증을 해야 한다. 이런 경우라면 수많은 테스트 상황을 포함해야 하므로 상당한 시간이 소요될 것이다. 더군다나 이 모든 것을 진행하기엔 주어진 시간이 부족하다면 어떻게 해야 할까?
다음과 같은 우선순위에 따라 단계별로 테스트를 실행하는 것을 추천한다. 각 단계별로 분리하여 진행하게 되면 시간과 인력을 줄이고 효율성을 높일 수 있다.
치명적 오류 테스트 단계(Blockers Stage)
이 단계는 모바일 앱의 핵심 기능을 테스트하는 과정이며 기본적이면서도 가장 중심이 되는 핵심 기능을 테스트하는 단계이므로 전체 테스트 과정에서 최우선 순위로 진행되어야 한다.
만약, 앱의 기능 중 어느 하나라도 정상적으로 작동하지 않는다면 테스트 과정을 멈추고 해당 기능의 문제 해결에 집중해야 한다. 모든 테스트 작업 중 최우선 순위는 해당 기능의 문제 해결에 부여되며, 그 문제가 해결된 다음에 다시 작업이 진행되어야 한다. 예를 들어 모바일 앱이 모바일 단말의 불특정 환경 혹은 특정 상황에서 실행이 되지 않는다면 전체 작업이 의미가 없기 때문이다. 치명적인 문제점을 가지고 다음 단계의 테스트를 진행하는 것은 테스트에 소요되는 시간 자원을 중복으로 투자하는 것과 같다.
핵심적 오류 테스트 단계(Critical Stage)
이 단계는 앱 사용자가 주로 이용하는 기능을 주요 범주로 하여 진행된다. 특히 사용자에게 앱 삭제를 유발할 정도로 사용자와 밀접한 관련성을 지니고 있는 기능과 서비스 시나리오를 테스트해야 한다. 사용자 이탈과 연관되어 있는 모든 상세 기능과 서비스 시나리오를 반드시 점검해야 되며 이 단계는 앞선 "Blockers" 단계가 정상적으로 종료된 후 진행하는 것이 바람직하다.
중요한 오류 테스트 단계(Important Stage)
이 단계는 경쟁 앱에서 제공되지 않는, 우리만의 고유한 기능 및 서비스 시나리오를 중심으로 테스트하는 단계이다. 이 단계에서 발생된 오류 사항들이 전반적인 작동에 큰 영향을 미치지 않고 우리의 고유한 기능이 불편함을 상쇄시키고도 남을 큰 이점이 있다면 즉시 출시하는 것이 탁월한 선택일 것이다. 반대로 중요한 오류라면 수정 후에 출시하는 것이 최선이다.
이 단계에서 중요한 것은 발생한 오류와 우리만의 모바일 이점을 각각 가치로 환산하여 판단하는 것이다.
하위 테스트 단계(Minor Stage)
이 단계는 UI 및 변경 없이 유지되고 있는 기능을 테스트하는 단계이다. 이 단계의 범위는 모바일 앱 사용에 큰 영향을 미치지 않을 것이기에 사용화 목표 기한이 짧다면 이 단계는 진행하지 않거나 발생한 오류 항목들을 출시 이후에 해결해도 무관하다.
정리하면, 모바일 앱 테스트는 서비스에 대한 이해를 기반하여 기능 항목을 검토해야 한다. 그리고 서비스에 영향력이 큰 기능 순으로 분류하여 단계를 만들고 우선순위를 부여해 진행한다면 테스트 업무에 투자하는 시간과 비용을 절약할 수 있다.
모바일 앱 테스트는 QA 팀이 일반적으로 수행하는 방법론 외에 추가적인 테스트 범위가 필요하다.
모바일 앱은 PC 웹, 웹 기반 애플리케이션 환경과는 다르다. 다양한 사용자의 단말 환경 및 서비스 이용 환경을 이해해야 한다. 그러기 위해서는 다음과 같은 추가 항목이 반드시 점검되어야 할 것이다.
모바일 단말 메모리 및 저장 용량 제한 테스트
대부분의 모바일 장치에는 일반적으로 4GB의 RAM과 64GB의 SSD가 탑재되어 있다. 이러한 제약사항으로 미리 파악하고 모바일 앱이 동작하는 단계에서 연산속도 및 저장 공간에 문제가 없는지 테스트를 해야 한다.
사용자 입력 환경 테스트
모바일은 외부 입력 장치(키보드, 마우스) 사용이 일반화되어 있지 않기 때문에 탭(tap), 스와이프(Swipe), 핀치 아웃 & 핀치(Pinch Out & Pinch In) 등과 같은 다양한 터치 동작으로 인터렉션 한다.
또한 Siri 및 Google Now와 같은 음성 도우미가 있다는 것도 고려해야 한다.
일부 삼성 이어폰의 핸드 제스처나 애플의 Airpod의 터치 제스처와 같은 특수 기능은 사용성을 낮출 수 있으므로 이런 관점에서 테스트가 진행되어야 하며 결과에 따라 개선 사항에 대한 아이디어를 얻는 기회가 될 수 있다.
모바일 앱 유형에 맞는 테스트
모바일 앱은 크게 Native, Hybrid 앱으로 분류할 수 있다. 이는 모바일 앱을 구현하는 방식으로 분류한 것이다. 하지만 때로는 Web Page를 삽입하는 등의 복잡하고 분류하기 어려운 구조로 만드는 경우도 있다. 반드시 테스트할 앱의 유형에 맞는 시나리오를 정의하고 진행해야 한다.
시스템 오류 또는 충돌 테스트
푸시 알림, SMS 수신, 앱이 실행 중이거나 통화가 중단될 때 앱이 응답하는지 테스트하는 것도 중요하다. 앱이 중단된 이후에 다시 실행되는 과정에서 정상적으로 재가동되는지, 다른 문제는 발생하지 않는지를 테스트해야 한다.
모바일 시장의 급성장으로 인해 새로운 모델의 스마트폰들이 빠르게 쏟아지고 있다. 이렇게 많은 종류의 단말은 모바일 앱 테스트의 가장 큰 과제 중 하나일 것이다. 모든 단말을 대상으로 테스트할 수는 없지만 목표 사용자 그룹의 지역, 선호하는 단말 기종과 모델은 반드시 테스트 범위에 포함되어야 한다. 다른 방법으로는,
1) 테스트 단말 범위를 넓히기 위해서 클라우드 기반의 기기 테스트 플랫폼 (예 : AWS Device Farm)을 활용하는 방법도 선택할 수 있지만 비용에 비해 결과의 만족감이 낮다는 단점이 있다.
2) 모바일 앱을 상용화한 후 성능 관리를 통해 오류가 발생되는 사용자 고객의 사용 패턴을 추적하고 그 데이터를 기반으로 테스트 단말 범위를 좁혀 집중할 수 있다.
테스트할 때 발생하기 쉬운 큰 실수 중 하나는 앱 출시 초기에 UX/UI에 대한 테스트를 소홀히 하는 것이다. 치명적인 문제를 발생하는 요소는 아니라고 생각해서 소홀히 하는 경우가 있는데 잘못된 생각이다. 모바일 앱의 UX/UI는 사용자에게는 앱의 첫인상과 같다. 첫인상에서 외면받으면 돌이킬 수 없듯이 사용자의 선택을 받기 위해서는 철저한 테스트를 통해 안정적인 인상을 심어줄 필요가 있다.
따라서 UX/UI 테스트는 모바일 앱을 출시하는 단계에서 높은 우선순위를 가지고 테스트를 해야 하며 테스트 시에는 사용자 시나리오와 예외 상항이 발생될 수 있는 시나리오를 가지고 많은 시간을 투자해야 한다.
UX/UI 만족도가 높은 모바일 앱을 만들기 위해서는 기획자와 디자이너, 개발자가 함께 기획 단계에서 프로토타입 앱 개발 도구를 활용해 각 파트의 의견을 통합적으로 담아내는 단계를 수행하는 것도 효율적인 방법이다.
클라이언트 - 서버 모드에서 작동하는 모바일 앱은 데이터 트래픽의 급격한 증가로 발생하는 연결 문제, 네트워크 환경 변화로 발생하는 문제에도 안정성과 연속성이 보장될 수 있는지가 중요하다.
만약 4G 네트워크에서 3G 네트워크로 변경되었을 때 사용 중인 앱 서비스가 동작이 중단되고 처음부터 다시 시작한다면 그 앱은 버림받을 확률이 높다. 이처럼 네트워크 환경에 따라서 서비스의 품질은 저하될 수 있지만 서비스 연속성은 반드시 보장해야 함을 명심하자.
테스트를 진행할 때 모바일 네트워크의 "가변성"을 고려한 엄격한 테스트를 진행해야 하나 다양한 유형의 네트워크, 다양한 위치 등 심도 있게 테스트하는 것은 현실적으로 한계가 있다.
위의 문제를 해결하기 위해 테스터는 네트워크 에뮬레이터를 사용할 수 있다. 네트워크 에뮬레이터를 사용하면 실제 네트워크 환경과 유사한 환경에서 시나리오를 테스트할 수 있을 뿐만 아니라 데이터 손실, 오류, 지연, 대기 시간이 길고 대역폭이 낮은 상황에 대한 점검도 함께 진행할 수 있다. 이 모든 것을 하드웨어 장치가 필요 없이 진행할 수 있으며 요구 사항에 따라 복제된 네트워크를 프로그래밍하여 위에 나열된 테스트 시나리오로 상황에 맞게 테스트할 수 있다.
큰 성공을 거둔 모바일 앱 서비스 중에 종종 개인 정보 유출 사고가 발생하는 경우가 있다. 원인은 개발 단계에서 여러 번 보안 테스트를 놓쳤기 때문이고 누구에게나 잠재되어 있는 보안 불감증도 주요한 하나의 원인이다.
출시 초기에는 사용자도 적고 형편도 여의치 않다 보니 보안 영역은 고려하지 않고 진행해 오다가 향후 보안성을 강화하기 위해 아키텍처를 변경하는 등의 많은 비용을 쓰는 경우가 있다. 이런 상황을 방지하기 위해 처음 상용화 단계에서 ‘애자일’ 개발 방법론과 같은 개발 프로세스를 도입하는 것도 좋은 방법이다.
모바일 앱 서비스가 안정적으로 출시된 후 사용자가 증가되는 과정에서 발생될 수 있는 심각한 오류 사항 및 이슈 중에 하나가 바로 보안임을 명심해야 한다.
모바일 테스트 과정에서 발생할 수 있는 7가지 체크 포인트를 확인하여 성공적인 모바일 앱에 꼭 필요한 앱 테스트 프로세스 체계 수립하고 성공 비즈니스의 도약에 도움이 되길 바란다.