모바일 자동화 여정 - 시작과 새로운 도전
안녕하세요.
모바일 자동화에 대한 저의 지난 여정과 앞으로 나아갈 방향에 대해 이야기를 나누고자 합니다.
모바일 자동화의 첫 경험
제 첫 모바일 자동화 경험은 2014년 Appium이라는 프레임워크를 알게 되면서 시작되었습니다. 당시 기존의 GUI 자동화 도구들과 달리 Appium은 CLI와 코드 기반으로 이루어져 있었습니다. 국내 참고 자료가 부족한 상황에서 혼자 Android 자동화 작업을 완료하기까지 많은 어려움이 있었습니다. 이후 기본적인 동작과 더불어 Parallels를 통해 한 번에 4대 이상의 단말을 동시에 돌리고, 각 결과에 대한 리포팅 시스템을 구축하여 실제 앱 릴리즈 프로세스에 맞춰 자동화를 수행하고 결과를 도출할 수 있도록 프로세스화했습니다.
2018년 요기요 QA를 시작하면서 익숙했던 Appium을 사용해 Android와 iOS 모두에서 자동화 구현을 진행했습니다. Jenkins CI 서버를 구현하고 운영하여 배포와 테스트가 자동으로 이루어질 수 있도록 시스템화했습니다.
문제점과 해결 과정
그러나 리소스 ID 누락 및 변경으로 인한 테스트 케이스 수행 실패와 테스트 시작 지연 등의 문제가 있었습니다. 테스트를 수행하고 나서야 기존의 리소스 ID가 누락 또는 변경된 것을 확인할 수 있어, 수정 후 다시 테스트를 수행해야만 1차 결과를 얻을 수 잇었습니다. 이를 개선하기 위해 Native 테스트 프레임워크로 전환하는 시도를 했습니다. Espresso(Android)와 XCUITest(iOS)로 전환하여 자동화를 구현한 결과, 이전에 발생했던 두 가지 문제점을 크게 개선할 수 있었고, 기존 2주 1회 배포를 1주 1회 배포로 단축하는 데 큰 영향을 주었습니다.
Appium과 Native 테스트 프레임워크의 비교
Appium을 사용한 Black Box 자동화와 달리, Native 테스트 프레임워크를 사용한 White Box 자동화는 몇 가지 장점이 있습니다. 필요한 리소스 ID를 직접 삽입할 수 있고, 테스트 수행없이도, 빌드 과정에서 누락되거나 수정된 리소스 ID를 즉시 추적할 수 있어, 테스트 시작을 빠르게 할수 있었습니다. Appium의 경우 테스트를 모두 돌려봐야 리소스 ID 문제를 확인할 수 있었습니다. 다만 White Box 자동화는 개발 프로세스와 동일하게 진행해야 하므로, 매주 1회 배포에 맞춰 유지보수를 해야 했습니다. 유지보수가 제대로 되지 않으면 개발팀에서도 빌드 시 에러가 발생하여 시간에 쫓기게 되었습니다.
또한, White Box 자동화는 앱 소스내 리소스를 직접적으로 접근가능하여 자동화를 구현할 때 많은 이점이 있었지만, 접근 제한과 자동화 구현 난이도가 높아져 제한된 인원만이 스크립트를 구현할 수 있었습니다. 이로 인해 전체적인 테스트 커버리지 향상에 어려움이 있었습니다.
Katalon 도구를 통한 코드 없는 자동화
이후 최대한 코드 없이 누구나 자동화 스크립트를 작성할 수 있도록 Katalon이라는 도구를 사용했습니다. POM 패턴을 적용해 각 화면별 페이지에 필요한 함수들을 모아두어, 누구나 쉽게 사용할 수 있게 했습니다. Appium을 베이스로 한 도구여서 1개월 만에 기존 코드를 변환할 수 있었습니다. 이로써 단기간 내 높은 테스트 커버리지를 확보할 수 있었습니다.
새로운 도전: API 및 GPT를 활용한 자동화
여기까지가 제가 걸어온 모바일 자동화의 첫 번째 여정입니다. 이제는 기존의 문제들을 해결하고, 보다 향상된 테스트를 위해 두 번째 여정을 떠나고 있습니다.
요즘 비즈니스 로직들은 백엔드에서 수행되어 해당 데이터만 API를 통해 클라이언트로 전달됩니다. 이에 별도의 API 서버를 만들고, 클라이언트로 전달되는 데이터와 동일한 로직으로 생성된 데이터를 스크립트에 활용하여 기존의 리소스 ID 의존성을 많이 낮추고 있으며, 리소스 ID 누락 및 변경에 따른 스크립트 오류율을 줄이고 있습니다. 최근 GPT를 활용하여 웹 자동화의 self-healing을 착안하여, 해당 화면의 페이지 소스를 주기적으로 폴링해와 변경된 부분을 diff하여 이를 GPT가 파악하여 수정하도록 하는 것입니다. 또한, 기존 작성된 스크립트들을 활용하여 특정 시나리오에 대한 자동화 스크립트를 GPT가 생성하도록 하여 생산성을 최대한으로 올리고 있습니다.
또한, 이미지 비전 기술의 발전으로 손쉽게 스크립트에 적용하고 있으며, 앞으로도 저의 모바일 자동화 두 번째 여정이 더욱 기대됩니다.
이 글을 통해 제가 진행한 모바일 자동화 작업에 많은 분들이 관심을 가져주셨으면 좋겠습니다. 감사합니다.