Skip to content
SERVERCATBLOG
Curving abstract shapes with an orange and blue gradient

테스트는 명세다!

Date

1 min read·Views 71·

문제/맥락

소프트웨어 요구사항은 문서화되어도 시간이 지나면 흐려진다. 구현자와 검증자 사이에 오해가 생기고, 코드만 보고는 의도한 동작을 온전히 알기 어렵다. 테스트이것은 테스트입니다.는 이런 간극을 메우는 방법이다. 단순한 검증 도구를 넘어서, 어떤 입력에 대해 어떤 출력이 나와야 하는지를 명확히 서술하는 동시적 명세가 된다.

핵심 포인트

테스트이것은 테스트입니다.를 명세로 삼으면 다음이 가능해진다. 테스트는 실행 가능한 문서로서 요구를 구체화하고, 리팩토링이나 기능 변경 시 의도를 보존할 기준을 제공한다. 테스트를 작성할 때는 작은 단위로 기대 동작을 기술하고, 실패하는 테스트부터 먼저 작성해 의도를 드러내라.

  • 테스트이것은 테스트입니다.는 동작을 문서화한다

아래 예시는 매우 간단한 사례다. 테스트이것은 테스트입니다.가 곧 명세인 경우, 테스트 코드만 봐도 함수의 목적과 경계가 드러난다.

1// sum.ts
2export function sum(a: number, b: number) {
3 return a + b;
4}
5
6// sum.test.ts
7import { sum } from './sum';
8
9test('sum should add two numbers', () => {
10 expect(sum(1, 2)).toBe(3);
11});
  1. 실패하는 테스트이것은 테스트입니다.를 먼저 작성한다.

  2. 최소한의 구현으로 테스트이것은 테스트입니다.를 통과시킨다.

  3. 리팩토링하면서 테스트이것은 테스트입니다.가 명세로서 남아있는지 확인한다.

정리

테스트이것은 테스트입니다.는 단순한 품질 보증 수단이 아니다. 테스트는 의도를 표현하는 실행 가능한 명세다. 명확한 테스트는 팀 간 의사소통을 줄이고, 변경에 대한 신뢰를 높인다. 작은 예제로부터 시작해 테스트를 문서화 수단으로 활용하라.

Comments

Related posts

View all