2021년 12월, 모바일 마라톤 서비스 창업을 시작도 못해본 채 SW QA 직군에 다시 도전하게 되었다. WebdriverIO가 눈에 띄었다. 저걸 사용하면 웹 모바일 모두 구현 가능했다. 언어 문법도 정확히 모른 채 과제 발표에 필요한 테스트 코드를 구현했었다.
창업 준비를 하면서 나 자신이 너무 초라하게만 느껴지는 하루로 가득 찼던 시기가 있었는데, 그때보다 심적으로 힘들까 싶어, 입사만 시켜준다면 죽이 되든 밥이 되든 할 수 있다는 마음가짐으로 지원했었고 합격하게 되었다.
3개월 싱크 기간 동안 역량 밖의 미션을 부여받았지만 당시 개발자분들께서 정말 많이 도와주셨고 지쳐 갈 때쯤 힘이 되어주는 말씀을 건네는 CTO님 덕분에 무사히 통과하게 되었다.실무에서 코드 작성하는 일을 처음 시켜준 회사, 그리고 많은 것들을 배우고 느낄 수 있게 해 줬던 회사를 그만두게 되어 지금 생각해보면 너무 아쉽지만, 퇴사한 덕분에 헤어디자이너가 내 길이 아니란 걸 확실히 알았고, SW 품질 분야에서 근무하는 내 모습이 행복했었구나 라는걸 많이 느꼈다.
싱숭생숭한 마음으로 텅 빈 맥북을 다시 켰다. 머릿속이 깨끗이 비워진 것처럼 바탕화면도 깨끗했다. 무엇부터 시작할까 이전처럼 고민할 필요도 생각할 필요도 없었다. 내가 오늘 할 수 있는 가장 작은 것부터 잘개 쪼개서 차근차근 진행해야 했다.
터미널을 예쁘게 꾸며보고 개발에 필요한 기본적인 환경 세팅을 했다. E2E 테스트 자동화 환경 구축을 위해 Selenium과 Appium 구동에 필요한 Tool과 설정들도 마무리했다. 새로운 마음으로 TIL(Today I Learned) Github Repo를 생성했다. TIL이라고만 하니 뭔가 허전해서 SDET를 붙였다. README에 내가 가고자 하는 목표와 방향을 정리했다. 이슈 템플릿도 만들고 이슈 라벨도 생성하고 SDET TIL 보드도 만들었다. 오늘 하루 진행하고자 하는 Todo 리스트를 깃 헙 이슈에 생성하고 하나씩 처리하는 중이다.
최근에 이력서 정리와 더불어 Flutter모바일 환경에 대한 이해를 높이기 위해 Flutter를 학습하는 중인데, 'Flutter에서는 통합 테스트를 어떻게 진행할까?' 호기심에 공식 문서와 관련 서적을 읽어보니 Flutter 팀이 만든 통합 테스트 라이브러리가 존재했다. 모든 기능이 어떻게 서로 동작하는지 확인할 수 있고 심지어 앱 성능도 테스트할 수 있는 라이브러리다.
셀레니움 경험자라면 Flutter 통합 테스트 라이브러리가 보다 익숙할 텐데, 먼저 flutter_driver 패키지가 필요하다. flutter_driver는 실제 사용자를 흉내 내는 기능을 포함한다. 실제로 앱을 실행하면서 앱과 상호작용하는 것이다. 앱에서 스크롤하고 버튼을 누르는 모습을 확인할 수 있다. 위젯을 찾고 Matcher를 사용해서 expect 호출을 통해 테스트 결과를 확인한다. 셀레니움과 마찬가지로 테스트 전후로 플러터 드라이버를 연결하고 닫는 과정이 존재한다.
앞서 플러터 통합 테스트 라이브러리를 사용하면 플러터가 자동으로 앱을 프로파일링 할 수 있다고 하였는데, traceAction() 메서드로 테스트에 프로파일링을 지시하여 TimeLineSummay라는 객체로 결과를 출력하도록 지시한다. 위 과정을 통해 통합 테스트를 수행하면서 성능 지표를 기록하도록 앱에 지시하고 성능 데이터를 제공해준다. 애니메이션이 얼마나 부드럽게 실행되는지, fps는 몇으로 유지되었는지 등 UI와 관련된 정보를 제공하는데, 해당 결과를 통해 앱 성능의 병목 구간을 확인할 수 있다.(물론 실제 사용자 환경과는 다를 수 있지만 대략적인 유추가 가능하다)
Flutter 통합 테스트 라이브러리는 예전에 Detox라는 React Native 그레이 박스 테스팅 라이브러리와 비슷한 느낌을 많이 받았다. 특히 Appium과는 다르게 실제 서비스 중인 프로젝트에 테스트 구현을 해야 하는 것으로 파악되었다. Appium Selenium E2E 프로젝트는 실제 서비스 중인 프로젝트의 Repo와 독립된 곳에서도 구축 및 운영 가능하다.
Detox 셋업 당시 개발 환경에 대한 이해도가 부족했어서 많이 힘들었는데, Flutter는 직접 개발을 경험해보며 테스트 코드 구현까지 작업할 예정인지라 보다 수월할 것 같다.또한 Detox와는 다르게 Android 에뮬레이터, iOS 시뮬레이터 또는 실제 iOS / Android 기기를 테스트해볼 수 있기에 E2E 테스트에 속하는 Appium과 어떤 식으로 다른지, 어떤 유형의 결함을 발견해낼 수 있는지, Appium이 발견하지 못하는 결함을 찾을 수 있는지에 대한 분석을 해보려 한다. 앞으로의 커리어가 기대되고 설레는 요즘이다.