Testing in weekly release (Cookpad Inc)

정원덕
selenium-korea
Published in
6 min readMay 4, 2019

연설자

  1. Speaker: Kyohei Kato (Cookpad Inc.)
  2. Quality Improvement group(QIG)에서 근무중
  3. 직함은 Software Engineer in Quality (SEQ)
  4. Automated UI tests, QA, Mobile app에서의 테스트 환경 구현등의 주요 업무

아젠다

  1. Cookpad에 대한 소개
  2. 모바일 앱 개발환경에서의 1주일 단위의 배포
  3. 1 주일 단위의 배포 환경에서 테스팅의 의미는 무엇인가?
  4. 1 주일 단위의 배포 환경에서의 문제점
  5. 이상적인 테스팅

Cookpad가 뭐에요?

Cookpad Home(29th April 2019)

https://youtu.be/kw-3w9F9FA0

  1. Web 기반으로 요리법을 공유하는 서비스입니다.
  2. 요리법을 올리거나 검색할 수 있습니다.
  3. Android와 iOS앱을 출시했습니다.
  4. 1주일 단위 배포 환경을 약 6개월간 운영해오고 있습니다.

1주일 단위 배포의 컨셉은 “사람이 기계에 맞춘다(Human adjust to machine)”입니다.

  1. 고정된 배포일정에 따라서 배포를 진행
  2. 배포 업무는 자동화로 수행
  3. 매주 금요일 오후 2시에 자동 배포 스케쥴을 확정(아직까지는 1주일 단위가 제일 좋았음)
Cookpad의 배포스케쥴 관리

배포를 해야할지 말아야 할지 어떻게 결정하나요?

  1. iOS앱의 경우는 Apple의 App review 결과에 따라
  2. 각 개발자들의 변동사항에 따라
  3. Quality Improvement Group(QIG)의 사전 테스트의 결과에 따라(며칠이 걸립니다)

Quality Improvement Group(QIG)은 무엇인가요?

  1. Cookpad의 품질에 집중하는 팀입니다.
  2. Cookpad 모바일앱에 참여하는 모든 팀과 협업을 합니다.
  3. 자동화 UI 테스트, QA, 테스트환경구축이 주요 업무입니다.

QIG는 릴리스 전의 테스팅에서는 어떤 일을 하나요?

  1. 수동 테스트와 자동화 테스트의 조합으로 Regression 테스트를 진행합니다.
  2. 자동화가 어려운 테스트는 수동으로 진행
  3. 모든 기능 변화에 대해서는 탐색적 테스팅(Exploratory testing)을 진행합니다.

QIG는 어떤 자동화 테스트를 만드나요?

  1. Appium을 사용해 자동화 UI 테스트를 만듭니다.
  2. Appium은 Selenium을 기반으로 한 자동화 툴인데요, Mobile App과 PC에서 널리 쓰이고 있습니다.
  3. Appium은 Emulator와 실제 Device에서 모두 쓰입니다.
  4. Regression test도 자동화 테스트 대상입니다.

자동화 테스트 중 하나로 이미지 비교로 UI 변경을 확인합니다.

Cookpad의 자동 이미지 비교(뭐가 다른지 맞춰볼수 있을까요?)
  1. 자동화 테스트안에서 스크린 샷을 찍습니다.
  2. 사람의 눈으로 비교하기 힘든 부분을 자동화로 처리합니다.

자동화 테스트로 처리할 수 없는 테스트들은 무엇이 있나요?

  1. 기기 계정이나 복잡한 사용자 상태에 따른 결제과정
  2. 인앱 구매, 통신사를 통한 지불 수단 사용등

그리고 모든 기능 변화에 대해 탐색적 테스팅(Exploratory testing)을 진행합니다.

  1. 모든 개발팀이 테스팅에 참여합니다. 일반적인 사용 시나리오를 테스트합니다.
  2. 이슈로 발생한 명세의 변화를 개발자와 함께 탐색적 테스팅으로 확인합니다.
  3. 비정상적인 사용경로가 관련 기능에 영향을 미치지 않는지 확인합니다.

결론

  1. 1주일 단위 배포는 릴리스 주기를 짧게 가져가는데 도움을 주었습니다.
  2. QIG의 배포 전 테스트는 릴리스 여부를 결정하는데 중요한 지표가 되었습니다.
  3. 이 과정은 매주 수동와 자동테스트의 조합으로 진행되었습니다.

앞으로 도전할 과제는?

  1. 개발팀에서 이슈나 앞으로의 개발 계획에 대해 더 많은 정보를 알 수 있어야 합니다.
  2. 왜냐하면 이 정보는 “배포 전 테스트”에 중요한 정보가 되기 때문입니다.
  3. Regression test에서 어느 범위까지 자동화가 가능한지?
  4. 의도하지 않은 UI 변화가 무엇인지?
  5. 탐색적 테스팅에서 어느 부분에 집중해야 할지?

“배포전 테스트”에서 피할수 있었던 문제들

  1. 배경지식으로 있었던 요구사항들에 대해 이해하지 못했던 점
  2. 그래서 복잡한 사용자상태에 대해 이해하지 못했었음
  3. 기능 구현 이후에 기능 요구사항에 숨어 있던 문제를 알게 됨
  4. 왜냐하면 테스트 시점에 숨어있던 문제는 테스트 영역 바깥이라서 테스트 되지 않기 때문입니다.
  5. 다행히도 테스트 단계에서 발견되었지만, 그렇지 않았다면 유저가 버그리포트를 직접 주었을수도 있었을 겁니다.(Worst case)

“1주일 단위의 배포”가 가져온 문제들

  1. 개발팀과 테스팅팀이 같은 장소와 시간에 함께 있지 못해 발생하는 문제가 있었음
  2. 개발팀의 제품개발속도를 유지하기가 어려움
  3. 개발팀의 제품개발속도가 더 빨리 향상되어야 문제를 해결할 것으로 보임

같은 기간동안 4배의 릴리스를 수행함

4배나 많은 릴리스를 내보냈어요! 대단해요!

개발 부서에서의 Testing

  1. 개발 부서도 테스팅과 제품 품질에 대해 생각하도록 해야 합니다.
  2. 릴리스된 제품의 품질과 결함이 고객에게 어떤 영향을 미치는지 알아야 합니다.
  3. 개발 부서에서는 어떻게 품질을 보장할 수 있을까요?
  4. 개발팀안에서의 잠재적인 품질 기대치를 알아봅시다. 레시피 공유가 불가능해서 고객이 불편을 겪는다면? 타겟유저들이 측정불가능하다면? 이것들은 꼭 동작해야 하는 기능이 아닐까요?

Agile Tester가 됩시다!

  1. 개발팀에서 제품 품질에 관심을 갖는 사람들
  2. 제품 품질 관점에서 개발팀 내에서 테스팅에 집중
  3. 제품 요구 사항이나 구현 과정에 장애가 되는 부분들을 이슈로 올림
  4. 유연한 테스트를 제안할 수 있어야 함

더 나은 서비스 개발을 위해 필요한 것들

  1. 개발팀 내에서 품질과 테스팅을 책임지고 주도할 수 있는 사람들
  2. 개발팀과 QIG간의 의사소통을 촉진할 수 있는 문화
  3. 개발 속도를 올리는 것

요약

  1. “1주일 배포 주기”를 통해 Cookpad mobile app을 성공적으로 런칭할 수 있었다.
  2. 여기서 QIG의 “사전 배포 테스팅”이 중요한 역할을 하였다
  3. 개발팀과 QIG간의 소통 부족이 문제점으로 발견되었다
  4. 개발팀에서의 제품 품질과 테스팅에 대한 관심과 노력이 중요하다
  5. 개발팀과 QIG의 협업은 제품 개발의 중요한 요소다

--

--

정원덕
selenium-korea

자비스앤빌런즈 프론트엔드 챕터장