본문 바로가기

TIL150

(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.