안녕하세요, 청소연구소 iOS앱과 버그를 만들고 있는 nine입니다.
네 그렇습니다. 저희 개발자들은 하루하루 다양한 기능을 만들어내는 만큼, 하루하루 다양한 버그를 만들어냅니다.
하지만 제가 만들어낸 버그들을 굳이 ‘청소연구소앱’을 사용하는 유저들 에게 보여줄 필요는 없습니다. 새로운 버전을 릴리즈 할 때, 코드를 작성한 개발자, 프로젝트를 담당하는 기획자, 그리고 QA팀 등 수많은 사람들은 제가 만들어 낸 숨겨진 재밌는 버그들을 찾아내고, 저는 버그를 수정하며 또 다른 더 재밌는 버그를 만들어내고, 또 수많은 사람들이 저의 버그를 발견하는 과정을 몇번 거치게 됩니다.
그리고 제가 버그를 만들어내기에 너무 지쳐 더이상의 버그를 만들수 없게되면 그제서야 비로소 앱의 새로운 버전이 릴리즈 됩니다.
왜 테스트를 위한 앱이 필요했을까요?
잠시 시간을 한달 전으로 돌려 9월로 돌아갑니다.
9월 사내 해커톤에 참가한 iOS개발자 nine, 서버개발자 huni 그리고 QA팀의 chloe 3명은 우승상금을 획득하기 위해서 어떠한 주제의 프로젝트를 진행할 지 심도깊은 대화를 진행합니다.
이 대화에서 저희 3명은 현재의 테스트환경에서 불편함을 겪고 있다는 공통점을 발견합니다. 대표적인 불편함은 다음과 같습니다.
- 우리 서비스의 예약에는 다양한 상태가 존재하며, 이 수많은 상태를 재연하기에 너무 많은 시간이 소요된다.
- 사내 운영툴을 통해서 예약을 생성할 수는 있지만, 이전의 예약상태를 가져오는데 몇번의 과정이 필요하며, 최근 예약에 의존적이다.
- 예약을 생성하는 과정이 유저 단위로 진행된다.
이러한 불편함을 해소하기 위하여 저희는 위대한 계획을 세우게 되지만, 이 계획은 아쉽게도 더 중요한 계획에 밀려 실현되지 못하였습니다.
칼을 뽑았으니 무라도 썰기
아무리 위대한 계획이라 할지라도, 실현되지 않는다면 아무런 의미가 없습니다. 해커톤은 마무리 되었지만, 저희의 계획은 그대로 버려지기는 너무나도 아쉬웠고, 10월의 어느날 저는 홀린듯이 Xcode를 실행시켰습니다.
개발과정에서 기존의 계획에서 약간의 아쉬움이 느껴졌고, 최초의 계획과는 조금 다른 모습의 테스터가 만들어져갔습니다.
- 앱에서 직접 접근할 수 있도록, 알파앱에 원클릭 예약 기능을 추가한다.
-> 팀원들의 눈건강을 위해서라도 큼직큼직하게 볼 수 있도록 SwiftUI를 활용해 macOS앱을 만들자!
- 이전 예약상태를 그대로 가져와서 디폴트값을 제공한다.
-> 여러가지 예약상태를 템플릿으로 만들어서 저장하고, 가져올 수 있도록 한다. 또한 여러개의 템플릿으로 연속적으로 예약을 생성할 수 있는 매크로 기능을 제공한다.
Better Call Test!
내부적으로 저희는 최초 유저가 생성한 예약을 ‘Call’으로 명명하고 있습니다. 동료들에게 더 나은 Call Test 환경을 제공하고자 하는 의지가 담긴 프로그램
각각의 예약은 템플릿의 형태로 생성됩니다. 생성된 템플릿은 CoreData에 저장되며, 좌측의 리스트에서 조회/수정/삭제가 가능합니다. 또한 하단에 존재하는 예약버튼을 클릭하여 단일 템플릿을 통한 예약 생성이 가능합니다.
템플릿은 생성된 시점에 관계 없이 예약으로의 변경이 가능해야합니다. 하지만 예약에 필요한 날짜와 시간은 현재의 시간에 영향을 받습니다.
예약 시점에 예약날짜와 시간을 입력받는다면, 여러개의 예약을 진행 하였을 경우 불편함이 있을 것으로 예상되었습니다.
따라서 날짜와 시간은 위와같은 조건 만을 템플릿에 포함시켜, 예약 과정에서 결정되도록 만들었습니다.
매크로에는 다수의 템플릿이 포함될 수 있습니다. 또한 하단에 존재하는 예약 실행 버튼을 클릭해 등록된 템플릿 예약을 순차적으로 진행합니다.
템플릿의 순서는 드래그앤드롭을 통하여 조정할 수 있도록 하였고, 드롭박스로 저장해둔 템플릿을 가져올 수 있도록 만들었습니다.
버그를 잡기위해 만든 테스터이지만, 테스터에서도 버그가 발생할 수 있습니다. 예약에 실패하였을 경우, 사용자의 궁금증을 해소해주고, 버그 리포팅시 빠르게 문제 지점을 파악할 수 있도록 예약 과정을 로그 형식으로 보여주도록 하였습니다.
느낀점 및 앞으로의 목표
이제 곧 청소연구소 앱은 6살 생일을 맞이합니다.
6년간 청소연구소 앱의 척추와도 같은 예약 로직은 많은 변화를 겪어왔습니다. 하지만 이번 작업을 진행하면서, 아직도 개선의 여지가 많다는 것을 새삼 다시한번 깨달았고, 실제로 일부 개선사항은 현재 청소연구소 앱에 적용되어 라이브중입니다.
기존의 레거시 코드에서는 섣불리 적용시키기 어려웠던 변경 사항을 과감하게 시도해 볼 수 있는것이 사이드 프로젝트의 매력이 아닌가 생각합니다.
SwiftUI를 사용했음에도, Multiplatform App이 아닌 macOS App으로 제작한 점은 아쉬움으로 남습니다. 언젠가 iPad를 사용하는 팀원의 요청이 있다면 진행할지도 모르겠네요.
청소연구소에서는 올해 가정집 청소 뿐만이 아닌 사무실 청소까지 그 영역을 넓혔습니다. 뒤 늦게 합류한 사무실 청소인 만큼, 사무실 청소의 예약 로직은 가정집 청소의 예약 로직과 약간은 상이합니다. 따라서 현재의 프로그램에는 사무실 청소 예약 기능은 빠져있어 빠른 시일 안에 추가해야 할 것 같습니다.
마무리
어떻게 보면, 과거(미뤄둔 목표와 오래된 로직)와 미래(앞으로 사용해나가야 할 기술)를 둘 다 마주할 수 있는 좋은 기회 였던것 같습니다.
더 빨리 시작했다면 지금의 저희의 앱에 더 많은 긍정적인 영향을 줄 수 있었을텐데 라는 아쉬움이 남기도 합니다.