카테고리 없음

TDD 알아보기

양시관 2024. 1. 13. 01:35

 

1. TDD 를 알게 된 계기

 

사실 얼마전 뱅크샐러드를 가고싶은 한 개발 지망생으로, 뱅샐에 스택에 대해서 궁금증으로 찾아보았다.

XCTest라는 테스팅 프레임워크라는것을 알아보았다.

공부를 하다보니.. 아! 이거 대학교 3학년 과제였던가,.. 현직자인 아버지에게 자문을 구하던 와중 아버지께서 TDD 라는 것을 아냐고 

물어보셨다. 그땐 당연히 알지도 못했고 사실 별로 관심이 없기도 했다. 그땐 과제가 더 급했다..ㅋㅋㅋ 그렇게 이름만 들어보았던 녀석이

이제는 내 앞에 있다.

조금 헷갈렸던 부분은 XCTest 와 TDD 는 뭐가 달라? 라는 의문이 였다. 공부 하다보니 그냥 툴이다. TDD 를 사용하기위한 XCTest 라고

생각하면 될것같다.

 

2. TDD 란

 

Test Driven Development 이다. TDD 는 소프트웨어 개발 방법론 중 하나로, 실제 코드를 작성하기전에 테스트 케이스를 먼저 작성하여 접근하는 방식이라고 한다 개발 과정으로는 테스트를 작성하고 실패를 확인하고 코드작성 및 리팩토링을 반복하는 작업이다. 

백문이 불여일견 바로 테스트해보았다.

import Foundation


class Calculator {
    func add(_ a : Int, _ b : Int) -> Int {
        return a + b
    }
    func sub(_ a : Int,_ b :Int) -> Int {
        return a - b
    }
    func muliti(_ a :Int, _ b :Int ) -> Int{
    return a * b
    }
    func devide(_ a: Int ,_ b :Int ) -> Int{
        return a / b
    }
    
}

 

자 이 파일은 간단한 사칙연산을 함수와 해놓은 파일이다.  자 이제 이녀석들을 호출해보자.

그러면 이런 모양이 된다. 물론 파일위치는

(TDD_XCTestTests 이런 파일안에다가 해야한다..) 요종도는 기본..

import XCTest
@testable import TDD_XCTest

final class TDD_XCTestTests: XCTestCase {

    func testAdd() {
        let math = Calculator()
        
        let result = math.add(3, 5)
        XCTAssertEqual(result, 3)
        
        
    }
    
    
    func testsub() {
        let math = Calculator()
        let result = math.sub(3, 5)
        XCTAssertEqual(result,-2)
        
    }
    
    func testDivide() {
        let math = Calculator()
        let result = math.devide(3, 1)
        XCTAssertEqual(result,-2)
        
    }
    
    func testmulti() {
        let math = Calculator()
        let result = math.muliti(3, 2)
        XCTAssertEqual(result,6)
    }
}

 

요론식으로 호출을 해준뒤에 테스트를 해본다. 테스트를 하는방법은 

 

 

class 의 왼쪽에 있는 다이아몬드 모양에 포인터를 가져다 대면 재생버튼 모양이 나오는데 클릭해주면 된다.

자 그럼 결과를 확인해보자.

 

 

자 이처럼 내가 만얀 add 함수를 호출하고 인자값들을 3,5를 넣었을때 내가 예상한값은 8이다. 하지만 equal 함수로 result 가 3이라고 했기때문에 체크해서 왼쪽 줄에는 x 라고 표시가 나오며 틀렸다고 알려주고 에러문처럼 빨간줄이 그어진다. 내용을 읽어보면 8이여야되는데 3이야 라고한다. 

자, 이렇게 간단하게나마 프로젝트를 진행 해보았다. 확실히 다른 곳들에서 플젝까지 해보며 하는 사람들은 많이 못봤기에 다들 보고 확인하며 공부해보길 바란다. 확실히 이런 방법을 사용하면 일단 앱을 통으로 빌드하지않아도 될거같고 내가 어느부분에서 문제가있는지 디버깅하며 고생하는게 아닌 메서드 호출해가면서 예상값들 계산해가며 진행하는 방법이 시간은 많이 들지만 그래도 정확하고 유지보수도 좋을거같다는 생각이들면서 밑 목차들도 마저 진행해보겠다.

 

 

3. TDD 의 개발주기

 

아까 위에서 말한것같아서 생략한다.

간단하게로는 

테스트작성 -> 최소한의 코드를 작성 -> 리팩토링 이것의 반복이라고 보면된다.

 

5. TDD 장점

 

1.버그의 감소 : 테스트를 먼저 작성하니까 당연히 버그발생가능성이 줄어든다.

2.리팩토링의 안정성: 테스트가 있기에 코드를 리팩토링할때 안정성이 보장된다.

3.개발 명확성: 개발해야하는 기능을 확실하게 파악되고 눈에잘들어온다.

 

 

6. TDD 단점

 

1.시간의 소모.. (사실 진짜 간단하게 짜보아서 그런거지 만약 복잡한 로직을 저렇게 넣고 분석하고 테스트하면 시간 개오래걸릴거같음.)

2.학습곡선: TDD 에 일단 익숙해져야할거같다. 프로젝트를 만드는 시점부터 어질어질합니다. 처음보는 파일들이 생겨버리고 어디에 테스트를 해야할지를 잘모르겠다.