항해99 - day23

Dasole Kwon·2022년 5월 31일
0

항해99

목록 보기
24/47

게시판 만들기 과제에서 자꾸 오류가 나서 정신 없는 와중에 테스트의 필요성에 대한 강의를 들었다(과제에 테스트 코드 넣는게 필수이기 때문ㅠ).

아직 코드 구현하는 강의까지는 제대로 보지 못해서 간단하게 개념만 정리해보겠다.


개발자 테스트 코드 작성 시 장/단점과 테스트 종류 별 (단위 테스트, 통합 테스트, E2E 테스트)

-> 버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커짐

1. 개발자 테스트

  • 장점
    - 빠르고 정확한 테스트 가능 (예상 동작 VS 실제 동작)
    - 테스트 자동화 가능
    - 배포 절차 시 테스트 코드가 수행되어 동작 검증
    - 리팩토링 후 기존 동작에 대한 보증수표
  • 단점
    - 개발 시간이 오래 걸림
    - 개발이 진행되면서 테스트 코드를 함께 유지보수해야 함

2. 단위 테스트 (Unit Test)
:단위 테스트는 응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트이다.
- 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트 가능
- 코드 변경시, 변경한 부분으로 인한 영향도를 쉽게 파악
- 테스트 케이스가 꼼꼼하게 작성되어 있다면, 개발 과정 중에 미리 문제를 파악 가능
- 모듈 간에 상호 작용 검증 못함

3. 통합 테스트 (Integration Test)
:통합 테스트는 단위 테스트보다 더 큰 동작을 달성하기 위해 여러 모듈들을 모아 이들이 의도대로 협력하는지 확인하는 테스트이다.
- 두 개 이상의 모듈이 연결된 상태를 테스트
- 모듈 간의 연결에서 발생하는 에러 검증 가능
- 단위 테스트에 비해 테스트 코드 작성이 복잡하고 어려움

4. E2E 테스트 (End to End Test)
- 실제 사용자의 실행 환경과 거의 동일한 환경에서 테스트 진행 (=블랙박스 테스팅)
- 다양한 실사용자 테스트 환경에 맞춰 테스트하는 것이 어려움
- 다양한 단말기 환경(ex. PC, 맥북, 아이패드, 아이폰13, 갤럭시S20, 갤럭시 Z 플립3, 샤오미 미A2, ...)
- 특히 해상도 별, OS 별, Web browser 별로 웹페이지 UI 표시 혹은 동작이 다른 경우가 있음
- 다양한 네트워크 환경
- 느린 네트워크 ~ 빠른 네트워크, 유선, 와이파이 환경)

  • Google Test Automation Conference에서 제안된 테스트 피라미드
  • 시스템을 테스트 할때 크게 3가지 방법으로 나눌 수 있다.
  • 전체 테스트 비중을 아래와 같은 수치로 구현하는 것이 권장된다.
    -E2E(UI) Testing - 10%
    -Integrating Testing - 20%
    -Unit Testing - 70%

참고:
링크텍스트

0개의 댓글