TDD

๋‚ด์šฉ Update ์ค‘...!

TDD(Test Driven Development)๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๊ฒŒ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. JEST๋ฅผ ์ด์šฉํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž.

// sample.text.ts

// ๋‘ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” test ์ฝ”๋“œ ์ž‘์„ฑ
text('add', () => {
  expect(add(1, 2)).toBe(3)
})

์ด๋ ‡๊ฒŒ ๋จผ์ € ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ›„, ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ํ†ตํ™”ํ•˜๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

function add(x, y) {
  return x + y
}

TDD ๊ณผ์ •

TDD ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

  2. ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ

  3. ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰

  4. ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด ์ž‘์„ฑํ•œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

  5. ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰

  6. ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด ์™„์„ฑ

TDD๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ด์œ 

  1. ๊ธฐ๋Šฅ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ๊ฐœ๋ฐœ ํ›„ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ์ค„์–ด๋“ค๊ณ , ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

  3. ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

TDD ์—ฐ์Šตํ•ด๋ณด๊ธฐ

์•„์ƒฌ๋‹˜์˜ Jest๋ฅผ ์ด์šฉํ•œ TDD ์˜ˆ์ œ๋กœ ์—ฐ์Šต์„ ํ•ด๋ณด์ž.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '๋‘ ๊ฐœ ๋ฝ‘์•„์„œ ๋”ํ•˜๊ธฐ'๋ฅผ TDD๋กœ ํ’€์–ด๋ณด๊ธฐ

  1. Step 1 - ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

test('sample', () => {
  expect(solve([2, 1, 3, 4, 1])).toEqual([2, 3, 4, 5, 6, 7])
});
  1. Step 2 - solve is not defined error ํ•ด๊ฒฐํ•˜๊ธฐ

function solve() {
  return null;
}
  1. Step 3 - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋น ๋ฅด๊ฒŒ ํ†ต๊ณผ ์‹œํ‚ค๊ธฐ

function solve() {
  return [2, 3, 4, 5, 6, 7]
}

test('sample', () => {
  expect(solve([2, 1, 3, 4, 1])).toEqual([2, 3, 4, 5, 6, 7])
});
  1. Step 4 - ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐํ•˜๋ฉด์„œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋ฐ˜๋ณต

๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ˆ˜์ •ํ•ด๋ณธ๋‹ค.

test('simple', () => {
  expect(solve([1, 2, 3])).toEqual([3, 4, 5])
})
function solve(numbers) {
	if(numbers.length === 3) {
		return [3, 4, 5]
	}
}

๋‹ค์‹œ ์ˆ˜์ •

function solve(numbers) {
	if(numbers.length === 3) {
		return [1 + 2, 1 + 3, 2 + 3]
	}
}

๋‹ค์‹œ ์ˆ˜์ •

function solve(numbers) {
	if(numbers.length === 3) {
		return [
			numbers[0] + numbers[1],
			numbers[0] + numbers[2],
			numners[1] + numbers[2]
		]
	}
}

๊ณง ์—…๋ฐ์ดํŠธ ์˜ˆ์ •!

Last updated