테스티드만의 테스트 방식과 향후 로드맵

테스트 자동화에 관심이 많은 독자라면 아마도 클라우드 기반 디바이스 테스트 서비스에 대해서는 잘 아시리라 생각된다. 이들 서비스들은 저마다 테스트 자동화라고 부르고 있는데, 그 자동화에 대한 범주가 제각각이라 아마 혼란을 겪으신 독자들도 계시리라 생각된다. 테스트 자동화 범주는 크게 세부류로 나눌 수 있겠다. 첫째, 로보티움이나 셀레늄 스트립트 코드로 원하는 테스트 명령을 프로그램 한 후에 이를 실행하는 방식인데, 해외에서 일반적으로 사용되는 방식이다. 이 방식은 짐작하시는 바와 같이 테스트 스크립트 언어에 대한 이해와 코딩 스킬을 가진 테스터만이 수행할 수 있는 까다로운 방식이라 국내와 같이 테스트 인력이 부족하여 테스트 환경이 열악한 곳에서는 거의 사용되지 않고 있다. 둘째, 레코딩 & 플레이백 방식이 있다. 이것은 최초에 한번은 테스터가 직접 테스트를 수행하고 이를 테스트 레코더가 마치 녹화하듯이 기록해 두었다가, 다른 디바이스를 대상으로 플레이백시켜 자동 테스트를 수행케 하는 기술이다. 그러나 이 기술 역시, 디바이스 종류마다 화면 크기 및 기능 등의 차이가 있어서, 플레이백이 제대로 작동 안되는 경우가 많아 불편하여 잘 사용되지 않는다. 셋째, 몽키테스트 같은 무작위 입력 테스트가 있다. 이것은 화면상의 임의의 위치를 자동으로 터치 시켜서 크래시나 무반응을 테스트하는 것으로 성능 테스트를 위해 일부 사용될 수 있는 것이며, 전체 기능을 살피는 기능 테스트 용도로는 사용되긴 어렵다. 이렇게 지금까지 다양한 의미에서의 테스트 자동화 솔루션들이 있으나, 개발자와 테스터의 마음을 사로잡는 매력적인 솔루션은 없었다.

한편, Testyd는 자동 메뉴 탐색 기술 기반의 테스트 자동화 기술로 컴퓨터가 스스로 판단하여 화면 내의 버튼 및 입력 화면을 검출하여 자동으로 누르고 입력하여 테스트를 진행해 나가는 기술로 기존의 테스트 자동화 기술과는 근본적으로 차별되는 최첨단 기술이다. Testyd의 몇가지 특징을 좀 더 자세히 살펴보면 다음과 같다. 아래 [그림1]에 보인바와 같이 우선 개발자나 테스터는 자신의 apk를 Testyd 서버로 업로드 하면, 서버가 이를 기 출신된 수백대의 실제 디바이스에 설치한다. 이때 서버는 Testyd Agent를 같이 함께 디바이스에 설치하여 Agent가 메뉴와 입력창을 자동으로 찾아 실행시키도록 한다. 즉, 사람이 할 일은 고작 파일을 업로드하는 것, 입력 화면에 들어가야 할 id와 password 등 기초적인 정보를 사전에 입력하는 것이 전부이다. 테스트 스크립트 언어를 몰라도 되는 것이고, 귀찮게 테스트 과정을 녹화할 필요도 없고, 녹화된 것이 다른 단말 테스트 할 때 실행이 안되면 어쩌나 걱정할 필요도 없다. 또한 몽키테스트처럼 아무것이나 누르는 것이 아니라 눌러야 할 메뉴만을 정확하게 찾아서 누르는 것이므로 기능 테스트까지 할 수 있는 그야말로 종래 기술의 단점을 극복한 첨단 기술인 것이다.

뿐만 아니라 Testyd는 탐색한 메뉴를 트리 형태로 보여주고, 크래시, 무반응, 지연반응, 에러팝업 발생 위치를 메뉴 트리 내에 표시를 해 주어 테스터가 편리하게 문제를 파악할 수 있도록 해 준다. 또한 문제의 화면을 클릭하면 문제 발생 순간을 기록한 로그 데이터를 볼 수 있어서 개발자가 편리하게 문제를 해결 할 수 있도록 해 주기까지 한다.

테스티드가 수행하는 테스트의 프로세스
[그림1] Testyd를 통한 테스트 프로세스 개념도

그렇다면 Testyd는 어떻게 쓰면 좋을까? 저자는 우선 개발자들의 자주검증을 돕는 툴로 활용되면 좋겠다는 생각이다. 잘 아시겠지만 개발자들은 빠듯한 일정으로 항상 바빠서 자주검증을 할 새가 거의 없다. 이럴 때 Testyd에 개발중인 apk를 올리고, 타겟단말은 가장 많은 고객이 있는 단말 1~3종으로 하여 테스트를 진행시킨다. 테스트가 진행되는 동안 개발자는 계속 개발을 진행한다. 잠시 후에 Testyd는 크래시, 무반응, 지연반응, 에러팝업 위치를 메뉴트리를 통해 개발자에게 알려준다. 개발자는 그 메뉴를 클릭하여 로그를 확인하고 수정 개발을 한다. 그리고는 또 수정된 apk를 Testyd에 올려서 자동 테스트를 진행시켜둔다. 이렇게 반복되는 동안 지금까지 경험하지 못했던 훌륭한 자주검증이 완료되게 된다. 이제 더 이상 개발자들은 시간이 없어서 자주검증을 못했다는 말을 하긴 어렵게 되는 것이다. 또 다른 활용 방안은 당연히 테스트 팀에서의 일일 것이다. 앞서 언급했듯이 국내는 해외 대비 테스트 인력이 매우 부족하다. 그래서 app의 기능이 많고 복잡한 경우 모든 기능을 테스트 하기 어렵고, 또한 기 출시된 모든 단말을 테스트 하기 어렵다. 이럴 때, 테스터의 손이 미치지 못하는 기능 테스트와 단말 테스트를 Testyd에 맡기는 것이다. 테스터 만큼 영리하게 테스트 하지는 못하겠지만 사람이 실수로 빠트린 메뉴도 꼼꼼하게 탐색하여 우직하게 밥도 안 먹고 잠도 안 자가며 테스트를 해 주니 기대 이상의 성과를 가져다 줄 것이다.
앞으로 Testyd는 기능 테스트를 통한 크래시, 무반응 검토 외에, 이미지와 오디오 인식을 통한 화면 및 오디오 완결성 테스트, 네트웍 및 메모리 제약에 따른 테스트 등을 지원하여 더욱 영리하게 테스트를 할 수 있도록 함은 물론 사람이 하기 어려운 제약 환경 테스트도 지원하여 테스터의 궂은 업무를 대신해 주는 놀라운 Testyd로 발전할 예정이다.