일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ios
- Tuist Swift
- Firebase Analytics
- ios database
- ribs
- swift 6
- xcode
- realm
- swift
- Tuist
- Swift Tuist
- 네트워크 통신
- RxSwift
- swiftdata
- Firebase
- SwiftUI
- swift 5.9
- Combine
- observable
- swift db
- Subject
- swift database
- ios swiftdata
- KeyPath
- GCD
- JSON
- arc
- 카카오뱅크 ios
- Subscribe
- SeSAC
- Today
- Total
천원의 개발
TDD(Test-Driven-Development) 와 BDD(Behavior-Driven-Development) 본문
안녕하세요. 천원입니다.
ui/unit 테스트 라이브러리인 Quick/Nimble을 학습하는 도중 TDD와 BDD개념을 정리하고자 글을 작성합니다.
TDD
TDD는 Test Driven Development의 약자로 테스트 주도 개발을 의미합니다.
코드를 작성 후에 테스트 케이스를 구현하는게 아닌 테스트 케이스를 먼저 작성한 후에 이를 통과하는 코드를 추가해 가는 방식의 개발 방법론입니다.
TDD는 위의 그림과 같은 개발주기를 가지고 반복적으로 개발을 진행하는데
Red 단계에서는 실패하는 테스트 코드를 작성하고, Green 단계에서는 테스트 코드를 성공시키기 위한 최소한의 코드를 작성합니다.
Blue 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행합니다.
간단하게 말하자면 실패하는 경우를 찾고, 찾은 경우를 통과하도록 코드를 작성하고 리팩토링 한 후 다시 테스트가 실패하는 경우를 찾는 것을 반복하는 개발주기를 가지고 있다고 보면 될 것 같습니다.
BDD
BDD는 Behavior Driven Development의 약자로 행위 주도 개발을 의미합니다.
TDD를 근간으로 파생된 개발 방법으로 사용자의 행위를 예상하고 결과를 테스트 해보는 개발 방법입니다. BDD는 Given/When/Then 형태로 테스트 기능을 명시하는데 각각 Given, When, Then 은 아래와 같은 역할 을 담당합니다.
Given - 설명하려는 동작(시나리오 정의)
When - 해당동작 (시나리오 조건)
Then - 예상한 동작 (시나리오 완료 후 결과 명시)
Quick 라이브러리와 함께 코드로 살펴 보자면
override class func spec() {
describe("View가 로드되면") { // Given
context("버튼을 누를 시") { // When
it("Count가 증가 판단") { // Then
// Assertion 코드 작성
}
}
}
}
확실히 명시적으로 작성을 해두니 어떤 상황에 사용되는지 코드 작성자 외에 다른 사람도 쉽게 알 수 있을 것 같습니다.
'컴퓨터과학' 카테고리의 다른 글
Swift는 객체 지향 프로그래밍 (0) | 2023.09.03 |
---|