본문 바로가기

전체 글164

(unit test) Note: Your tests go outside the code that you're testing 테스트할 코드는 절대 테스트를 진행하는 코드 안에 넣으시면 안 됩니다. 각 테스트는 각 함수를 "블랙 박스"처럼 다뤄야 합니다. 각 테스트는 단순히 input 값을 제공하고 assertion과 expectation만을 output 값으로 반환하는 역할을 하는 것입니다. 아래는 좋지 않은 예입니다: function decorateClassListWithAges(classList) { var classListWithAges = classList.map(function(student) { return {'name': student, 'age': getRandomIntInclusive(10, 15)} }); var checkAge = assertRange(classListWithAges[0].age, 10, 1.. 2020. 1. 15.
How do I decide what to test? (unit test) 아래 square 함수에 대한 더 구체적인 assertion을 한번 살펴봅시다: -5가 input 값일 때, 25가 output 값으로 반환한다. 0이 input 값일 때, 0이 output 값으로 반환한다. 5가 input 값일 때, 25가 output 값으로 반환한다. 0.25가 input 값일 때, 0.0625가 output 값으로 반환한다. 위 assertion들이 잘 작성되었다고 느껴졌을 것입니다. 왜 그렇게 느껴졌을까요? 물론, 위 assertion들은 그냥 작성된 것이 아닙니다. 잘 만들어졌는지 여부를 확인하기 위해 square(제곱)의 특징을 한번 살펴봅시다: 음수를 제곱하면 양수가 된다. 0을 제곱하면 0이된다. 숫자의 제곱은 그 숫자 자신을 곱하는 것이다. 분수를 곱하면 그 숫자는 더 .. 2020. 1. 15.
(unit test) Terminology note: Assertions are not unit tests! Assertion은 주어진 프로그램의 역할이 true 또는 false인지 판단하는 주장으로 이루어진 문장입니다. 먼저 Assertion을 만들기 위해서는 기본적인 구성을 해야합니다. 테스트를 위한 input 값을 준비하고 예상되는 expected 결과값을 준비합니다. Class를 포함하는 경우, 그 class에 대한 예시를 명시해 놓아야 합니다. 또는 assertion 이전에 실행해야 할 다른 상황이 있을 수도 있습니다. 예를 들어, 4가지 순서로 이루어진 코드에서 3번째 순서를 실행시키기 위해서 1번과 2번의 결과값을 준비해야 하는 상황이 있을 수 있습니다. Assertion을 진행하기 전에 하는 모든 세팅도 테스트의 일부라고 볼 수 있습니다. Unit test와 assertion을 일부러 구분해서 소.. 2020. 1. 15.
(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.