본문 바로가기

---- Contents ----164

What's a "unit test"? (unit test) 신뢰할 수 있는 시스템은 신뢰할 수 있는 컴포넌트로 구성되어 있습니다. 레고 블록이 갑자기 양을 바꾸지 않습니다. 갑자기 변하지 않고 자신의 역할을 분명히 합니다. 이 신뢰를 바탕으로 다른 레고 블록을 연결할 수 있으며 복잡한 블록 구조를 만들어낼 수 있게 되는 것입니다. 프로그램의 컴포넌트는 레고 블록처럼 작동되어야 합니다. 서로가 약속한 대로 작동하게 된다면 아주 복잡한 프로그램도 만들어낼 수 있게 됩니다. 그러지 못한다면 모든 것들은 관리가 불가능할 것입니다. 그렇다면 어떻게 (자신이 작성한) 각각의 컴포넌트들이 서로 의도대로 작동하는지 알 수 있을까요? 유닛 테스트가 바로 그 역할을 합니다. 각 "유닛"은 여러분이 작성한 컴포넌트, 레고 블록입니다. 쉽게 이해해보면, 프로그래밍에서 가장 기본적인 .. 2020. 1. 15.
Testing, and the value thereof (unit test) 엔지니어링에서 수학은 가장 엄격한 잣대를 요구합니다. 구조 공학, 기계 공학, 우주 공학 모두 미분, 적분, 미분 방정식, 선형 수학 등을 주로 사용하며, 무엇이든지 그냥 만드는 경우는 없습니다. 컴퓨터 공학도 수학에 깊은 뿌리를 두고 있지만, 공학도들처럼 직접적으로 사용하는 경우는 드뭅니다. 그렇다면, 프로그래머들은 자신이 구축한 시스템이 바르게 작동하는지 어떻게 알 수 있을까요? 일반적으로 프로그래머들이 하부 시스템들을 구축해 나가는 과정에는 계산과정이 그다지 많지 않습니다. 대부분의 프로그래머들에게 해당되는 실제적인 답변은... 테스트 작성이 프로그래머 세계에서의 엄격한 공학입니다. 여기서 언급하는 "테스트"라는 말은 특정한 매뉴얼을 가지고 프로그램의 작동을 확인한다는 말이 아닙니다. Automat.. 2020. 1. 15.
테스트 주도 개발 TDD(Test-driven Development) TDD(Test-driven Development)는 코드를 작성하기 전에 테스트를 쓰는 방법론입니다. Pros 대부분의 사람은 TDD를 버그 잡는 방법이라고 생각합니다. 그런 면도 있지만 생각해보면 버그를 잡기 위해 테스트를 짠다는 생각은 비직관적입니다. 테스트를 실행하고 그 후에 버그를 잡는다고 생각하는 것이 더 논리적일 것입니다. 실제로 TDD를 통해 정교한 테스트를 짜기 위해서 코드를 어떻게 구성할지 고민하게 되며, 그 과정에서 버그가 더 적은 코드를 짜게 됩니다. 테스트가 쉽도록 코드를 디자인하는 것도 같은 효과를 내게 됩니다. TDD는 무턱대고 코드를 바로 작성하지 않고 코드를 면밀하게 살펴보도록 합니다. 자신이 작성할 코드가 어떤 역할을 하게 되며, 전체와 어떤 관계가 있는지 생각하게 합니다.. 2020. 1. 15.