SqueakByExample:7.2

From 흡혈양파의 번역工房
Jump to navigation Jump to search

테스트 수행이 중요한 이유

불행하게도, 많은 개발자들이 테스트는 시간낭비라고 생각합니다. 무엇보다도, 이런 개발자들은 버그를 만들지 않으며, 오직 다른 프로그래머들이 버그를 만든다고 믿습니다. 우리들중 대부분은 "내가 좀 더 많은 시간이 있으면 테스트들을 작성할 꺼야"라고 자주 말하기도 합니다. 만약 당신이 결코 버그를 만들지 않고, 그렇게 작성된 코드가 앞으로도 결코 변경되지 않을 것이라고 한다면, 실제로 테스트는 시간낭비일 수 있십니다. 하지만 정말 그렇다면, 대부분의 경우에 있어 만들어진 어플리케이션은 하찮거나, 제작자 및 그 누구도 사용하지 않는다는 의미도 됩니다. 미래를 위한 투자로서 테스트를 생각해 보시기 바랍니다: 테스트들의 suite 를 가진다는건 현 시점에서도 유용하지만, 그보다 앞으로 만들게될 어플리케이션 또는 어플리케이션 환경에서, 어플리케이션을 실행하고 변경할 때 훨씬 더 유용하게 될겁니다.

테스트들은 여러가지 역할을 수행합니다. 첫번째로, 테스트는 테스트가 담당하는 기능에 대한 문서를 제공하게 됩니다. 게다가, 이렇게 제공되는 문서는 활동적[1]입니다: 테스트가 제대로 통과된다면 테스트로 구현되는 문서화가 최신상태라는 의미가 됩니다. 두번째로 테스트들은 개발자가 패키지에 대한 변경사항으로 인해 시스템에 있는것들이 정상임을 확인하는것을 도와주며, 정상적일것이라는 예상에 대한 좋지않은 결과가 나오면, 개발자들이 문제가 있는 부분을 찾는것을 지원하게 됩니다. 마지막으로, 프로그래밍과 동시에 테스트를 작성하는-또는 그 이전에 테스트를 작성하는등-것은 테스트를 실행하는데 목적을 두는것이 아니라, 프로그래밍시 설계시 원하는 기능, 그리고 구현보다 고객에서 보여질지에 대해 더 많이 생각하게 합니다. 테스트를 먼저-코드를 만들기전에-작성함으로써 실행할 기능, 클라이언트 코드와 상호작용하는 방식 그리고 예상되는 결과에 컨텍스트를 기술하는것이 필요해집니다. 이렇게 해서 코드는 개선될 것입니다: 시도해 보십시오.

현실적으로 봤을때 어플리케이션의 모든측면을 테스트할 수는 없습니다. 하나의 어플리케이션 전체를 모두 테스트하는 것은 단순히 불가능한 작업이며, 테스트의 목적이 될 수 없습니다. 훌륭한 테스트 suite를 갖고 있어도, 어플리케이션에 버그는 생길 수 있으며, 이렇게 생긴 버그는 시스템을 손상시킬 기회를 엿보며 잠복하고 있을 수 있습니다. 만약 이러한 현상을 발견하시면, 그 버그를 활용하세요! 버그를 발견하자마자, 버그발생내용대로 테스트를 작성해서 버그를 드러나게 하고, 테스트를 실행해서 오류가 생기는 부분을 지켜보십시오. 이제 버그 수정을 시작하면 됩니다: 테스트를 진행하다보면 언제 테스트 작업을 끝내야 할지를 자연스럽게 알 수 있을겁니다.


Notes

  1. 실행이 가능한 문서라는 점. 6.5에서 관련부분이 조금 설명되어있습니다