why not

의미 있는 테스트 작성하기(30일차) 본문

Today I Learn/환급 챌린지

의미 있는 테스트 작성하기(30일차)

novem 2023. 3. 21. 06:00

<테스트 작성의 정석>

1. 테스트의 4가지 종류

1-1. 단위 테스팅(Unit testing)

  • 하나의 모듈/컴포넌트/클래스가 기대한대로 동작하는지, 제공하는 기능들을 테스트하는 것
  • 대상 컴포넌트에서 의존하는 일부 대상은 목(mock) 객체를 이용하여 테스트 하기 편한 환경을 구축할 수 있다.
  • 개발자가 작성
  • 자동화된 테스팅

1-2. 통합 테스팅(Integration testing)

  • 두 개 이상의 모듈이 잘 연동/연결이 되었는지 테스팅.
    • 모듈 간에 발생하는 메시지나 에러를 검증하는 단계
    • e.g. 3rd party API를 호출하면 어떤 응답을 기대하는지 테스팅
  • 개발자가 작성
  • 자동화된 테스팅

1-3. E2E 테스팅(End-to-end testing)

  • 실제 사용자가 이용하는 환경과 최대한 유사하게 만들어 사용자의 경험을 전반적으로 테스팅
  • 사용자의 입장에서 시스템이 기능을 올바르게 제공하는지 테스팅
    • e.g. 시나리오: 사용자가 ‘그룹 생성하기' 버튼을 클릭하면 해당 페이지로 리다이렉팅 된다.
  • QA 조직이 따로 있을 경우, 개발자가 아닌 QA 전문가가 작성하곤 한다.
  • 자동화된 테스팅

1-4. 인수 테스팅(Acceptance testing)

  • 시스템이 주어진 요구사항을 잘 충족하는지 테스팅
  • 자동화된 테스팅이 아니라 사람이 수동으로 테스팅

2. 테스트 작성 순서

  • 단위 테스트 -> 통합 테스트 -> E2E 테스트
    • 좁은 범위부터 시작해서 넓은 범위까지 테스트!

3. 테스트의 영역

  • 프론트 엔드, 백엔드 등
  • 프론트엔드 테스트도 의미가 있을까?
    • 사용자가 소프트웨어를 사용하는 방식을 테스팅 하는 것
      • 예를 들면 A 버튼을 누르면 사용자 이름과 휴대폰 번호를 기입할 수 있는 입력 창
    • 기능에 대한 테스팅을 할 때 의미가 있다.

4. 의미 있는 테스트 작성하기

4-1. 반드시 테스트 해야할 것

  • 사용자 요구사항(user requirement)이 모두 테스트 케이스화 되어있는가?
  • 백엔드의 인터페이스를 테스트할 경우, 잘못된 input을 입력했을 때, 예상된 응답을 내려주는가? (에러코드 vs Exception을 throw)
  • 프론트엔드에서 사용자가 이용할 기능이 동작하는가?
    • 기능 테스트에 초점을 맞춰야 합니다!
    • 페이지에 중요한 버튼이 렌더링 되는가?
    • 해당 버튼을 클릭하면 예상한대로 동작하는가?

4-2. 테스트 하지 않아도 되는 것

  • 모든 라인을 반드시 테스트하지는 않아도 된다.
  • 페이지가 반응성(responsiveness web)인지 테스트
    • e.g. “PC 에서는 버튼이 화면 중앙에, 모바일에서는 버튼 위치가 화면 하단에 있어야 한다”

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

* 필수 삽입 링크 : http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr