게시판 만들기 과제에서 자꾸 오류가 나서 정신 없는 와중에 테스트의 필요성에 대한 강의를 들었다(과제에 테스트 코드 넣는게 필수이기 때문ㅠ).
아직 코드 구현하는 강의까지는 제대로 보지 못해서 간단하게 개념만 정리해보겠다.
-> 버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커짐
1. 개발자 테스트
2. 단위 테스트 (Unit Test)
:단위 테스트는 응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트이다.
- 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트 가능
- 코드 변경시, 변경한 부분으로 인한 영향도를 쉽게 파악
- 테스트 케이스가 꼼꼼하게 작성되어 있다면, 개발 과정 중에 미리 문제를 파악 가능
- 모듈 간에 상호 작용 검증 못함
3. 통합 테스트 (Integration Test)
:통합 테스트는 단위 테스트보다 더 큰 동작을 달성하기 위해 여러 모듈들을 모아 이들이 의도대로 협력하는지 확인하는 테스트이다.
- 두 개 이상의 모듈이 연결된 상태를 테스트
- 모듈 간의 연결에서 발생하는 에러 검증 가능
- 단위 테스트에 비해 테스트 코드 작성이 복잡하고 어려움
4. E2E 테스트 (End to End Test)
- 실제 사용자의 실행 환경과 거의 동일한 환경에서 테스트 진행 (=블랙박스 테스팅)
- 다양한 실사용자 테스트 환경에 맞춰 테스트하는 것이 어려움
- 다양한 단말기 환경(ex. PC, 맥북, 아이패드, 아이폰13, 갤럭시S20, 갤럭시 Z 플립3, 샤오미 미A2, ...)
- 특히 해상도 별, OS 별, Web browser 별로 웹페이지 UI 표시 혹은 동작이 다른 경우가 있음
- 다양한 네트워크 환경
- 느린 네트워크 ~ 빠른 네트워크, 유선, 와이파이 환경)
참고:
링크텍스트