μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 톡합 ν…ŒμŠ€νŠΈ 총정리

좜제 λΉˆλ„: 쀑
빈좜 νƒœκ·Έ: 상ν–₯식/ν•˜ν–₯식, μŠ€ν…, λ“œλΌμ΄λ²„, 결함, 컀버리지

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 톡합 ν…ŒμŠ€νŠΈ μˆ˜ν–‰

V-λͺ¨λΈ

  • λ‹¨κ³„λ³„λ‘œ κ²€μ¦ν•˜κ³  μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό μ‹œκ°ν™”ν•¨

ν…ŒμŠ€νŠΈ 단계별 νŠΉμ§•

  1. λ‹¨μœ„ ν…ŒμŠ€νŠΈ
    • λͺ¨λ“ˆμ˜ κΈ°λŠ₯을 μ€‘μ‹¬μœΌλ‘œ ν…ŒμŠ€νŠΈ
    • κΈ°λŠ₯ μˆ˜ν–‰ 여뢀와 논리적인 였λ₯˜λ₯Ό κ²€μΆœ
    • ν™”μ΄νŠΈλ°•μŠ€ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰
  2. 톡합 ν…ŒμŠ€νŠΈ
    • μΈν„°νŽ˜μ΄μŠ€ κ΄€λ ¨ 였λ₯˜ κ²€μΆœ
    • 섀계 λ‹¨κ³„μ—μ„œ μ œμ‹œν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λ™μΌν•œ ꡬ쑰둜 κ΅¬ν˜„λ˜μ—ˆλŠ”μ§€ 확인

톡합 ν…ŒμŠ€νŠΈ 방식

비점증적 방식

  • 전체 ν”„λ‘œκ·Έλž¨μ„ ν•œλ²ˆμ— ν…ŒμŠ€νŠΈ (λΉ…λ±…)

점증적 방식

  1. 상ν–₯식 톡합
    • μ΅œν•˜μœ„ λͺ¨λ“ˆλΆ€ν„° μƒμœ„ λͺ¨λ“ˆλ‘œ 단계별 ν†΅ν•©ν•˜μ—¬ ν…ŒμŠ€νŠΈ
    • 더미 λͺ¨λ“ˆμ€ ν…ŒμŠ€νŠΈ λ“œλΌμ΄λ²„ μ‚¬μš©
    • μž₯점
      • μž₯μ•  μœ„μΉ˜ νŒŒμ•…μ΄ 쉬움
      • κ°œλ°œμ‹œκ°„ λ‚­λΉ„ μ—†μŒ
    • 단점
      • μ€‘μš” λͺ¨λ“ˆλ“€μ„ λ§ˆμ§€λ§‰μ— ν…ŒμŠ€νŠΈν•΄μ„œ ν”„λ‘œν† νƒ€μž…μ΄ 어렀움
  2. ν•˜ν–₯식 톡합
    • μ΅œμƒμœ„ λͺ¨λ“ˆλΆ€ν„° ν•˜μœ„ λͺ¨λ“ˆλ‘œ 단계별 ν†΅ν•©ν•˜μ—¬ ν…ŒμŠ€νŠΈ
    • 더미 λͺ¨λ“ˆμ€ ν…ŒμŠ€νŠΈ μŠ€ν…(stub) μ‚¬μš©
    • 탐색 방식
      • 깊이 μš°μ„  방식: μ’…μ†λ˜μ–΄μžˆλŠ” λͺ¨λ“ˆμ„ μš°μ„  탐색
      • λ„ˆλΉ„ μš°μ„  방식: 같은 λ ˆλ²¨μ„ μš°μ„  탐색
    • μž₯점
      • μž₯μ•  μœ„μΉ˜ νŒŒμ•… 쉬움
      • μ€‘μš” λͺ¨λ“ˆμ˜ μ„ ν…ŒμŠ€νŠΈ κ°€λŠ₯
      • 섀계상 결함 μ‘°κΈ° 발견
    • 단점
      • λ§Žμ€ 더미 λͺ¨λ“ˆμ΄ ν•„μš”
      • ν•˜μœ„ λͺ¨λ“ˆλ“€μ˜ λΆˆμΆ©λΆ„ν•œ ν…ŒμŠ€νŠΈ μˆ˜ν–‰

더미 λͺ¨λ“ˆ

  1. μŠ€ν…(Stub)
    • μ‹œκ°ν™” κ°€λŠ₯
    • ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μ‚¬μš©μ΄ 어렀움
  2. λ“œλΌμ΄λ²„(Driver)
    • 상ν–₯식 ν†΅ν•©μ—μ„œ μ‚¬μš©
    • ν…ŒμŠ€νŠΈμš© 더미 λͺ¨λ“ˆ

νšŒκ·€ ν…ŒμŠ€νŠΈ

  • 톡합 ν…ŒμŠ€νŠΈ μ™„λ£Œ ν›„ λ³€κ²½μ—¬λΆ€ 확인
  • 방법
    • λŒ€ν‘œμ μΈ μƒ˜ν”Œ λ„μΆœ
    • μ‹€μ œ μˆ˜μ •μ΄ λ°œμƒν•œ λͺ¨λ“ˆμ„ μ€‘μ‹¬μœΌλ‘œ μ‹œν–‰

μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈ

  • κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­κ³Ό λΉ„κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­μœΌλ‘œ κ΅¬λΆ„ν•˜μ—¬ ν…ŒμŠ€νŠΈ
  • μ‹€μ œ ν™˜κ²½κ³Ό μœ μ‚¬ν•˜κ²Œ λ§Œλ“  ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈ
  • λͺ©ν‘œ 컴퓨터 μ‹œμŠ€ν…œμ—μ„œ μˆ˜ν–‰λŠ₯λ ₯ 확인

인수 ν…ŒμŠ€νŠΈ

  • μ‚¬μš©μžκ°€ 직접 ν…ŒμŠ€νŠΈ
  • μ’…λ₯˜
    • μ•ŒνŒŒ ν…ŒμŠ€νŠΈ: 개발자의 μž₯μ†Œ(νšŒμ‚¬)μ—μ„œ μ§„ν–‰
    • 베타 ν…ŒμŠ€νŠΈ: μ œν•œλ˜μ§€ μ•Šμ€ ν™˜κ²½(νšŒμ‚¬ λ°–)μ—μ„œ μ§„ν–‰

ν…ŒμŠ€νŠΈ μžλ™ν™” 도ꡬ

νŠΉμ§•

  • 반볡적인 ν…ŒμŠ€νŠΈ μž‘μ—…μ„ 슀크립트둜 ν‘œν˜„
  • 휴먼 μ—λŸ¬λ₯Ό 쀄이고 λΉ„μš©κ³Ό μ‹œκ°„μ„ μ ˆμ•½

μž₯점

  • 데이터 μž¬μž…λ ₯ μžλ™ν™”
  • μΌκ΄€λœ 검증에 유리
  • 객관적인 평가 κΈ°μ€€ 제곡
  • μ‹œκ°ν™” μš”μ†Œ 제곡
  • μ •λ°€ν•œ ν…ŒμŠ€νŠΈ κ°€λŠ₯

단점

  • μ‚¬μš©λ°©λ²•μ— λŒ€ν•œ ꡐ윑과 ν•™μŠ΅ ν•„μš”
  • μΆ”κ°€ 투자 ν•„μš”

μžλ™ν™” 도ꡬ μœ ν˜•

  1. 정적 뢄석 도ꡬ
    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜μ§€ μ•Šκ³  뢄석
    • μ†ŒμŠ€μ½”λ“œμ— λŒ€ν•œ 이해λ₯Ό λ°”νƒ•μœΌλ‘œ 뢄석
  2. ν…ŒμŠ€νŠΈ μ‹€ν–‰ 도ꡬ
    • 슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” 도ꡬ
    • νŠΉμ • 데이터와 μˆ˜ν–‰λ°©λ²• 포함
    • μ ‘κ·Ό 방식
      • 데이터 주도: λ°μ΄ν„°μ‹œνŠΈλ₯Ό μ½μ–΄μ˜΄
      • ν‚€μ›Œλ“œ 주도: ν‚€μ›Œλ“œ-μˆ˜ν–‰λ™μž‘κ³Ό 데이터 μ‹œνŠΈλ₯Ό μ½μ–΄μ˜΄, μˆ˜ν–‰ λ™μž‘ μ •μ˜μ™€ ν…ŒμΌλŸ¬λ§ κ°€λŠ₯
  3. μ„±λŠ₯ ν…ŒμŠ€νŠΈ 도ꡬ
    • μ²˜λ¦¬λŸ‰, μ‘λ‹΅μ‹œκ°„, κ²½κ³Όμ‹œκ°„, μžμ› μ‚¬μš©μœ¨ ν…ŒμŠ€νŠΈ
    • κ²°κ³Ό 해석에 μ „λ¬Έκ°€μ˜ 도움 ν•„μš”
  4. ν…ŒμŠ€νŠΈ ν†΅μ œ 도ꡬ
    • ν…ŒμŠ€νŠΈ 관리 도ꡬ
    • ν˜•μƒ 관리 도ꡬ
    • 결함 좔적/관리 도ꡬ
  5. ν…ŒμŠ€νŠΈ ν•˜λ„€μŠ€
    • Test Driver, Test Stub으둜 ꡬ성
    • ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈ: ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ μ§‘ν•©
    • ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€: μž…λ ₯κ°’, μ‹œν–‰μ‘°κ±΄, κΈ°λŒ€κ²°κ³Όμ˜ μ§‘ν•©
    • ν…ŒμŠ€νŠΈ 슀크립트: μžλ™ν™”λœ μ‹€ν–‰μ ˆμ°¨λ₯Ό λͺ…μ„Έ
    • λͺ© 였브젝트: μ˜ˆμ •λœ ν–‰μœ„λ₯Ό μžλ™μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 객체

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν…ŒμŠ€νŠΈ κ²°κ³Ό 뢄석

μ†Œν”„νŠΈμ›¨μ–΄ 결함

  1. 였λ₯˜
    • 휴먼 μ—λŸ¬μ— μ˜ν•΄ μƒκΈ°λŠ” μ‹€μˆ˜
  2. 결함/결점/버그
    • 였λ₯˜μ˜ 원인이 μ œν’ˆμ— ν¬ν•¨λ˜λŠ” μ™„μ „ν•˜μ§€ λͺ»ν•œ λΆ€λΆ„
  3. μ‹€νŒ¨/문제
    • 결함에 μ˜ν•΄ μ˜λ„ν•˜μ§€ μ•Šμ€ κ²°κ³Όκ°€ λ°œμƒ
    • 예: 개발자의 μ˜€νƒ€λ‘œ 잘λͺ»λœ 연산이 λ‚˜μ˜€κ³  μ‹€ν–‰ν•˜λ©΄μ„œ λ¬Έμ œκ°€ μƒκΈ°λŠ” 경우

ν…ŒμŠ€νŠΈ λ³΄κ³ μ„œ

  • ν…ŒμŠ€νŠΈ κ³„νšκ³Ό κ²°κ³Ό 포함
  • ν’ˆμ§ˆ μƒνƒœ, 성곡λ₯ , 컀버리지, κ²°ν•¨μ˜ 수, κ²°ν•¨μ˜ μ€‘μš”λ„ 포함

결함 관리

  • 결함을 μΆ”μ ν•˜κ³  관리
  • 휴먼 μ—λŸ¬ 원인: 개발 기획, 섀계, μ½”λ”©, ν…ŒμŠ€νŠΈ λΆ€μ‘±
  • 심각도λ₯Ό κ³ λ €ν•΄μ„œ κ΄€λ¦¬μ˜ μš°μ„ μˆœμœ„ κ²°μ •

결함 관리 μΈ‘μ • μ§€ν‘œ

  1. 결함 뢄포: νŠΉμ • 속성에 ν•΄λ‹Ήν•˜λŠ” 결함 수
  2. 결함 μΆ”μ„Έ: μ‹œκ°„μ˜ 흐름
  3. 결함 에이징: κ²°ν•¨μƒνƒœμ˜ μ§€μ†μ‹œκ°„ μΈ‘μ •

ν…ŒμŠ€νŠΈ 컀버리지(Coverage)

  • ν…ŒμŠ€νŠΈ λ²”μœ„λ₯Ό μΈ‘μ •ν•˜λŠ” κΈ°μ€€
  1. κΈ°λŠ₯ 기반 컀버리지
    • 전체 κΈ°λŠ₯ λŒ€λΉ„ μ‹€μ œ ν…ŒμŠ€νŠΈκ°€ μˆ˜ν–‰λœ κΈ°λŠ₯ 수 μΈ‘μ •
    • 100% 달성을 λͺ©ν‘œλ‘œ 함
  2. 라인 컀버리지
    • 전체 μ½”λ“œ 라인 수 λŒ€λΉ„ μˆ˜ν–‰ν•œ 라인 수 μΈ‘μ •
    • λ‹¨μœ„ ν…ŒμŠ€νŠΈμ˜ μ£Όμš” 척도
  3. μ½”λ“œ 컀버리지
    • ꡬ문 컀버리지: λͺ¨λ“  ꡬ문을 ν•œλ²ˆ 이상 μˆ˜ν–‰
    • κ²°μ • 컀버리지: κ²°μ •λ¬Έμ˜ κ²°κ³Όκ°€ μ°Έκ³Ό κ±°μ§“μ˜ κ²°κ³Όλ₯Ό μˆ˜ν–‰
    • 쑰건 컀버리지: κ²°μ •λ¬Έ λ‚΄λΆ€ μ‘°κ±΄μ‹μ˜ κ²°κ³Όκ°€ μ°Έκ³Ό 거짓을 μˆ˜ν–‰
    • λ³€ν˜• 쑰건/κ²°μ • 컀버리지: λ…λ¦½μ μœΌλ‘œ 전체 결과에 영ν–₯을 μ£ΌλŠ” κ²ƒλ§Œ ν…ŒμŠ€νŠΈ
    • 닀쀑 쑰건 컀버리지: λͺ¨λ“  κ°€λŠ₯ν•œ 논리적 쑰합을 κ³ λ €