[CS]테스트

한상욱·2024년 7월 26일
0

CS&자격증후기&잡담

목록 보기
13/21
post-thumbnail

들어가며

TDD라는 말을 들어봤을 수 있을 것 같습니다. TDD는 테스트 주도 개발의 약자로 중요하다는 이야기는 많이 들어봤습니다. 오늘은 테스트에 대한 개념을 정리하면서 테스트가 필요한 이유와 테스트 종류, 개념들을 알아보겠습니다.

TEST

테스트는 어떠한 것을 시험하는 것을 의미합니다. 개발에서 TEST란 무엇일까요? 내가 작성한 코드가 정확한 결과를 출력하는지를 의미할 것입니다. 뿐만 아니라 여러 상황에 따른 TEST를 작성하게 되면 구현에서 놓친 예외처리 등을 파악할 수 있고, 규모가 큰 프로젝트에 경우 복잡한 실행 없이도 테스트 코드 수행으로 올바른 동작을 검증할 수 있습니다.

TDD

TDD는 이러한 테스트를 작성하면서 코드를 작성하는 개발방법론입니다. TDD는 처음 창안되었을 때, 작은 단위부터 테스트를 통과시키므로써 개발을 즐겁게 하는 데 큰 이유를 뒀다고 해요. 개발자는 큰 프로젝트에서 작은 단위를 하나하나씩 완성해 나가며 큰 즐거움을 느낄 수 있도록 말이죠.

TDD의 원칙은 아래와 같습니다.

  • 개발자는 새로운 기능에 대한 테스트 코드를 먼저 작성한다.
  • 실패한 테스트를 통과하기 위한 최소한의 코드만 추가한다.
  • 완성된 코드의 리팩토링을 통해 반복적인 부분과 불필요한 부분을 제거하여 코드의 질을 높인다.

테스트의 종류

이러한 테스트에도 여러가지 종류가 있습니다. 크게 4가지 개념이 존재합니다.

  • 단위 테스트(Unit Test)
  • 통합 테스트(Integration Test)
  • 시스템 테스트(System Test)
  • 인수 테스트(Acceptance Test)

단위 테스트

단위 테스트는 가장 작은 단위의 모듈 또는 클래스의 기능이 정상적으로 동작하는지 확인하는 과정입니다. 예를 들어, 계산을 담당하는 클래스가 존재한다면 계산에 대한 결과를 정상적으로 수행해야 겠지요? 이러한 작은 단위가 제대로 된 기능을 수행하지 못한다면 단위를 참조하는 과정에서 예기치 못한 에러가 발생할 수 있습니다.

통합 테스트

통합 테스트는 여러 클래스 또는 모듈을 사용하는 모듈 또는 클래스에서 시행하는 테스트입니다. 위의 계산결과를 사용하는 모듈이 존재하고 이러한 결과를 다른 모듈에 넣고 처리하게 된다면 각 단위가 올바르게 동작해도 잘못된 코드로 인해 통합 수행이 올바르지 못할 수 있습니다. 이러한 것을 방지하는 과정입니다.

시스템 테스트

시스템 테스트는 완성된 프로덕트가 요구사항에 맞는 동작을 정상적으로 수행하는지 검증하는 과정입니다. 실제로 우리가 작성한 코드는 어떠한 요구사항에 맞게 제작이 되는 것인데요. 동작이 올바르더라도 요구사항에 부합하지 않는 경우를 방지하는 것입니다.

인수 테스트

인수 테스트는 고객이 만족할 수 있는지 확인하는 과정입니다. 시스템 테스트에서는 요구사항을 올바르게 만족하는지 수행했다면 인수 테스트에서는 이렇게 동작하는 프로덕션의 사용성, 편리성 등을 테스트한다고 볼 수 있습니다. 실제로는 더 다양한 것을 평가합니다. 이러한 과정에서 알파 테스트와 베타 테스트를 시행할 수 있습니다.

  • 알파 테스트

사내 또는 조직내에서 시범적으로 운영하며 평가항목을 체크합니다. 베타 테스트 직전의 단계라고 할 수 있습니다.

  • 베타 테스트

사외 또는 조직 외에서 실제로 배포함으로써 시범 케이스를 운영하며 사용자들의 반응과 피드백을 수집하는 단계입니다. 실 배포 직전의 단계이며 긍정적이라면 바로 배포로 들어가게 됩니다.

V모델

이미지 출처

이렇게 위에서 살펴본 개념으로 소프트웨어 생명 주기에서는 V모델이라는 것을 이용합니다. 각 테스트는 생명 주기에서 해당하는 과정을 테스트 하는 과정이고 이러한 것은 생명 주기와 반대의 방향으로 실행되도록 된다는 것입니다.

요구사항 -> 분석 -> 설계 -> 구현의 단계에서 테스트는 반대로
단위 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트의 순으로 시행되는 것이겠네요!

profile
자기주도적, 지속 성장하는 모바일앱 개발자가 되기 위해

0개의 댓글