(소프트웨어 공학) 11장 테스팅

단위 테스트 -> 통합 테스트 -> 기능 테스트 또는 시스템 테스트 또는 E2E 테스트(V 모델 참조)

단위 테스트

  • 테스트 단위가 거의 없습니다.

    독립 실행형 모듈 테스트
    • E) 클래스, 함수, 컴포넌트, …
  • 개발자가 구현한 각 모듈을 직접 테스트
  • 대표적인 단위 테스트 도구: JavaScript(Karma, Jasmine, Jest, Mocha…), Java(JUnit), React(react-testing-library)

통합 테스팅

  • 단위 테스트를 통과한 모듈에 대한 테스트
  • 여러 모듈이 상호 작용하는 방식을 확인하기 위한 테스트(예: 전체적으로 잘 작동하는지 확인)
  • 단위 테스트만으로는 충분하지 않으며 단위 테스트가 불가능한 상황이 있습니다.

  • 개발자가 아닌 타사 테스터가 테스트할 수 있습니다.

참고) TDD

  • 테스트 기반 개발.테스트 주도 개발
    • 애자일 개발 방식 중 하나
  • 개발자는 먼저 테스트 케이스를 생성하여 요구 사항을 검증한 다음 테스트 케이스를 통과하는 코드를 개발합니다.

  • 아래의 과정을 반복
    1. 테스트 코드 작성
    2. 테스트를 통과하기 위한 (최소) 코드 작성
    3. 리팩토링
  • 장점: 코드에 버그와 버그가 적습니다.

    소스 코드는 간결합니다.

  • 단점 : 테스트 코드 작성에 많은 시간이 소요되며, 초기 학습 비용이 많이 든다.