CODEDRAGON ㆍSecurity/SecureCoding
TDD 개발 절차
구분 |
단계 |
1 |
테스트 추가 |
2 |
테스트 수행(새로운 테스트 실패되도록) |
3 |
코드 작성 |
4 |
테스트 수행(모든 테스트 성공할 때까지) |
5 |
코드 리팩토링 |
6 |
반복 |
Step1 : 테스트 추가
· 추가되는 기능에 대해 구현에 앞서 테스트 케이스를 작성합니다.
· 테스트 케이스로 작성되는 기능은 유닛 테스트 정도의 작은 기능으로 구현합니다.
· 테스트 케이스를 작성하는 개발자는 기능에 대한 상세 요구사항을 파악해야 합니다.
· 테스트 케이스 작성은 JUnit과 같은 유닛 테스트 툴 활용합니다.
Step2 : 테스트 수행(새로운 테스트 실패되도록)
· 추가한 테스트 케이스를 포함하여 유닛 테스트를 수행합니다.
· 새롭게 추가된 테스트 케이스의 결과는 실패(Fail)로 떨어집니다. 새롭게 추가된 테스트 케이스에 대한 코드는 구현되지 않았기 때문에 실패(Fail)하는 것이 당연합니다.
· 추가된 테스트 케이스만 실패하여 개발자에게 구현 및 테스트에 대한 확신을 줄 수 있습니다.
Step3 : 코드 작성
· 테스트 케이스 실패 원인이 된 코드를 작성하는 단계입니다.
· 테스트 케이스 이외의 코드 작성은 금지합니다.
· 테스트 케이스의 결과가 성공(Pass)할 수준의 코드로 작성하는 것이 목표입닏.
Step4 : 테스트 수행(모든 테스트 성공할 때까지)
· 테스트 케이스를 다시 한번 수행하는 단계입니다.
· 추가된 테스트 케이스 및 모든 테스트 케이스를 통과(Pass)하는 것이 목표입니다.
· 모두 통과 시 개발자는 구현사항이 요구사항을 만족한다는 것에 확신할 수 있습니다.
· 새롭게 추가한 코드가 부작용을 일으키지 않았다는 것을 확인할 수 있습니다.
· 테스트 케이스가 통과(Pass)하지 않는 경우 추가된 코드에 문제 있음로 수정이 필요하며 수정 후 이 단계를 다시 수행합니다.
Step5 : 코드 리팩토링
· 테스트 주도 개발 프로세스 수행시 정기적인 코드에 대한 리팩토링 수행이 필요합니다.
· 신규기능 추가에 의한 코드 규모 확대, 중복 코드 제거, 구조 개선, 식별자의 의미가 명확하게 나타나도록 변경 등의 작업을 수행합니다.
· 리팩토링 후에 지속적으로 테스트 케이스를 실행합니다.
· 모든 테스트 케이스 통과(Pass) 시 리팩토링이 기존 기능을 변형시키지 않았음을 확인할 수 있습니다.
Step6 : 반복
· 요구사항의 새로운 기능 추가 구현시 1번째 단계(테스트 추가)부터 반복하여 수행합니다.
· 각 단계의 수행은 간결하게 유지합니다.
· 기능을 작은 단위로 쪼개서 수시로 반영합니다.
· 테스트 주도 개발 절차에 의해 반복적으로 수행합니다.
'Security > SecureCoding' 카테고리의 다른 글
libssh2 라이브러리 - download(다운로드) (0) | 2020.04.24 |
---|---|
경계값 분석(Boundary Value Analysis), 경계값 분석 특징, 등기 분할(Equivalence Partitioning)과의 차이점 (0) | 2020.04.18 |
Banana code(바나나 코드) (0) | 2020.04.03 |
추정 프랙티스 조감도 (0) | 2020.03.27 |
페어 프로그래밍(Pair programming) (0) | 2020.03.19 |