본문으로 건너뛰기
개발 생산성 도구 기초집LESSON 12

테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기

난이도초급
예상 시간40분
선수지식11강 오류 재현 기록

12강. 테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기

1. 이번 강의에서 해결할 문제​

기능을 수정할 때마다 모든 화면을 손으로 확인하면 느리고 빠뜨리기 쉽습니다. 반대로 자동 테스트만으로 화면의 읽기 편함과 실제 조작감을 모두 보장할 수도 없습니다.

2. 학습 목표​

3. 핵심 개념​

자동 테스트는 같은 입력에 같은 결과가 나와야 하는 점수 계산, 유효성 검사, 데이터 변환에 적합합니다. 수동 테스트는 화면 배치, 키보드 조작감, 에디터·Inspector 연결처럼 사람이 실제 환경에서 확인해야 하는 부분에 필요합니다.

이 실습은 새 패키지를 설치하지 않고 현재 Node.js에 포함된 node:test를 사용합니다. Python, Java, Unity, Unreal 프로젝트라면 이미 선택한 테스트 도구와 프로젝트 규칙을 먼저 확인합니다.

4. 단계별 실습​

JavaScript · 파일 경로: src/score.js

src/score.js
export function calculateScore(current, correct) {
if (!Number.isInteger(current) || current < 0) {
throw new Error('current must be a non-negative integer');
}

return correct ? current + 10 : current;
}

JavaScript · 파일 경로: tests/score.test.js

tests/score.test.js
import test from 'node:test';
import assert from 'node:assert/strict';
import {calculateScore} from '../src/score.js';

test('정답이면 10점을 더한다', () => {
assert.equal(calculateScore(20, true), 30);
});

test('오답이면 점수를 유지한다', () => {
assert.equal(calculateScore(20, false), 20);
});

test('음수 점수는 거부한다', () => {
assert.throws(() => calculateScore(-1, true));
});

JSON · package.json의 scripts에 추가

package.json
{
"type": "module",
"scripts": {
"test": "node --test"
}
}

PowerShell · 실행 위치: D:\Projects\productivity-lab

npm.cmd test

예상 결과: 세 테스트가 통과하고 종료 코드가 0입니다. 기존 package.json이 있다면 파일 전체를 덮어쓰지 말고 scripts 항목만 합칩니다.

5. 도구와 설정이 동작하는 이유​

테스트는 준비한 입력을 함수에 전달한 뒤 실제 결과를 기대 결과와 비교합니다. 규칙이 바뀌어 결과가 달라지면 바로 실패하므로, 이미 동작하던 기능이 다시 깨지는 회귀를 빠르게 발견합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기”에서 혼동하기 쉬운 개념을 올바르게 연결한 것은 무엇인가요?
  2. 문제 2“테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기”에서 ‘한 테스트에서 여러 규칙을 검사’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. 테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기 미완료 상태