테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기
12강. 테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기
1. 이번 강의에서 해결할 문제
기능을 수정할 때마다 모든 화면을 손으로 확인하면 느리고 빠뜨리기 쉽습니다. 반대로 자동 테스트만으로 화면의 읽기 편함과 실제 조작감을 모두 보장할 수도 없습니다.
2. 학습 목표
3. 핵심 개념
자동 테스트는 같은 입력에 같은 결과가 나와야 하는 점수 계산, 유효성 검사, 데이터 변환에 적합합니다. 수동 테스트는 화면 배치, 키보드 조작감, 에디터·Inspector 연결처럼 사람이 실제 환경에서 확인해야 하는 부분에 필요합니다.
이 실습은 새 패키지를 설치하지 않고 현재 Node.js에 포함된 node:test를 사용합니다. Python, Java, Unity, Unreal 프로젝트라면 이미 선택한 테스트 도구와 프로젝트 규칙을 먼저 확인합니다.
4. 단계별 실습
JavaScript · 파일 경로: 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
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에 추가
{
"type": "module",
"scripts": {
"test": "node --test"
}
}
PowerShell · 실행 위치: D:\Projects\productivity-lab
npm.cmd test
예상 결과: 세 테스트가 통과하고 종료 코드가 0입니다. 기존 package.json이 있다면 파일 전체를 덮어쓰지 말고 scripts 항목만 합칩니다.
5. 도구와 설정이 동작하는 이유
테스트는 준비한 입력을 함수에 전달한 뒤 실제 결과를 기대 결과와 비교합니다. 규칙이 바뀌어 결과가 달라지면 바로 실패하므로, 이미 동작하던 기능이 다시 깨지는 회귀를 빠르게 발견합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
테스트 기초: 수동 테스트와 자동 테스트의 역할 구분하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.