Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android QA

Buzzvil
March 17, 2021

Android QA

By Ethan

Buzzvil

March 17, 2021
Tweet

More Decks by Buzzvil

Other Decks in Programming

Transcript

  1. Copyright ⓒ All Right Reserved by Buzzvil Android QA QA

    process for android Prodops Team Ethan Yoo 2021.03.17
  2. Copyright ⓒ All Right Reserved by Buzzvil Prodops의 주요 미션

    중 하나는 “제품의 품질을 높이는 것” 품질의 기준은 무엇일까? 어떻게 하면 품질을 높일 수 있을가? QA와의 관계는 무엇일까? Intro
  3. Copyright ⓒ All Right Reserved by Buzzvil 퀄리티 Definitions 배포된

    버그의 수 1 “퀄리티란 정의한 스펙에 따라 기능이 잘 구현된 정도” 퀄리티를 높인 다는 것은 버그가 배포되는 것을 줄이는 모든 활동
  4. Copyright ⓒ All Right Reserved by Buzzvil How to make

    High Quality 결국 좋은 퀄리티의 제품을 만들기 위해서는… • 코드를 완벽하게 작성한다. • 모든 케이스에 대해서 테스트를 수행한다. 현실적으로 어려운 이야기
  5. Copyright ⓒ All Right Reserved by Buzzvil How to make

    High Quality 결국 좋은 퀄리티의 제품을 만들기 위해서는… • 코드의 퀄리티를 높이자 ◦ 스펙 명세 세분화 ◦ 테스트 케이스 사전 인지 • 테스트의 케이스를 늘리자 ◦ 테스트 자동화 ◦ 테스트 리소스 추가
  6. Copyright ⓒ All Right Reserved by Buzzvil QA in Google

    • SWE(Software Engineer) ◦ 기능 개발 ◦ Unit Test 작성 • SET(Software Engineer in Test) ◦ Unit Test 작성 ◦ Integration Test, End to End Test 작성 ◦ 테스트 인프라 개발 • TE(Test Engineer) ◦ 품질에 관계된 모든 것을 감독 ◦ 사용자 관점의 접근
  7. Copyright ⓒ All Right Reserved by Buzzvil QA in Google

    설계 문서 작성 설계 문서 리뷰 기능 구현 설계 문서 업데이트 자동화 테스트 계획 코드 리뷰 Mock, Fake 구현 테스트 인프라 개발 테스트 코드 작성 SWE SET 종합적인 퀄리티 검토 취약점, 호환성 검토 SWE, PM, SET 조율 테스트 케이스 생성 및 수행 TE
  8. Copyright ⓒ All Right Reserved by Buzzvil QA in Facebook

    • Automation Engineer, Manual Tester를 최소화 • 퀄리티에 대한 오너쉽은 개발자에게 있음 • 테스트 코드 작성은 개발의 일부 • Dogfoodling, Canary Release 사용
  9. Copyright ⓒ All Right Reserved by Buzzvil QA in Spotify

    • Model-Based Testing ◦ QA : 테스트 모델 작성 ◦ DEV : 테스트 모델에 대한 테스트 코드 구현
  10. Copyright ⓒ All Right Reserved by Buzzvil QA in Atlassian

    • 피쳐 개발팀 중심의 테스트 • QA는 개발 시작부터 끝까지를 감독 → Quality Assistant • 개발팀 가이드 라인 ◦ 다른 팀들이나 베타 테스트, 유저를 이용해서 버그를 찾으려고 하면 안 됨 ◦ 항상 배포 가능하도록 코드를 작성해야 함 ◦ QA나 다른 팀에 의존하지 않고 스스로 테스트 코드를 작성해야 함 ◦ 컨텍스트를 유지하고, 변화를 만들며, 결과를 보장해줘야 함
  11. Copyright ⓒ All Right Reserved by Buzzvil 이상적인 QA 초기

    단계 부터 QA 활동 시작 • 개발 전에 고치는 것이 가장 쉬움 • 초기 기획이 진행 될 때 요건을 명확히 하고 QA와 테스트 계획을 세우는 활동 필요 • 개발 중, 테스트 코드 작성 중에도 QA와 긴밀하게 테스트가 잘 진행되고 있는지 확인 필요
  12. Copyright ⓒ All Right Reserved by Buzzvil 이상적인 QA 테스트

    자동화는 Scalability 핵심 • Manual Test는 Scalable 하지 않음 • 테스트 자동화에 대한 프로세스 확립 필요 • 테스트 작성은 개발자의 업무 중 하나 • Unit Test > Integration Test > E2E Test 순서로 작성 ◦ 구글은 내부적으로 7:2:1 비율 가이드
  13. Copyright ⓒ All Right Reserved by Buzzvil 이상적인 QA 테스트를

    도와줄 인프라 강화 • 테스트에 필요한 프레임워크, 라이브러리 개발 • CI, CD 연동한 테스트 파이프라인 구성 • 테스트에 필요한 기술 전파
  14. Copyright ⓒ All Right Reserved by Buzzvil 이상적인 프로세스 요건

    정의 및 테스트 계획 PM Feature Developer Test Case 작성 및 리뷰 Manual Test QA 기능 개발 개발 테스트 Unit Test, Integration Test, E2E Test 작성 QA is failure Deploy Operating Developer 테스트 인프라 고도화 CI / CD 지원 Integration Test, E2E Test 지원
  15. Copyright ⓒ All Right Reserved by Buzzvil 현실의 QA PM

    : 할게 너무 많아요. 빠르게 개발해서 줘야 해요. DEV : 다음 주까지 개발이 끝나야 한데요. 테스트 코드 작성할 시간이 없어요 QA : 테스트가 너무 밀려있어요. 이게 끝나야 배포 할 수 있어요.
  16. Copyright ⓒ All Right Reserved by Buzzvil 현실의 QA 리소스

    부족은 항상 갖고 있는 문제로 공감 하지만 기존의 Manual Test 방식은 추가되는 기능과 배포 속도를 감당하기 어려움 점점 QA에 과부하가 걸릴 것이고 리소스는 더 부족해질 것 오히려 리소스가 부족하기 때문에 효율적인 QA 체계로 변화가 필요
  17. Copyright ⓒ All Right Reserved by Buzzvil 현실의 QA 좋은건

    알겠지만… 그럼에도 당장에 리소스가 부족 변화에는 리소스가 필요한데, 리소스가 부족하니 변화를 하기가 어려운 상황 현황을 파악하고, 작은 단위로 변화를 만들어보자
  18. Copyright ⓒ All Right Reserved by Buzzvil 버즈빌의 현재 상태

    주요 요건 기획 PM Developer 세부 요건 논의 기능 개발 Manual Test QA 개발 테스트 Unit Test 작성 Test Case 작성 QA is failure Deploy Operating Developer CI / CD 지원 프로세스 현황
  19. Copyright ⓒ All Right Reserved by Buzzvil 버즈빌의 현재 상태

    주요 요건 기획 PM Developer 세부 요건 논의 기능 개발 Manual Test QA 개발 테스트 Unit Test 작성 Test Case 작성 QA is failure Deploy Operating Developer CI / CD 지원 Manual Test 중심의 QA - High Cost - Not Scalable - 리소스 부족으로 기획 및 개발 단계에 참여가 어려움 프로세스 현황
  20. Copyright ⓒ All Right Reserved by Buzzvil 버즈빌의 현재 상태

    주요 요건 기획 PM Developer 세부 요건 논의 기능 개발 Manual Test QA 개발 테스트 Unit Test 작성 Test Case 작성 QA is failure Deploy Operating Developer CI / CD 지원 개발 이전 요건 정의 부족 - 요건 디테일 부족 - PM 리소스 부족 프로세스 현황
  21. Copyright ⓒ All Right Reserved by Buzzvil 버즈빌의 현재 상태

    주요 요건 기획 PM Developer 세부 요건 논의 기능 개발 Manual Test QA 개발 테스트 Unit Test 작성 Test Case 작성 QA is failure Deploy Operating Developer CI / CD 지원 개발 이후의 Test Case 작성 - 개발자는 이상적인 시나리오에 몰입 - 예외 상황에 대한 고려 부족 - 개발 테스트가 풍부하게 되지 않음 프로세스 현황
  22. Copyright ⓒ All Right Reserved by Buzzvil 버즈빌의 현재 상태

    주요 요건 기획 PM Developer 세부 요건 논의 기능 개발 Manual Test QA 개발 테스트 Unit Test 작성 Test Case 작성 QA is failure Deploy Operating Developer CI / CD 지원 Integration, E2E 테스트 프로세스 부재 - 별도의 프로세스가 없는 상황 - 전체적인 스킬 셋이 부족 - 인프라 부족 프로세스 현황
  23. Copyright ⓒ All Right Reserved by Buzzvil Android Code 코드

    퀄리티 높음 → Testability 높음 ◦ Clean Architecture ◦ MVP, MVVM ◦ Modulization ◦ DI 교육과 프로세스만 지원하면 빠르게 테스트 자동화가 가능해 보임
  24. Copyright ⓒ All Right Reserved by Buzzvil Phase 0 주요

    요건 기획 PM Developer 세부 요건 논의 기능 개발 Manual Test QA 개발 테스트 Unit Test 작성 Test Case 작성 QA is failure Deploy Operating Developer CI / CD 지원
  25. Copyright ⓒ All Right Reserved by Buzzvil Phase 1 주요

    요건 기획 PM Developer 세부 요건 논의 Test Case 작성 Manual Test QA 기능 개발 개발 테스트 Unit Test 작성 QA is failure Deploy Operating Developer CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축
  26. Copyright ⓒ All Right Reserved by Buzzvil Phase 1 주요

    요건 기획 PM Developer 세부 요건 논의 Test Case 작성 Manual Test QA 기능 개발 개발 테스트 Unit Test 작성 QA is failure Deploy Operating Developer CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축 목표는 QA 팀 리소스 확보 - 개발 : 개념적 TDD → Test 실패 감소 - 운영 : 테스트 쉽도록 지원 → Test 속도 증가
  27. Copyright ⓒ All Right Reserved by Buzzvil Phase 2 주요

    요건 기획 PM Developer 세부 요건 논의 Test Case 작성 Manual Test QA 기능 개발 개발 테스트 Deploy Operating Developer Unit Test, Integration Test Test Case 리뷰 CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축 Regression Test
  28. Copyright ⓒ All Right Reserved by Buzzvil Phase 2 주요

    요건 기획 PM Developer 세부 요건 논의 Test Case 작성 Manual Test QA 기능 개발 개발 테스트 Deploy Operating Developer CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축 Regression Test Unit Test, Integration Test Test Case 리뷰 추가적인 QA 팀 리소스 확보 - 운영 : Regression Test → Test 실패 감소 - 개발 : 연동 테스트 추가 → Test 실패 감소 - QA : 테스트 케이스 리뷰 → Test 실패 감소
  29. Copyright ⓒ All Right Reserved by Buzzvil Phase 3 주요

    요건 기획 PM Developer 세부 요건 논의 Test Case 작성 Manual Test QA 기능 개발 개발 테스트 Deploy Operating Developer CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축 Regression Test Unit Test, Integration Test, E2E Test Test Case 리뷰 기획 리뷰
  30. Copyright ⓒ All Right Reserved by Buzzvil Phase 3 주요

    요건 기획 PM Developer 세부 요건 논의 Test Case 작성 Manual Test QA 기능 개발 개발 테스트 Deploy Operating Developer CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축 Regression Test Unit Test, Integration Test, E2E Test Test Case 리뷰 기획 리뷰 QA 활동 전파 - DEV, QA : E2E 테스트 추가 → Test 실패 감소 - QA : 기획 리뷰 → Test 실패 감소
  31. Copyright ⓒ All Right Reserved by Buzzvil 이상적인 프로세스 요건

    정의 및 테스트 계획 PM Feature Developer Test Case 작성 및 리뷰 Manual Test QA 기능 개발 개발 테스트 Unit Test, Integration Test, E2E Test 작성 QA is failure Deploy Operating Developer CI / CD 지원 테스트 인프라 구축 Integartion, E2E 테스트 교육 및 주요 사례 구축 Regression Test
  32. Copyright ⓒ All Right Reserved by Buzzvil 조직별 방향성 PM

    Feature Developer QA Operating Developer 테스트 이론 교육 테스트 인프라 구축 주요 로직 퀄리티 강화 기획 디테일 강화 테스트 활동을 고려한 프로젝트 관리 QA 인입 전 퀄리티 강화 테스트 자동화 강화 개발 프로세스 전반에서 QA 활동 테스트 메트릭 구축 테스트 다양화 테스트 자동화
  33. Copyright ⓒ All Right Reserved by Buzzvil References • How

    Google Tests Software(Book) • 대규모 애자일에서의 QA(Spotify, Facebook, Atlassian, Google 사례와 함께) • Google Test Blog • Software Testing Facebook Google • Experience of Test Automation at Spotify • Hot Atlassian does QA • Atlassian - QA at speed • How Giants Test the Software - Google, Apple, Facebook, Amazon & Spotify • Software Testing In Startups: Challanges, Process and Strategies