테스트 중심 개발이란 무엇인가요?
Test-Driven Development, 정식 영어 이름은 Test-Driven Development, 줄여서 TDD는 기존 소프트웨어 개발 프로세스와는 다른 새로운 개발 방법입니다. 특정 기능에 대한 코드를 작성하기 전에 테스트 코드를 작성하고, 테스트를 통과하는 기능적 코드만 작성하고, 테스트를 통해 전체 개발을 추진해야 합니다. 이를 통해 간결하고 사용 가능한 고품질 코드를 작성하고 개발 프로세스 속도를 높일 수 있습니다.
2가지 기본 원칙
테스트 주도 개발의 기본 아이디어는 기능적 코드를 개발하기 전에 테스트 코드를 작성하고, 그런 다음 테스트를 통과하는 기능적 코드만 작성하는 것입니다. 전체 개발 프로세스를 테스트하여 구동된다는 것입니다. 이는 매우 유연하고 강력하며, 변화에 신속하게 대응하고, 개발 프로세스를 가속화할 수 있는 간결하고 사용 가능한 고품질 코드를 작성하는 데 도움이 됩니다.
테스트 중심 개발의 기본 프로세스는 다음과 같습니다.
① 빠르게 테스트 추가
② 모든 테스트 실행(때로는 테스트 중 하나만 또는 일부만 실행) 실행해야 함), 새 테스트를 통과할 수 없음을 발견했습니다.
3 테스트 프로그램을 가능한 한 빨리 실행 가능하게 만들기 위해 몇 가지 작은 변경을 수행합니다. 이를 위해 프로그램에서 몇 가지 불합리한 방법을 사용할 수 있습니다.
④ 모든 테스트를 실행하고 모두 통과
⑤ 코드를 리팩터링하여 반복되는 디자인을 제거하고 디자인 구조를 최적화합니다.
간단히 말하면 실행이 불가능합니다. /runnable/refactored— —이것이 바로 테스트 중심 개발의 진언입니다.
본질과 장점
아마도 테스트 중심 개발의 본질과 장점을 이해한 후에야 그 무한한 매력을 감상하게 될 것입니다. 테스트 주도 개발은 테스트 기술이 아니라 분석 기술, 설계 기술, 모든 개발 활동을 체계화하는 기술이다. 기존의 구조화된 개발 프로세스 방법과 비교하면 다음과 같은 장점이 있습니다. [3]
1) TDD는 고객 요구에 따라 테스트 케이스를 작성하고 기능적 프로세스와 인터페이스를 설계합니다. 사용자의 관점은 일반적으로 이후 개발 요구 사항에 더 부합합니다. 사용자 피드백에 귀를 기울이기 때문에 요구사항 변화에 적시에 대응할 수 있고, 사용자 관점에서 디자인이 단순하기 때문에 변화에 더 빠르게 적응할 수도 있습니다.
2) 쉬운 테스트와 테스트 독립성에 대한 요구 사항으로 인해 우리는 느슨하게 결합된 디자인을 구현하고 성전환 시스템의 확장성과 저항성을 향상시키기 위해 특정 클래스보다는 인터페이스에 더 많이 의존하게 될 것입니다. 그리고 TDD는 설계 결정을 위한 피드백 루프를 크게 단축하여 몇 초 또는 몇 분 내에 피드백을 얻을 수 있게 해줍니다.
3) 코딩하기 전에 테스트 작업을 먼저 수행하고 모든 테스트를 자주 실행하여 가능한 한 빨리 오류를 방지 및 감지하고 후속 테스트 및 복구 비용을 크게 절감하며 코드 품질을 향상시킵니다. 테스트의 보호 하에 코드는 반복되는 디자인을 제거하고 디자인 구조를 최적화하며 코드의 재사용성을 향상시키기 위해 지속적으로 재구성되어 소프트웨어 제품의 품질을 향상시킵니다.
4) TDD는 지속적인 회귀 테스트를 제공하므로 코드 변경으로 인해 시스템의 다른 부분에서 예외가 발생하므로 테스트에서 즉시 알려줍니다. 완전한 테스트는 전체 시스템의 상태를 지속적으로 추적하는 데 도움이 되므로 예측할 수 없는 부작용에 대해 걱정할 필요가 없습니다.
5) TDD에서 생성된 단위 테스트 코드는 가장 완벽한 개발자 문서입니다. 모든 API가 어떻게 사용되고 작동하는지 보여주며 작업 코드와 동기화되어 항상 최신 상태입니다. . 의.
6) TDD는 스트레스를 줄이고, 걱정을 줄이고, 코드에 대한 자신감을 높이고, 리팩터링할 수 있는 용기를 줄 수 있습니다. 이는 행복한 작업을 위한 중요한 전제 조건입니다.
7) 개발 효율성을 빠르게 향상시킵니다.
현재 상황 및 전망
테스트 주도 개발 기술은 점점 더 폭넓은 관심을 받고 있지만, 개발 시간이 짧기 때문에 관련 애플리케이션이 그다지 성숙되지 않았습니다. 요즘에는 테스트 주도 개발을 실천하려는 기업이 늘어나고 있지만, 테스트 주도 개발은 개발자에 대한 요구사항이 상대적으로 높고 개발자의 전통적인 사고 습관에 어긋나기 때문에 실천하기가 어렵습니다.
IBM을 비롯한 미국의 많은 유명 소프트웨어 회사들은 아주 일찍부터 애자일로 전환하기 시작했습니다. 이 과정에서 일반적으로 TDD는 IBM의 개발 전환 부서 부사장인 Sue Mckinney가 말했듯이, "테스트 중심 개발의 전망은 매우 매력적입니다. 그러나 "우리는 이 프로세스에서 가장 많은 비용을 지불했을 것입니다." Forrester의 수석 분석가인 Dave West는 테스트 중심 개발(TDD)이 " 성배'가 아니라 '이 목표를 달성할 수 있다면 아무리 많은 비용을 지불하더라도 그 노력은 그만한 가치가 있습니다.'
테스트 중심 개발을 촉진하는 데 있어 첫 번째 문제는 다음과 같습니다. 오랜 시간 동안 개발자가 형성한 사고 개념과 이데올로기를 변경합니다. 개발자는 코딩만 좋아하고, 제품 코드도 없는데 왜 먼저 단위 테스트를 작성하는지 이해할 수 없습니다. 기술 지원, 테스트 중심 개발은 테스트 및 리팩토링을 마스터하는 것뿐만 아니라 디자인 패턴과 같은 디자인 측면에 대한 지식을 이해하는 것까지 개발자에게 더 높은 요구 사항을 제시합니다.
모든 혁신적인 제품이 처음 생산될 때 어려운 여정을 거쳐야 하는 것처럼 테스트 중심 개발도 이를 거치지만 점차 성숙해지고 있으며 밝은 미래를 가지고 있습니다. 앞으로 몇 년 안에 점점 더 많은 국내 소프트웨어 회사들이 테스트 주도 개발을 대중화하기 시작할 것이라고 믿습니다.