β 30. μ¬μ©μ μΈν°νμ΄μ€ (UI, User Interface)
: μ¬μ©μμ μμ€ν κ° μνΈμμ©μ΄ μννκ² μ΄λ£¨μ΄μ§λλ‘ λμμ£Όλ μ₯μΉλ μννΈμ¨μ΄λ₯Ό μλ―Έ
ex. μ€λ§νΈν° ν°μΉ νλ©΄
π μ¬μ©μ κ²½ν (UX, User Experience)
: μ νκ³Ό μμ€ν , μλΉμ€ λ±μ μ¬μ©μκ° μ§/κ°μ μ μΌλ‘ κ²½ννλ©΄μ λλΌκ³ μκ°νλ μ΄μ²΄μ κ²½νμ μλ―Έ
β 31. μ¬μ©μ μΈν°νμ΄μ€ (UI) μ κΈ°λ³Έ μμΉ
π μ§κ΄μ± / μ ν¨μ± / νμ΅μ± / μ μ°μ±
- μ§κ΄μ± : λꡬλ μ½κ² μ΄ν΄νκ³ μ¬μ©ν μ μμ΄μΌ νλ€.
- μ ν¨μ± : μ¬μ©μμ λͺ©μ μ μ ννκ³ μλ²½νκ² λ¬μ±ν΄μΌ νλ€.
- νμ΅μ± : λꡬλ μ½κ² λ°°μ°κ³ μ΅ν μ μμ΄μΌ νλ€.
- μ μ°μ± : μ¬μ©μμ μꡬμ¬νμ μ΅λν μμ©νκ³ μ€μλ₯Ό μ΅μνν΄μΌ νλ€.
π’ UI (User Interface)λ μ¬μ©μμ μ»΄ν¨ν° μνΈ κ°μ μν΅μ μνν ν μ μλλ‘ λμμ£Όλ μ°κ³ μμ μ λ»νλ€.
UIμ μ€κ³ μμΉ μ€ μ§κ΄μ±μ λν΄ κ°λ΅ν μ€λͺ νμμ€.
λ΅ : μ€κ³ ꡬ쑰λ₯Ό λꡬλ μ½κ² μ΄ν΄νκ³ μ¬μ©ν μ μμ΄μΌνλ€.
β 32. μ ν리μΌμ΄μ ν μ€νΈμ κΈ°λ³Έ μ리
- νλ ν μ λ²μΉ : μ ν리μΌμ΄μ μ 20%μ ν΄λΉνλ μ½λμμ μ 체 κ²°ν¨μ 80%κ° λ°κ²¬λλ€.
- μ΄μΆ©μ ν¨λ¬λ μ€ : λμΌν ν μ€νΈ μΌμ΄μ€λ‘ λμΌν ν μ€νΈλ₯Ό λ°λ³΅νλ©΄ λ μ΄μ κ²°ν¨μ΄ λ°κ²¬λμ§ μλλ€.
- μ€λ₯-λΆμ¬μ κΆ€λ³ : μννΈμ¨μ΄μ κ²°ν¨μ λͺ¨λ μ κ±°ν΄λ μ¬μ©μμ μꡬμ¬νμ λ§μ‘±μν€μ§ λͺ»νλ©΄
ν΄λΉ μννΈμ¨μ΄λ νμ§μ΄ λλ€κ³ λ§ν μ μλ€.
π’ μννΈμ¨μ΄ ν μ€νΈ λ°©λ²μ μΌλ°μ μΈ μ리 μ€ νλμΈ μ΄μΆ©μ ν¨λ¬λ μ€ (Pesticide Paradox) μ κ°λ μ
κ°λ΅ν μ€λͺ νμμ€.
λ΅: μ΄μΆ©μ ν¨λ¬λ μ€λ λμΌν ν μ€νΈ μΌμ΄μ€λ‘ λμΌν μ μ°¨λ₯Ό λ°λ³΅ μννλ©΄ μλ‘μ΄ κ²°ν¨μ μ°Ύμ μ μλ€λ κ²μ μλ―Έ
β 33. νμ΄νΈλ°μ€ ν μ€νΈ
: λͺ¨λμ μμ μ½λλ₯Ό μ€νμν¨ μνμμ μμ μ½λμ λ Όλ¦¬μ μΈ λͺ¨λ κ²½λ‘λ₯Ό ν μ€νΈνμ¬ ν μ€νΈ μΌμ΄μ€λ₯Ό μ€κ³νλ λ°©λ²
ν μ€νΈ μ’ λ₯ - κΈ°μ΄ κ²½λ‘ κ²μ¬, μ μ΄ κ΅¬μ‘° κ²μ¬
κ²μ¦ κΈ°μ€ : ν μ€νΈ μΌμ΄μ€λ€μ΄ ν μ€νΈμ μΌλ§λ μ μ νμ§ νλ¨νλ κΈ°μ€
π λ¬Έμ₯ κ²μ¦ κΈ°μ€ (Statement Coverage), λΆκΈ° κ²μ¦ κΈ°μ€ (Branch Coverage), 쑰건 κ²μ¦ κΈ°μ€ (Condition Coverage)
π’ λ€μ μ μ΄ νλ¦ κ·Έλνμ λν λΆκΈ° 컀λ²λ¦¬μ§ (Branch Coverage) λ₯Ό μννλ κ²½μ°μ ν μ€νΈμΌμ΄μ€ κ²½λ‘λ₯Ό μμλλ‘
λμ΄νμμ€.
λ΅ : 1 - 2 - 3 - 4 - 5 - 6 - 1 (YES) or 1 - 2 - 4 - 5 - 6 - 7 (NO)
β 34. λΈλλ°μ€ ν μ€νΈ
: μννΈμ¨μ΄κ° μνν νΉμ κΈ°λ₯μ μκΈ° μν΄μ κ° κΈ°λ₯μ΄ μμ ν μλλλ κ²μ μ μ¦νλ ν μ€νΈ (κΈ°λ₯ ν μ€νΈ)
π’ μννΈμ¨μ΄ ν μ€νΈκΈ°λ² μ€ νλ‘κ·Έλ¨μ μΈλΆ μ¬μ©μ μꡬμ¬ν λͺ μΈλ₯Ό 보면μ ν μ€νΈλ₯Ό μννλ©° μ£Όλ‘ κ΅¬νλ κΈ°λ₯μ
ν μ€νΈνλ€. λͺ μΈ κΈ°λ° ν μ€νΈλΌκ³ λ νλ©°, λμΉ λΆν ν μ€νΈ, κ²½κ³ κ° ν μ€νΈ λ±κ³Ό κ°μ΄ λ΄λΆ ꡬ쑰λ₯Ό 보μ΄μ§ μλ ν μ€νΈ
κΈ°λ²μ ν΄λΉνλ μ©μ΄λ₯Ό μ°μμ€.
λ΅ : λΈλλ°μ€ ν μ€νΈ
β 35. λΈλλ°μ€ ν μ€νΈ μ’ λ₯
: λμΉλΆν κ²μ¬ / κ²½κ³κ° λΆμ
π’ λ€μκ³Ό κ°μ ν μ€νΈ μΌμ΄μ€λ‘ μννΈμ¨μ΄λ₯Ό κ²μ¦νκΈ° μν ν μ€νΈ λ°©λ²μ 무μμΈμ§ μ°μμ€.
λ΅ : λμΉλΆν κ²μ¬
β» μ λ¬Έμ μ λ¬λ¦¬, ν μ€νΈ λ°μ΄ν°κ° 90μ , 101μ μ΄λ° μμΌλ‘ μ£Όμ΄μ§λ€λ©΄ κ²½κ³κ° λΆμ κΈ°λ²μ ν΄λΉ
β 36. μΈμ ν μ€νΈ (μν ν μ€νΈ / λ² ν ν μ€νΈ)
- μν ν μ€νΈ : μ νλ μ¬μ©μκ° κ°λ°μ μμμ κ²μ¬ (ν΅μ λ νκ²½)
- λ² ν ν μ€νΈ : μ μ λ μ΅μ’ μ¬μ©μκ° μ¬λ¬ λͺ μ μ¬μ©μ μμμ κ²μ¬ (κ°λ°μμ μν΄ μ μ΄λμ§ μμ νκ²½)
β 37. ν΅ν© ν μ€νΈ (μν₯μ / νν₯μ)
- νν₯μ ν΅ν© ν μ€νΈ (Top Down Integration Test)
: νλ‘κ·Έλ¨ μμ λͺ¨λμμ νμ λͺ¨λ λ°©ν₯μΌλ‘ ν΅ν©νλ©΄μ ν μ€νΈνλ κΈ°λ²
π μ£Όμ μ μ΄ λͺ¨λμ μ’ μ λͺ¨λλ€μ μ€ν (Stub) μΌλ‘ λ체
- μν₯μ ν΅ν© ν μ€νΈ (Bottom Up Integration Test)
: νλ‘κ·Έλ¨ νμ λͺ¨λμμ μμ λͺ¨λ λ°©ν₯μΌλ‘ ν΅ν©νλ©΄μ ν μ€νΈνλ κΈ°λ²
π νμ λͺ¨λλ€μ ν΄λ¬μ€ν° (Cluster) λ‘ κ²°ν©
π μμ λͺ¨λμμ λ°μ΄ν°μ μ μΆλ ₯μ νμΈνκΈ° μν΄ λλ―Έ λͺ¨λμΈ λλΌμ΄λ² (Driver) μμ±
β 38. ν μ€νΈ μ€λΌν΄ (Test Oracle)
: ν μ€νΈ κ²°κ³Όκ° μ¬λ°λ₯Έμ§ νλ¨νκΈ° μν΄ μ¬μ μ μ μλ μ°Έ κ°μ λμ νμ¬ λΉκ΅νλ κΈ°λ² λ° νλ
π ν μ€νΈ μΌμ΄μ€λ₯Ό μ μ©ν κ²°κ³Όκ° λ§μλμ§ νλ Έλμ§ νλ¨νλ €λ©΄ κΈ°μ€ κ°μ΄ μμ΄μΌ ν¨.
κ·Έ κ°μ κ³μ°νκ±°λ νμΈνλ κΈ°λ²μ ν μ€νΈ μ€λΌν΄μ΄λΌκ³ νλ€.
β 39. ν μ€νΈ μ€λΌν΄ μ’ λ₯
- μ°Έ (True) μ€λΌν΄: λͺ¨λ ν μ€νΈ μΌμ΄μ€μ μ λ ₯ κ°μ λν΄ κΈ°λνλ κ²°κ³Όλ₯Ό μ 곡νλ μ€λΌν΄ (λ°μλ λͺ¨λ μ€λ₯λ₯Ό κ²μΆ)
- μνλ§ (Sampling) μ€λΌν΄: νΉμ ν λͺλͺ ν μ€νΈ μΌμ΄μ€μ μ λ ₯ κ°λ€μ λν΄μλ§ κΈ°λνλ κ²°κ³Όλ₯Ό μ 곡νλ μ€λΌν΄
- μΆμ (Heuristic) μ€λΌν΄: μνλ§ μ€λΌν΄μ κ°μ ν μ€λΌν΄, νΉμ ν μ€νΈ μΌμ΄μ€μ μ λ ₯κ°μ λν΄ κΈ°λνλ κ²°κ³Όλ₯Ό μ 곡,
λλ¨Έμ§ μ λ ₯ κ°λ€μ λν΄μλ μΆμ μΌλ‘ μ²λ¦¬νλ μ€λΌν΄
- μΌκ΄μ± κ²μ¬ (Consistent) μ€λΌν΄: μ ν리μΌμ΄μ μ λ³κ²½μ΄ μμ λ, ν μ€νΈ μΌμ΄μ€μ μν μ κ³Ό νμ κ²°κ³Ό κ°μ΄ λμΌνμ§
νμΈνλ μ€λΌν΄
π’ λ€μμ λΉμΉΈμ λ€μ΄κ° λ¨μ΄κ° 무μμΈμ§ μ°μμ€.
ν μ€νΈ κ²°κ³Όκ° μ¬λ°λ₯Έμ§ νλ¨νκΈ° μν΄ μ¬μ μ μ μλ μ°Έ κ°μ λμ νμ¬ λΉκ΅νλ κΈ°λ²μ ν μ€νΈ μ€λΌν΄μ΄λΌ νλ€. () μ νΉμ λͺλͺ μ λ ₯ κ°λ€μ λν΄μλ§ μνλ κ²°κ³Όλ₯Ό μ 곡ν΄μ£Όλ μ€λΌν΄μ΄λ€. μ λ²μ ν μ€νΈκ° λΆκ°ν κ²½μ° μ¬μ©νλ€. κ²½κ³κ°, ꡬκ°λ³ μμ κ°λ€μ μ¬μ©νλ€.
λ΅ : μνλ§ μ€λΌν΄
β 40. μ ν리μΌμ΄μ μ±λ₯ μΈ‘μ μ§ν
π μ²λ¦¬λ / μλ΅ μκ° / κ²½κ³Ό μκ° / μμ μ¬μ©λ₯
π’ λ€μ μ€ λΉμΉΈ (1), (2), (3) μ λ€μ΄κ° λ¨μ΄λ₯Ό μ°μμ€.
μ ν리μΌμ΄μ μ±λ₯μ΄λ, μ¬μ©μμ μꡬ κΈ°λ₯μ ν΄λΉ μ ν리μΌμ΄μ μ΄ μ΅μμ μμμ μ¬μ©νλ©΄μ μΌλ§λ 빨리, λ§μ κΈ°λ₯μ μννλκ°λ₯Ό μ‘μ λλ λꡬλ₯Ό ν΅ν΄μ μ κ²νλ κ²μ λ§νλ€. μ΄λ₯Ό μΈ‘μ νκΈ° μν μ§νλ (1), (2), (3), μμ μ¬μ©λ₯ μ΄ μλ€.
λ΅ : (1) μ²λ¦¬λ (2) μλ΅ μκ° (3) κ²½κ³Ό μκ°
β 41. ν΄λ¦° μ½λ & 리ν©ν λ§
- ν΄λ¦° μ½λ (Clean Code) : λꡬλ μ½κ² μ΄ν΄νκ³ μμ λ° μΆκ°ν μ μλ λ¨μ, λͺ λ£ν μ½λ (μ μμ±λ μ½λ)
- 리ν©ν λ§ (Refactoring) : μ μ§λ³΄μ μμ°μ± ν₯μμ λͺ©μ μΌλ‘ κΈ°λ₯μ λ³κ²½νμ§ μκ³ , 볡μ‘ν μ½λ μμ€λ₯Ό μμ , 보μν΄
κ°μ©μ± λ° κ°λ μ±μ λμ΄λ κΈ°λ²
- μΈκ³μΈ μ½λ (Alien Code) : μμ£Ό μ€λλκ±°λ μ°Έκ³ λ¬Έμ or κ°λ°μκ° μμ΄ μ μ§λ³΄μ μμ μ΄ μ΄λ €μ΄ νλ‘κ·Έλ¨ μ½λ
π’ 리ν©ν λ§ (Refactoring) μ λͺ©μ μ λν΄ κ°λ΅ν μ€λͺ νμμ€.
λ΅: 리ν©ν λ§μ λͺ©μ μ κ°λ μ±μ λμ΄κ³ μ μ§λ³΄μμ νΈλ¦¬μ±μ λμ΄λ κ²μ΄λ€.
β 42. μμ€μ½λ νμ§ λΆμ λꡬ - μ μ λΆμ λꡬ (Static Analysis Tools)
: νλ‘κ·Έλ¨μ μ€ννμ§ μκ³ λΆμνλ λꡬ
π μμ€ μ½λμ λν μ½λ© νμ€, μ½λ© μ€νμΌ, μ½λ 볡μ‘λ λ° λ¨μ κ²°ν¨μ λ°κ²¬νκΈ° μν΄ μ¬μ©
ν μ€νΈλ₯Ό μννλ μ¬λμ΄ μμ±λ μμ€ μ½λλ₯Ό μ΄ν΄νκ³ μμ΄μΌλ§ λΆμμ΄ κ°λ₯
π’ λ€μ λΉμΉΈ () μ 곡ν΅μΌλ‘ λ€μ΄κ° κ°μ₯ μ ν©ν μ©μ΄λ₯Ό μ°μμ€.
ν μ€νΈ μλν λꡬλ ν΄λ©΄ μλ¬λ₯Ό μ€μ΄κ³ , ν μ€νΈμ μμλλ λΉμ©κ³Ό μκ°μ μ κ°νμ¬, ν μ€νΈ νμ§μ ν₯μν μ μλ λꡬμ΄λ€.
ν μ€νΈ κ³ν, ν μ€νΈ λΆμ / μ€κ³, ν μ€νΈ μν, ν μ€νΈ ν΅μ λ±μ ν μ€νΈ νλ λ¨κ³μ λ°λΌ λ€μν ν μ€νΈ λꡬλ€μ΄ μλ€.
() μ ν μ€νΈ μν λ¨κ³μ μλν λκ΅¬λ‘ λ§λ€μ΄μ§ μ ν리μΌμ΄μ μ μ€ννμ§ μκ³ λΆμνλ λ°©λ²μ΄λ€.
() μ λλΆλΆμ κ²½μ° μμ€ μ½λμ λν μ½λ© νμ€, λ°νμ μ€λ₯, μ½λ© μ€νμΌ, μ½λ 볡μ‘λ λ° λ¨μ κ²°ν¨μ λ°κ²¬νκΈ° μν΄ μ¬μ©νλ€.
() μ ν μ€νΈλ₯Ό μννλ μμ±λ μμ€ μ½λμ λν μ΄ν΄λ₯Ό λ°νμΌλ‘ λꡬλ₯Ό μ΄μ©ν΄μ λΆμνλ κ²μ λ§νλ€.
λ΅ : μ μ λΆμ