Testing in weekly release (Cookpad Inc)
Published in
6 min readMay 4, 2019
연설자
- Speaker: Kyohei Kato (Cookpad Inc.)
- Quality Improvement group(QIG)에서 근무중
- 직함은 Software Engineer in Quality (SEQ)
- Automated UI tests, QA, Mobile app에서의 테스트 환경 구현등의 주요 업무
아젠다
- Cookpad에 대한 소개
- 모바일 앱 개발환경에서의 1주일 단위의 배포
- 1 주일 단위의 배포 환경에서 테스팅의 의미는 무엇인가?
- 1 주일 단위의 배포 환경에서의 문제점
- 이상적인 테스팅
Cookpad가 뭐에요?
- Web 기반으로 요리법을 공유하는 서비스입니다.
- 요리법을 올리거나 검색할 수 있습니다.
- Android와 iOS앱을 출시했습니다.
- 1주일 단위 배포 환경을 약 6개월간 운영해오고 있습니다.
1주일 단위 배포의 컨셉은 “사람이 기계에 맞춘다(Human adjust to machine)”입니다.
- 고정된 배포일정에 따라서 배포를 진행
- 배포 업무는 자동화로 수행
- 매주 금요일 오후 2시에 자동 배포 스케쥴을 확정(아직까지는 1주일 단위가 제일 좋았음)
배포를 해야할지 말아야 할지 어떻게 결정하나요?
- iOS앱의 경우는 Apple의 App review 결과에 따라
- 각 개발자들의 변동사항에 따라
- Quality Improvement Group(QIG)의 사전 테스트의 결과에 따라(며칠이 걸립니다)
Quality Improvement Group(QIG)은 무엇인가요?
- Cookpad의 품질에 집중하는 팀입니다.
- Cookpad 모바일앱에 참여하는 모든 팀과 협업을 합니다.
- 자동화 UI 테스트, QA, 테스트환경구축이 주요 업무입니다.
QIG는 릴리스 전의 테스팅에서는 어떤 일을 하나요?
- 수동 테스트와 자동화 테스트의 조합으로 Regression 테스트를 진행합니다.
- 자동화가 어려운 테스트는 수동으로 진행
- 모든 기능 변화에 대해서는 탐색적 테스팅(Exploratory testing)을 진행합니다.
QIG는 어떤 자동화 테스트를 만드나요?
- Appium을 사용해 자동화 UI 테스트를 만듭니다.
- Appium은 Selenium을 기반으로 한 자동화 툴인데요, Mobile App과 PC에서 널리 쓰이고 있습니다.
- Appium은 Emulator와 실제 Device에서 모두 쓰입니다.
- Regression test도 자동화 테스트 대상입니다.
자동화 테스트 중 하나로 이미지 비교로 UI 변경을 확인합니다.
- 자동화 테스트안에서 스크린 샷을 찍습니다.
- 사람의 눈으로 비교하기 힘든 부분을 자동화로 처리합니다.
자동화 테스트로 처리할 수 없는 테스트들은 무엇이 있나요?
- 기기 계정이나 복잡한 사용자 상태에 따른 결제과정
- 인앱 구매, 통신사를 통한 지불 수단 사용등
그리고 모든 기능 변화에 대해 탐색적 테스팅(Exploratory testing)을 진행합니다.
- 모든 개발팀이 테스팅에 참여합니다. 일반적인 사용 시나리오를 테스트합니다.
- 이슈로 발생한 명세의 변화를 개발자와 함께 탐색적 테스팅으로 확인합니다.
- 비정상적인 사용경로가 관련 기능에 영향을 미치지 않는지 확인합니다.
결론
- 1주일 단위 배포는 릴리스 주기를 짧게 가져가는데 도움을 주었습니다.
- QIG의 배포 전 테스트는 릴리스 여부를 결정하는데 중요한 지표가 되었습니다.
- 이 과정은 매주 수동와 자동테스트의 조합으로 진행되었습니다.
앞으로 도전할 과제는?
- 개발팀에서 이슈나 앞으로의 개발 계획에 대해 더 많은 정보를 알 수 있어야 합니다.
- 왜냐하면 이 정보는 “배포 전 테스트”에 중요한 정보가 되기 때문입니다.
- Regression test에서 어느 범위까지 자동화가 가능한지?
- 의도하지 않은 UI 변화가 무엇인지?
- 탐색적 테스팅에서 어느 부분에 집중해야 할지?
“배포전 테스트”에서 피할수 있었던 문제들
- 배경지식으로 있었던 요구사항들에 대해 이해하지 못했던 점
- 그래서 복잡한 사용자상태에 대해 이해하지 못했었음
- 기능 구현 이후에 기능 요구사항에 숨어 있던 문제를 알게 됨
- 왜냐하면 테스트 시점에 숨어있던 문제는 테스트 영역 바깥이라서 테스트 되지 않기 때문입니다.
- 다행히도 테스트 단계에서 발견되었지만, 그렇지 않았다면 유저가 버그리포트를 직접 주었을수도 있었을 겁니다.(Worst case)
“1주일 단위의 배포”가 가져온 문제들
- 개발팀과 테스팅팀이 같은 장소와 시간에 함께 있지 못해 발생하는 문제가 있었음
- 개발팀의 제품개발속도를 유지하기가 어려움
- 개발팀의 제품개발속도가 더 빨리 향상되어야 문제를 해결할 것으로 보임
같은 기간동안 4배의 릴리스를 수행함
개발 부서에서의 Testing
- 개발 부서도 테스팅과 제품 품질에 대해 생각하도록 해야 합니다.
- 릴리스된 제품의 품질과 결함이 고객에게 어떤 영향을 미치는지 알아야 합니다.
- 개발 부서에서는 어떻게 품질을 보장할 수 있을까요?
- 개발팀안에서의 잠재적인 품질 기대치를 알아봅시다. 레시피 공유가 불가능해서 고객이 불편을 겪는다면? 타겟유저들이 측정불가능하다면? 이것들은 꼭 동작해야 하는 기능이 아닐까요?
Agile Tester가 됩시다!
- 개발팀에서 제품 품질에 관심을 갖는 사람들
- 제품 품질 관점에서 개발팀 내에서 테스팅에 집중
- 제품 요구 사항이나 구현 과정에 장애가 되는 부분들을 이슈로 올림
- 유연한 테스트를 제안할 수 있어야 함
더 나은 서비스 개발을 위해 필요한 것들
- 개발팀 내에서 품질과 테스팅을 책임지고 주도할 수 있는 사람들
- 개발팀과 QIG간의 의사소통을 촉진할 수 있는 문화
- 개발 속도를 올리는 것
요약
- “1주일 배포 주기”를 통해 Cookpad mobile app을 성공적으로 런칭할 수 있었다.
- 여기서 QIG의 “사전 배포 테스팅”이 중요한 역할을 하였다
- 개발팀과 QIG간의 소통 부족이 문제점으로 발견되었다
- 개발팀에서의 제품 품질과 테스팅에 대한 관심과 노력이 중요하다
- 개발팀과 QIG의 협업은 제품 개발의 중요한 요소다