TDD
테스트 주도 개발은(TestDrivenDevelopment)은 매우 짧은 개발 사이클을 반복하는 software 개발 프로세스 중 하나이다. 개발자는 새로운 함수를 정의하는 자동화된 TestCase를 먼저 작성한다. 이후에 TestCase를 통과하기 위한 최소한의 양의 코드를 생성한다. 그리고 마지막에 해당 코드들을 표준에 맞도록 refactoring 하는 것이 바로 TDD 개발 방법이다. - wiki백과
기존 개발 프로세스
설계 -> 개발 -> 테스트 (-> 설계 수정)
TDD 프로세스
설계 -> 테스트 (-> 설계 수정) -> 개발
TDD의 3가지 절차
- Red(실패) : Writing a Failing Test TDD 개발에서의 첫 번째 단계는 실패이다. 즉, 실패하는 테스트 케이스를 작성하는 것
- Green(성공) : Write just enough code to pass it 두 번째 단계는 성공이다. 실패 단계에서 작성한 테스트 케이스를 통과시키기 위한 최소한의 코드를 작성하는 단계
- Blue(리팩토링): Change code for better without chaning the behavior 세번째 단계는 리팩토링이다. 성공 단계에서 작성한 코드에 중복되는 코드나, 개선시킬 방법이 있다면 리팩토링을 진행
TDD의 장점
- 객체지향적인 코드 개발
- 설계 수정 시간의 단축
- 디버깅 시간의 단축
- 유지 보수의 용이성
- 테스트 문서의 대체 가능
- 테스트 코드를 먼저 작성한다면 명확한 기능과 구조를 설계
- 테스트 코드를 먼저 작성하고 바로 테스트를 해보기 때문에 설계의 구조적인 문제를 바로 찾아날 수 있게 됨
- 단위 테스트 기반의 테스트 코드를 작성하기 때문에 추후에 프로그램에 문제가 발생하였을 때에도 각각의 모듈 별로 테스트를 진행해보면 문제의 지점을 쉽게 찾아낼 수 있게됨
- 단순한 기능이라도 수정되거나, 추가되는 경우에는 모든 기능들을 처음부터 다시 테스트 해야하지만 유닛 테스팅을 전재하므로 이러한 테스트 기간이 줄어듬
- 테스팅을 자동화 시킴과 동시에 정확한 테스트의 근거를 산출. 즉, 내부의 있는 모듈들의 각각 어떠한 방식으로 테스트 되었는지 파악이 가능
단위테스트(Unit Test)
단위테스트(Unit Test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다. 즉, 모든 함수에 대한 테스트 케이스(TC; TestCase)를 작성하는 절차를 말한다. 각 테스트 케이스는 서로 분리 되어야 한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. -wiki백과
효율적인 단위테스트를 위한 고려사항
Right(결과가 올바른가?) - BICEP
- Boundary : 모든 경계 조건이 correct 한가? (경계값들의 조건)
- Inverse : 역 관계를 확인할 수 있는가?
- Cross-Check: 다른 수단을 사용해서 결과를 교차 확인할 수 있나?
- Error Condition: 에러 조건을 강제로 만들 수 있나?
- Performance: 성능 특성이 한도내에 있나?
'Swift > 앱 개발 이론' 카테고리의 다른 글
CI/CD란 무엇일까? (1) | 2023.12.02 |
---|---|
프로토타입을 만드는 단계 (1) | 2023.11.30 |
제품 개발 방법론 (0) | 2023.11.29 |