날쌘 개발자

프로젝트 설계(10) - 테스트 작성의 정석 본문

web/챌린지

프로젝트 설계(10) - 테스트 작성의 정석

훈식이 2023. 3. 6. 14:21
728x90

패스트캠퍼스 환급챌린지

15일차 화이팅~


테스트 작성의 정석

-의미 있는 테스트 작성하기

-의도한 대로 정확히 작동하는지 검증하는 절차

테스트의 종류

단위 테스팅 (Unit testing)
  • 하나의 모듈/컴포넌트/클래스가 기대한대로 동작하는지, 제공하는 기능들을 테스트
  • 대상 컴포넌트에서 의존하는 일부 대상은 목(mock) 객체를 이용하여 테스트 하기 편한 환경을 구축할 수 있음.
  • 개발자가 작성
  • 자동화된 테스팅
통합 테스팅 (Integration testing)
  • 두 개 이상의 모듈이 잘 연동/연결이 되었는지 테스팅. 모듈 간에 발생하는 에러 검증
    • e.g. 3rd party API를 호출하면 어떤 응답을 기대하는지 테스팅
  • 개발자가 작성
  • 자동화된 테스팅
E2E 테스팅 (Ent-to-end testing)
  • 실제 사용자가 이용하는 환경과 최대한 유사하게 만들어 사용자의 경험을 전반적으로 테스팅
  • 사용자의 입장에서 시스템이 기능을 올바르게 제공하는지 테스팅
    • e.g. 시나리오: 사용자가 '그룹 생성하기' 버튼을 클릭하면 해당 페이지로 리다이렉팅 된다.
  • QA 조직이 따로 있을 경우, 개발자가 아닌 QA 전문가가 작성하곤 함.
  • 자동화된 테스팅
인수 테스팅 (Acceptance testing)
  • 시스템이 주어진 요구사항을 잘 충족하는지 테스팅
  • 자동화된 테스팅 X, 사람이 수동으로 테스팅

테스트 작성 순서

단위테스트 -> 통합 테스트 -> E2E 테스트

테스트의 영역

  • 프론트엔드, 백엔드 등
    (
    프론트엔드 테스트도 의미가 있음.
    특히 기능에 대한 테스팅이 의미가 있음.
    특정 컴포넌트가 화면에 어떻게 렌더링 되는지, 컴포넌트들 간의 조합은 잘 되었는지에 대한 테스팅은 의미가 없는 테스팅임.
    )

의미 있는 테스트 작성하기

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

테스트 하지 않아도 되는 것

  • 모든 라인을 반드시 테스트 해야겠다 --> X
  • 페이지에 반응성 (responsive web)인지 테스트 해야겠다. --> X

구현하고자 하는 기능이 있을 때,
어디까지 테스트 케이스를 작성 해야 할까? 에 대한 고민은 항상 있을 것임.
고민하고 항상 '이게 맞는지, 왜 필요한지, 왜 필요하지 않은지' 에 대한 질문을 끊임없이 할 것.

프로젝트 설계 마무리. 다음으로는 개발 환경 구축 부터 시작하여 레이아웃 구현, 각 컴포넌트 구현등 실제 구현을 해볼 예정임.



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

 

http://bit.ly/3Y34pE0

 

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

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

fastcampus.co.kr

 

728x90