[CS] 테스트케이스와 TDD란?

popolarburr·2023년 2월 23일
0

테스트 케이스에 대한 설명.


A가 주어졌다 하자. 이 A 에 대한 테스트를 작성하기 위한 케이스들은 무엇이 있을까?

  1. 회원(가입, 이메일인증, 로그인, 로그아웃, 정보수정)
  2. 커뮤니티(글 및 댓글 CRUD, 좋아요 , 알림)
  3. 관리(관리자 페이지)

그러나 이 모든 것들은 하나가 두개가 되고, 두개가 세개가 된다.

즉, 모든 케이스들의 일련의 과정처럼 이어져야 한다.

회원가입을 하기 위해선 이메일 인증을 해야하고, 인증이 되면 로그인, 로그아웃이 되어야 하는 느낌이다.

그렇다면 테스트 케이스들은 개발자가 직접 해야할까?

⇒ NO! 작성은 개발자가 하되, 기계가 해주는 자동화 시스템이다.

케이스가 만들어지면 자동으로 기계가 해주는 방식인데, 이를 TDD 테스트 주도 개발이라고 한다.

그렇다면 TDD는 무엇일까?

사전적 의미 : TDD는 Test Drive Development로, 테스트 주도 개발이라고 한다.
반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고, 이를 통과하는 코드를 추가하는 단계를 반복하여 구현하는 것이다.

이러한 TDD에는 3단계가 있다.

  1. 먼저 실패하는 테스트를 추가한다. RED
  2. 이 통과하기 위한 코드를 작성한다. GREEN
  3. 테스트 코드 통과를 유지하면서 최대한 리팩토링을 한다. BLUE

그렇다면 이 코드를 어떻게 작성하나?

각 언어마다 담당하는 테스트 코드 작성 프레임워크가 존재.

자바는 JUnit에 해당!

또한 항상 자바 테스트 코드 작성을 위한 정보를 얻기 위해 검색하면

AssertJ 라는 녀석이 나온다. 이 녀석은 무엇일까?

[AssertJ] JUnit과 같이 쓰기 좋은 AssertJ 필수 부분 정리

궁금하다면 여기로!

그렇다면 실전에서 사용해보자!

나는 간단한 로직 구현을 위해, 프로그래머스 0단계 문제 중 양꼬치 라는 문제를 풀도록 하겠다.

또한 앞서 본 RGB 세 단계를 구현하면서 차근차근 따라갈 예정이다.


1. 실패하는 코드 작성.


실패하는 코드란? 말 그대로 틀린 코드. 주어진 입/출력이나 문제에 맞지 않는 코드를 작성하여 일부러 틀리는 것이다.

문제는 다 파악했을테니 바로 들어가자

이러한 디렉토리 구조를 가진다.

이렇게 입력값 두 개를 더하고 리턴하게끔 세팅하고, 테스트 코드를 작성하러 가자

3과 5를 넣으면? 당연히 8이 나오겠지. 그러나 나는 7을 기대할거야

이런식으로 짜고 파일을 실행시키면

짠! 1단계 Red 완성. 틀린 코드를 작성했지. 틀린 후에는 성공할 코드를 작성하는거야


2. 성공할 코드 작성

여기까지 2단계 Green. 나머지를 완성해보자 문제에 맞게!


3. 리팩토링

네 개의 테스트와 그에 맞는 정답 코드 공개

여기까지가 3단계 Blue. 그럼 TDD 완성!


좀 더 편하게 보고싶다 ?

공부저장소

profile
차곡차곡

0개의 댓글