[Test] ...?

한지민·2022년 5월 16일
0

Test

목록 보기
1/3
post-thumbnail

테스트?

개념

소프트웨어 공학에서 테스트는 다음과 같이 정의된다.

프로그램을 실행시켜 결함을 찾고자 하는 활동

개발 의도에 맞춰 프로그램이 정상적으로 동작하는지 확인하는 과정이라 볼 수 있다.

종류

  • 단위 테스트
  • 통합 테스트
  • 시스템 테스트
  • 블랙박스 테스트
  • 화이트박스 테스트
  • 인수 테스트
  • 회귀 테스트

위 테스트뿐만 아니라 테스트의 관점이나 범위, 방식 등에 따라서 다양한 테스트가 존재한다.

TDD? BDD?

TDD

Test Driven Development의 약자로 테스트 주도 개발이라고 한다.

프로그램 개발 시 Test Code를 우선 작성하고, 이를 통과할 수 있는 실제 코드를 작성하는 것을 반복하는 방식이다.

애자일 방법론 중 하나인 XP의 Test First 개념에 기반을 둔 방법론이다.

특징

TDD는 다음 3가지 키워드 순으로 개발이 진행된다.

  • Red - 실패하는 테스트 추가
  • Green - 성공하는 테스트 추가
  • Refactor - 테스트 통과를 유지한 채로 구현 설계 개선

위 3가지를 계속해서 반복하면서 작은 기능부터 결과적으로 프로그램까지 해당 주기를 통해 완성해내는 형태이다.

장점

  • 객체 지향적인 코드 생산
  • 추가 구현 용이
  • 디버깅 시간 단축

실제 코드를 작성하기전 미리 구조를 생각하게 되고, 테스트를 위해선 각 기능별로 잘 분리가 돼야하는 특성이 이같은 장점을 유도한다.

단점

  • 개발 시간 증가
  • 적용 난해

테스트 코드와 개발을 같이 진행하다보니 실제 개발에 필요한 시간은 증가하는 형태이고, 단순히 개발을 하는 것과는 다르다보니 실 사용 시 적응이 필요하다.

BDD

Behavior Driven Development의 약자로 행위 주도 개발이라고 한다.

TDD에서 파생된 개발 방법론으로 TDD가 함수 단위의 테스트를 중심으로 한다면 BDD는 이보다 좀 더 추상적인 행위 단위의 테스트를 중심으로 한다.

특징

함수 단위의 테스트가 아닌 시나리오를 기반으로 하기 때문에 테스트 코드를 다음과 같은 패턴으로 작성하는 것을 권장한다.

  • Feature - 대상의 기능/책임 명시
  • Scenario - 상황 설명
  • Given - 필요한 값 설정
  • When - 필요 조건 명시
  • Then - 시나리오 종료 시 보장 결과 명시

TDD, BDD 관련해 다음 영상을 추천드립니다.
if(kakao)2020 - kotest가 있다면 TDD 묻고 BDD로 가!

앞으로

IOS에서 Unit 테스트를 어떻게 작성하는지 알아보고, 이와 관련된 프레임워크를 사용해 볼 예정이다.
이후엔 실제 프로젝트에 테스트 코드를 작성하고자 한다.

profile
IOS Developer

0개의 댓글