본문 바로가기

TIL150

(Unit test) Assertions && Test frameworks 유닛 테스팅은 Assertions(해결하고자 하는 '주장')이라는 개념으로 이루어져 있습니다. 프로그래머들은 자신이 주장한 특정한 환경에서 주어진 값이 옳은지 여부를 해결하기 위한 Assertion을 내세우게 됩니다. 간단한 예로: function square(x) { return x * x; } 위 함수에 대한 아주 단순한 유닛 테스트는 다음과 같이 적을 수 있습니다: console.log(square(5) === 25); 만약 square라는 함수에 5라는 값을 input 값으로 넣었을 때 output 값이 25가 나오면 true를 반환합니다. 그러나 sqaure라는 함수에 5라는 값을 input 값으로 넣었을 때 output 값이 125가 나오면 false를 반환합니다. Test frameworks.. 2020. 1. 15.
When should I unit test? (unit test) 사소한 함수를 제외한 모든 함수에 유닛 테스트를 해야 합니다. 프로그래밍 인터뷰에서는 시간 제약을 감당하기 위해 원칙을 벗어날 수밖에 없을 때도 있을 것입니다. 그러나 유닛 테스트를 안 하는 것은 아주 안 좋은 습관입니다. 마치 가드레일이 없는 도로에서 고속으로 달리는 차가 낭떠러지에서 떨어지기 쉬운 것처럼, 오히려 테스트를 안 해서 버리게 되는 시간이 더 많게 될 것입니다. 복잡하게 코드를 작성해서 스스로 헷갈리게 되는 경우는 아주 빈번합니다. 반면 각각의 컴포넌트들을 테스트하면 무엇을 만들고 있는지를 바로 이해할 수 있습니다. A warning sign that you should be testing 코드를 작성하는 과정에서 여기저기 console.log 를 찍어 지금 도대체 무슨 일이 일어나고 있는.. 2020. 1. 15.
What's a "unit test"? (unit test) 신뢰할 수 있는 시스템은 신뢰할 수 있는 컴포넌트로 구성되어 있습니다. 레고 블록이 갑자기 양을 바꾸지 않습니다. 갑자기 변하지 않고 자신의 역할을 분명히 합니다. 이 신뢰를 바탕으로 다른 레고 블록을 연결할 수 있으며 복잡한 블록 구조를 만들어낼 수 있게 되는 것입니다. 프로그램의 컴포넌트는 레고 블록처럼 작동되어야 합니다. 서로가 약속한 대로 작동하게 된다면 아주 복잡한 프로그램도 만들어낼 수 있게 됩니다. 그러지 못한다면 모든 것들은 관리가 불가능할 것입니다. 그렇다면 어떻게 (자신이 작성한) 각각의 컴포넌트들이 서로 의도대로 작동하는지 알 수 있을까요? 유닛 테스트가 바로 그 역할을 합니다. 각 "유닛"은 여러분이 작성한 컴포넌트, 레고 블록입니다. 쉽게 이해해보면, 프로그래밍에서 가장 기본적인 .. 2020. 1. 15.