SqueakByExample:7.1
소개
SUnit은 테스트의 생성과 배치를 지원하는 최소한의 강력한 프레임 워크입니다. 그 이름에서 추측할 수 있듯이 Sunit의 디자인은 유닛 테스트(Unit Tests)에 집중되어 있지만, 사실상 통합 테스트(integration tests)와 기능 테스트(functional tests)를 위해 사용될 수 있습니다. Sunit은 본래 Kent Beck이 개발하였으며, Joseph Pelrine이 확장하였고 또 다른 사람들이 섹션 7.6에 우리가 설명드릴 내용인 자원의 개념을 통합하였습니다.
테스트 실행과 테스트가 이끄는 개발에(Test Driven Development) 대한 관심은 스퀵 또는 스몰토크에 제한된 것은 아닙니다. 자동화 테스트(Automated testing) 실행은 애자일(Agile) 소프트웨어 개발 운동의 전형적인 특징을 이루었으며, 모든 소프트웨어 개발자들의 소프트웨어의 질 향상에 대한 관심은 그것을 채택하도록 만들 것입니다. 실제로 많은 언어를 사용하는 개발자들은 Uniet 테스트 능력의 진가를 알아보기 시작하였으며, xUnit의 버전은 Java, Python, Perl, .NET과 오라클을 포함한 많은 다른 언어들로 존재합니다. 이번 장은 SUnit 3.3(이 글을 쓸 당시 최신버전)에 대해 기술하였으며, 업데이트를 발견할 수 있는 SUnit의 공식 웹은 sunit.sourceforge.net입니다.
테스트 또는 테스트 스위트(test suites)의 구축 모두 새로운 것은 아니며, 모든 사람들은 테스트가 에러를 잡아내는 좋은 방법임을 알고 있습니다. 테스트를 핵심 실행법으로 만들고 자동화된 테스트를 강조한 eXtream 프로그래밍은, 테스트 실행을 프로그래머들이 싫어하는 정기적인 업무가 아닌, 생산적이고 재미있게 만드는 작업이 되도록 도움을 주어 왔습니다. 스몰토크 커뮤니티는 오랜 테스트 실행의 전통을 갖고 있으며, 그 이유는 개발의 증강 형식(incremental style of development)은 그 프로그래밍 환경에 의해 지원되기 때문입니다. 전통적인 스몰토크 개발환경에 있는 프로그래머들은 테스트들을 메서드가 마무리 된 후 곧바로 워크스페이스에서 작성할 것입니다. 때때로 연습으로 실행될 메서드의 헤드 부분에서 주석(comment)으로서 통합될 수 테스트들과 또는 약간의 설정이(set up) 필요한 테스트들은 클래스에서 견본 메서드로(example methods) 포함될 수도 있습니다. 이 실행들의(practices) 문제점들은 워크스페이스에서의 테스트들은 코드를 수정하는 다른 프로그래머들이 사용할 수 없다는 것이며, 주석들과 견본 메서드들은 이러한 점에서 더 낫지만, 그것들을 추적하고, 자동으로 시작하는 것은 여전히 쉽지 않습니다. 실행하지 않은 테스트는 버그를 찾는 작업에 있어 여러분을 도울 수 없습니다. 더욱이, 견본 메서드(example method)는 기대한 결과의 리더(reader)를 알려주지 않으므로, 여러분은 견본(example)을 실행할 수 있고 아마도 놀랄만한 결과를 보실 수 있을 것이지만, 관찰된 동작이 정확한지에 관하여서는 알 수 없을 것입니다.
SUnit은 가치가 있습니다. 그 이유는 이것이 우리에게 자체 점검(self-checking) 테스트들 작성을 허용하기 때문입니다: 테스트 자체는 정확한 결과가 되어야 할 것을 정의합니다. 또한 이 테스트는 우리가 테스트들을 그룹들에 조직하고, 테스트들이 반드시 실행되어야 할 컨텍스트를 기술하고 그리고 테스트들의 그룹을 자동으로 실행하는 작업을 돕습니다. 2분 이하의 시간에, 여러분은 SUnit을 사용하여 테스트들을 작성할 수 있으므로, 우리는 여러분이 워크스페이스에서 작은 코드 조각을 작성하는 대신에, SUnit을 사용하여 모든 저장된 내용들과 자동으로 실행 가능한 테스트들을 활용하실 것을 권장합니다.
이번 장에서 우리는, 왜 우리가 테스트를 시행하고 무엇이 좋은 테스트를 만드는지에 관해 토론을 함으로써 시작하겠습니다. 그 다음 SUnit을 사용하는 방법을 보여드리는 작은 일련의 작은 예시들을 제공해 드릴 것입니다. 마지막으로, 우리가 함께 SUnit의 실행을 살펴보면, 여러분이 스몰토크가 반영(reflection)의 파워를 그것의 도구들을 지원하는 작업에 사용하는 방식을 이해할 수 있게 될 것입니다.