코드 테스트가 중요한 이유

코드 테스트는 소프트웨어 개발 프로세스의 중요한 부분입니다. 코드가 원하는 대로 작동하는지 확인하는 방법입니다. 또한 버그가 프로덕션에서 문제를 일으키기 전에 초기에 버그를 찾아 수정할 수 있습니다.

이 기사에서는 코드 테스트가 중요한 이유를 살펴보겠습니다. 코드를 테스트하는 방법에는 여러 가지가 있으며 가장 중요한 방법인 단위 테스트를 다룰 것입니다.

항상 코드를 테스트하십시오



이유에 대해 이야기하기 전에 무엇에 대해 이야기합시다. 코드 테스트란 무엇입니까? 코드가 원하는 대로 작동하는지 확인하는 것입니다. 그렇게 쉽습니다.

자, 왜 귀찮게 코드를 테스트해야 할까요? 단일 모듈이 있는 프로그램이 있다고 상상해 보십시오. 그것은 오직 한 가지에만 책임이 있습니다. 테스트는 과잉처럼 보일 수 있습니다(하지만 항상 코드를 테스트하는 것이 좋습니다). 이제 프로그램에 모두 다른 작업을 수행하는 5개의 모듈이 있다고 상상해 보십시오. 또한 모듈은 서로 통신합니다. 이제 프로그램에는 가능한 많은 상태가 있으며 모든 상태를 수동으로 테스트하려면 소중한 시간이 많이 걸립니다.

대신 동작을 확인하는 테스트를 작성해야 합니다! 코드를 테스트하면 새 코드를 추가할 때 기능 손상으로부터 자신을 보호할 수도 있습니다. 양질의 코드를 작성하고 싶습니까? 테스트 없이는 불가능합니다.

코드 단위 테스트



코드에서 실행할 수 있는 다양한 유형의 테스트가 있지만 단위 테스트가 가장 중요합니다. 이를 통해 개별 코드 단위를 격리하여 테스트할 수 있습니다.

이 JavaScript 함수를 살펴보겠습니다.

const incrementByOne = input => {
  if (input < 0) {
    return 0;
  }

  return input + 1;
};


이제 몇 가지 테스트를 작성해 보겠습니다. 저는 "행복한 길"을 테스트하는 것부터 시작하고 싶습니다.

test('should increment by 1', () => {

  const input = 9;

  const actual = incrementByOne(input);
  const expected = 10;

  expect(actual).toBe(expected);
});


그런 다음 재미있는 부분을 위해; 엣지 케이스!

test('should return 0 when negative input', () => {

  const input = -1;

  const actual = incrementByOne(input);
  const expected = 0;

  expect(actual).toBe(expected);
});


우리는 이제 모든 것을 테스트했고 100% 테스트 커버리지를 갖게 되었습니다. 그리고 우리는 행복합니까, 아니면 우리입니까?

dynamically typed이기 때문에 JavaScript를 선택했고 모든 유형을 함수에 전달할 수 있습니다(psst! 대신 TypeScript을 사용하는 좋은 이유입니다).
string를 통과하면 어떻게 됩니까?

test('should increment by 1', () => {

  const input = 'my-string';

  const actual = incrementByOne(input);
  const expected = ???;

  expect(actual).toBe(expected);
});


함수는 my-string1 연산자가 JavaScript의 유형 간에 작동하기 때문에 +를 반환합니다. 이것은 우리가 원하는 것이 아니므로 수정하겠습니다.

이 경우를 처리하도록 함수를 업데이트해 보겠습니다.

const incrementByOne = input => {
  if (typeof input !== 'number') {
    throw new TypeError('Only number type allowed');
  }

  if (input < 0) {
    return 0;
  }

  return input + 1;
};


이제 테스트 스위트에 또 다른 테스트를 추가해 보겠습니다.

test('should throw when non-number input', () => {

  const input = 'my-string';

  const expected = new TypeError('Only number type allowed');
  expect(() => incrementbyOne(input)).toThrowError(expected);
});


이것은 간단한 예였습니다. 하지만 웹사이트와 프로그램은 결코 사소하지 않으며 지금 코드 테스트의 가치를 볼 수 있기를 바랍니다. 코드 테스트는 고품질 소프트웨어 제공의 중요한 부분입니다. 그리고 소프트웨어 개발 프로세스의 기본이 되어야 합니다!

단위 테스트는 묘책이 아니며 시스템 테스트 및 사용자 승인 테스트와 같은 다른 형태의 테스트를 대체하지 않습니다. 그러나 단위 테스트는 소프트웨어 테스트 프로세스의 중요한 부분이며 무시해서는 안 됩니다.

결론



코드와 관련하여 테스트는 버그를 피하고 코드가 예상대로 실행되도록 하는 데 중요합니다. 시간을 내어 코드를 테스트하면 비용이 많이 드는 실수를 방지하고 코드가 황금 시간대에 준비되도록 할 수 있습니다.

이 게시물을 즐겼습니까? 그럼 체크 아웃


, 및 Github에서 나와 연결

prplcode.dev에 원래 게시됨

좋은 웹페이지 즐겨찾기