These kinds of benefits are often talked about with respect to TestDrivenDevelopment (TDD), but it's useful to separate the concepts of TDD and self-testing code. -
Martin Flowler
번역 :
Test Driven Development
와Self Testing Code
의 개념을 분리하는 것이 유용합니다.
Test Driven Development
를 깊게 이해하기 위해서는Self Testing Code
를 알아야 했고, 그 차이를 이해할 필요가 있었습니다.
글을 읽을 때,
Test Driven Development
는Self Testing Code
를 만드는 방법이라고 생각하면 쉽게 이해할 수 있습니다.
Test Driven Development
가 무엇인지, 왜 사용하는지를 확인한 다음,Self Testing Code
에 대해 간략하게 다뤘습니다.
테스트를 활용해 소프트웨어 개발 가이드를 구축하는 방법을 말합니다.
Self Testing Code
획득Self Testing Code
을 획득할 수 있습니다. 자세한 내용은 아래에서 다뤘습니다.개발 과정에서 생산성 저하된다는 단점이 있습니다. 이런 단점으로 Test Driven Development
를 생략하고 단위 테스트를 작성한다면, 구현된 테스트 들은 Self Testing Code
라고 신뢰하기 어렵습니다.
세 단계를 계속 순환하면서 시스템의 기능을 구현하게 됩니다.
테스트를 작성하고 코드를 작성하게 되면 일부분씩 구현되어 코드 중복 많이 발생합니다. TDD로 개발할 때, 리팩터링으로 코드 중복을 줄여 유지 보수 비용을 줄이는 게 핵심입니다.
리팩토링은 기존 코드 베이스의 디자인을 개선하기 위한 통제 기술입니다. 리팩토링의 본질은 행동을 보존한 체로 변환을 적용하는 것입니다.
처음에는 리팩토링을 수행해야할 가치가 적어서 수행하기 어렵지만, 리팩토링을 수행하지 않으면서 기술 부채는 기하 급수적으로 늘어납니다.
작은 단계로 리팩토링하면 리팩토링으로 인한 오류 발생과 오류 범위를 줄여 리팩토링이 쉬워집니다.
Self Testing Code
란하나의 명령어에 하나의 테스트를 작성하면서 코드에 숨어 있는 모든 버그를 찾는 방법입니다. Self Testing Code
덕분에 코드에 심각한 결함이 없다고 확신할 수 있습니다.
Self Testing Code
의 장점Self Testing Code
활용 방법Self Testing Code
를 통해 Continuous Integration
를 달성할 수 있습니다.
Test Driven Development
는 Self Testing Code
를 만드는 방법입니다.Test Driven Development
는Self Testing Code
, 그리고 추상화가 잘된 기능 들을 얻을 수 있습니다.Test Driven Development
에서 리팩토링으로 코드 중복을 줄여 유지 보수 비용을 줄이는 데 신경써야 합니다.