μμ±μ : μ΄λ³λ―Ό
https://itwiki.kr
http://www.extremeprogramming.org/index.html
http://preview.hanbit.co.kr/2652/sample_ebook.pdf
https://media.fastcampus.co.kr/knowledge/dev/tdd/
SDLCλ μννΈμ¨μ΄ μλͺ μ£ΌκΈ°λ₯Ό λ»νλ©° μννΈμ¨μ΄ κ°λ° μμλΆν° λκΉμ§μ μ κ³Όμ μ νλμ μλͺ μ£ΌκΈ°λ‘ μ μνκ³ λ¨κ³ λ³ κ³΅μ μ 체κ³ν ν λͺ¨λΈμ΄λ€.
- 주먹ꡬꡬμ κ°λ° λͺ¨λΈ(build-Fix)
- μꡬμ¬ν λΆμ, μ€κ³ λ¨κ³ μμ΄ μΌλ¨ κ°λ°μ λ€μ΄κ° ν λ§μ‘±ν λκΉμ§ μμ μμ
- ν¬κΈ°κ° μμ κ·λͺ¨μ μννΈμ¨μ΄ κ°λ°
- μ ν΄μ§ κ°λ° μμκ° μκΈ° λλ¬Έμ κ³νμ΄ μ ννμ§ μκ³ , μ§νμ¬ν νμ μ΄ μ΄λ ΅κ³ , μ μ§λ³΄μκ° μ΄λ €μ
- νν¬μ λͺ¨λΈ (waterfall)
- μμ°¨μ μΌλ‘ κ°λ°νλ κ°λ° λͺ¨λΈ
- κ° λ¨κ³κ° λ€μ λ¨κ³ μμ μ μ λλμΌ ν¨
(μ λ¨κ³κ° μλ£ λ λκΉμ§ λ€μ λ¨κ³λ€μ΄ λκΈ°ν΄μΌν¨)
- νλ‘ν νμ λͺ¨λΈ(μν λͺ¨λΈ,prototype)
- νλ‘ν νμ μ λ§λ€μ΄μ κ³ κ°κ³Ό μ¬μ©μκ° ν¨κ» νκ°ν ν μꡬμ¬νμ μ μ νμ¬ μμ ν μꡬμ¬ν λͺ μΈμλ₯Ό μμ±ν¨
- μννΈμ¨μ΄ κ°λ° μ΄κΈ°μ κ³ κ°μ μꡬμ¬νμ νμ νκΈ° μ΄λ €μΈλ μ¬μ©
- λμ ν λͺ¨λΈ (λμ ν λͺ¨λΈ, spiral)
- μν λΆμμ μΆκ°ν μ μ¦μ λͺ¨λΈ (νλ‘μ νΈ μνμ λ°μνλ μνμ κ΄λ¦¬νκ³ μ΅μν νλ €λ κ²μ΄ λͺ©μ )
- κ°λ°μ λ°λ₯Έ μνμ μ νμ νμ¬ λμ² ν μ μμ§λ§, κ³ λΉμ©μ μμ€ν κ°λ°μ
- μ΄μ λͺ¨λΈμ λΉν΄ μλμ μΌλ‘ 볡μ‘νμ¬ νλ‘μ νΈ κ΄λ¦¬ μμ²΄κ° μ΄λ €μΈ μ μμ.
- μμμΌ λͺ¨λΈ (agile)
- agileμ λ―Όμ²ν©, μ μν λ»μ κ°μ§κ³ μμΌλ©° κ³ κ°μ μꡬμ¬νμ λν΄ μ μ°νκ² λμ ν μ μλ€.
μΌμ ν μ£ΌκΈ°λ₯Ό λ°λ³΅νλ κ°λ° κ³Όμ μ΄λ©°, κ°μΈκ³Ό μνΈ μμ©, κ³ κ°κ³Ό νμ , λ¬Έμλ³΄λ€ κ³ κ° μ€μ¬μ κ°λ°μ΄λ€. - μμμΌ λͺ¨λΈλ€
- XP(eXtreme Programming)
- μ€ν¬λΌ(scrum)
- ASD,FDD,Lean λ±λ±
- μμλ‘ λ°μνλ κ³ κ°μ μꡬμ¬νμ λμ
- μ§§κ³ λ°λ³΅μ μΈ κ°λ° μ£ΌκΈ° + κ³ κ°μ μ κ·Ήμ μ°Έμ¬ = κ°μμ± ν₯μ
μ¬μ©μμ ν¨κ» 1~3μ£Ό μ λ λ°λ³΅ κ°λ°μ ν λ€ μμ¬μν΅μ ν΅ν΄ νΌλλ°±μ λ°μΌλ©° μννΈμ¨μ΄μ νμ§μ λμΌ μ μλ€.
- μκ·λͺ¨ κ°λ° νλ‘μ νΈμ μ¬μ©
- XPμ ν΅μ¬ κ°μΉ : Feedback, Respect, Courage, Simplicity, Communication
- XPμ 12κ°μ§ μ€μ² μ¬ν
- Pair Programming: νλμ μμ μ 2λͺ μ νλ‘κ·Έλλ¨Έκ° μ½λ©Β·λ¦¬λ·° 곡λ μν
- Planning Game: κ²μμ²λΌ μ μμ κ·μΉ, λͺ©νλ₯Ό λκ³ κΈ°ν μν
- Test Driven Development: μ λ¨μ ν μ€νΈν μ€μ μ½λ μμ±
- Whole Team: κ°λ° ν¨μ¨μ μν΄ κ³ κ°μ νλ‘μ νΈ νμμΌλ‘ μμ£Ό
- Continuous Integration: μμ λΉλ λ° λ°°ν¬κ° κ°λ₯ν μνλ‘ μ μ§
- Design Improvement: μ½λ κ°μ μμ μν(κ°μμ±, μ±λ₯ λ±), λΆνμν κΈ°λ₯ μ κ±° λ° λ¦¬ν©ν λ§
- Small Releases: μ§§κ³ μ¦μ 릴리μ¦λ‘ κ³ κ°μ΄ λ³κ²½μ¬νμ λ³Ό μ μκ² ν¨ β μ¦μ νΌλλ°±
- Coding Standards: νμ€νλ κ΄λ‘μ λ°λΌ μ½λ μμ±
- Collective Code Ownership: μμ€ν μ μλ μμ€μ½λλ νμ λͺ¨λ νλ‘κ·Έλλ¨Έκ° μΈμ λΌλ μμ κ°λ₯
- Simple Design: κ°λ₯ν κ°μ₯ κ°κ²°ν λμμΈ μν μ μ§
- System Metaphor: μ΅μ’ μ μΌλ‘ κ°λ° λμ΄μΌ ν μμ€ν μ ꡬ쑰λ₯Ό μ‘°λ§
- Sustainable Pace: μ€λ²νμ μ§μ
TDDλ Test Driven Development
μ μ½μλ‘ ν
μ€νΈ μ£Όλ κ°λ°μ΄λΌκ³ νλ€.
TDDλ μ½λ κ°λ° λ° ν
μ€νΈ μΌμ΄μ€λ₯Ό μμ±νλ κΈ°μ‘΄μ κ°λ° νλ‘μΈμ€μ λ€λ₯΄κ² ν
μ€νΈ μΌμ΄μ€λ₯Ό μμ±ν ν, μ€μ μ½λλ₯Ό κ°λ°νμ¬ λ¦¬νν λ§νλ μ μ°¨λ₯Ό λ°λ₯΄κΈ° λλ¬Έμ Test First Development
λΌκ³ λ νλ€.
TDDλ μ½λλ₯Ό μ΄ νμ ν μ€νΈ νλ κ²μ΄ μλ, ν μ€νΈ μΌμ΄μ€λ₯Ό λ§λ€μ΄ λκ³ μ΄μ λ§μΆμ΄μ μ€μ μ½λλ₯Ό μμ±νλ€.
TDDλ λ¬Έμ κ° μλμ§ λ¨Όμ νμΈμ ν μ μμΌλ©°, κΈ°λ₯ λ¨μλ‘ ν μ€νΈλ₯Ό μ§ννκΈ° λλ¬Έμ κ°λ°μμ μμ λ λκΈ° μ μ νΌλλ°±μ λ°λ κ²μ΄ κ°λ₯νλ€.
-
μ½λκ° κ°λ°μμ μμ λ λκΈ° μ μ νΌλλ°±μ λ°μ μ μλ€.
κ°λ° νλ‘μΈμ€μμλ 90%μ΄μ μμ±λ μ½λλ₯Ό κ°μ§κ³ ν μ€νΈλ₯Ό νκΈ° λλ¬Έμ λ¬Έμ λ₯Ό λ°κ²¬ν μ μμ§λ§, μμΈμ 무μμΈμ§ μ§λ¨νκΈ° νλ€λ€.
TDDλ κΈ°λ₯ λ¨μλ‘ ν μ€νΈλ₯Ό μ§ννκΈ° λλ¬Έμ μ½λκ° μμ±λμ΄ κ°λ°μμ μμ λ λκΈ°μ νΌλλ°±μ λ°μ μ μλ€. -
κ°λ°μμ μ€λ² μ½λ©μ λ°©μ§νλ€.
ν μ€νΈ μ½λλ₯Ό λ¨Όμ μμ±νκΈ° λλ¬Έμ μ΅μνμ μ½λλ‘λ§ μμ± λ° κ°μ νκ² λλ€.
λ¬Έμ κ° λ°κ²¬λμ§ μμ μ½λμ μν₯μ μ€ μ μλ μ€λ² μ½λ©μ νμ§ μκ² λλ€. -
κ°λ° κ³Όμ μ΄ ν μ€νΈ μ½λλ‘ λ¨κΈ° λλ¬Έμ κ³Όκ±°μ μμ¬ κ²°μ μ μκΈ°νκΈ° μ½λ€.
κ³Όκ±°μ λ μμ κ³Ό νλ‘κ·Έλλ¨Έκ° νμ μ νλ κ²μ μ©μ΄νκ² ν΄μ€λ€.
-
RED : μ€ν¨νλ ν μ€νΈ μ½λ μμ± β μ€ν¨νλ κ²μ΄ νμΈ λμ΄μΌ ν μ€νΈκ° κ²μ¦λ ₯μ κ°μ§λ€κ³ μ λ’°ν μ μλ€.
-
GREEN : ν μ€νΈ μ½λλ₯Ό μ±κ³΅μν€κΈ° μν μ€μ μ½λ μμ± β ν μ€νΈ μ±κ³΅μ μν μ΅μνμ μ½λ κ·Έ μ΄μμ λ³κ²½νκ±°λ§ μΆκ°νλ©΄ μλλ€.
(μΆ ν 리ν©ν λ§ λ±μ λ€λ₯Έ νλ‘μΈμ€μμ λΆμμ©μ΄ λμ¬ μ μκΈ° λλ¬Έμ΄λ€.) -
REFACTOR : μ€λ³΅ μ½λ μ κ±°, μΌλ°ν λ±μ 리ν©ν λ§μ μν
β ꡬν μ€κ³λ₯Ό κ°μ νκ³ κ°λ μ±, μ μ©μ±, μ±λ₯μ κ³ λ €νκ² λλ€.
- μꡬμ¬ν νμ
- ν μ€νΈ μ½λ μμ±
- ν μ€νΈ μ½λκ° λμκ°λλ‘ μ½λ μμ±
- 리ν©ν λ§
- κ³Όμ μ λ€μ λ°λ³΅
facebookμμ κ°λ°ν JavaScript Testing Frameworkμ΄λ€.
JavaScript νλ‘μ νΈ(Node,React, Vue λ±)μμ κ΅¬μ± μμ΄ μ¦μ μ¬μ© κ°λ₯νλ€.
-
μ€μΉ
yarn add --dev jest npm install --save-dev jest
-
μΈν
package.json
{ "scripts": { "test": "jest" } }
β
yarn test
ornpm run test
μΌλ‘ jestλ‘ ν μ€νΈλ₯Ό μ§ν ν μ μλ€. β μ€νμ test λͺ¨λ testνμΌμ μ€ννλλ° λ€μ κ²½λ‘λ₯Ό μ μ΄μ νΉμ νμΌλ€λ§ μ νμ μΌλ‘ μ€ν ν μ μλ€.
-
μμ μ½λ
./example/example1
μ°Έμ‘°yarn test example1
./example/example1/sum.js
function sum(a, b) { return a + b; } module.exports = sum;
./example/example1/sum.test.js
const sum = require("./sum"); test("adds 1 + 2 to equal 3", () => { expect(sum(1, 2)).toBe(3); });
β
sum(1, 2)
λ₯Ό μ€ν μν€λ©΄toBe(3)
κ° λμ¨λ€.ν μ€νΈλ₯Ό ν΅κ³Ό νμ§ λͺ»νμ κ²½μ°
./example/example2
μ°Έμ‘°yarn test example2
λ€μκ³Ό κ°μ΄ 1+2λ 4κ° μλλ―λ‘ νλ¦¬κ² λλ€.
const sum = require("./sum"); test("adds 1 + 2 to equal 4", () => { expect(sum(1, 2)).toBe(4); });
-> μΆκ° μ μΈ μ쩨 μ½λ
./example/example3
μ°Έμ‘°