Application Testing 1️⃣

m_ngyeongΒ·2024λ…„ 4μ›” 8일
1
post-thumbnail

🍏 Application Testing


Application Testing

Application Testing(μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν…ŒμŠ€νŠΈ)λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μž μž¬λ˜μ–΄ μžˆλŠ” 결함을 μ°Ύμ•„λ‚΄λŠ” 일련의 ν–‰μœ„ λ˜λŠ” μ ˆμ°¨μ΄λ‹€.

  • 개발된 μ†Œν”„νŠΈμ›¨μ–΄κ°€ 고객의 μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±μ‹œν‚€λŠ”μ§€ Validatrion(확인)ν•˜κ³  μ†Œν”„νŠΈμ›¨μ–΄κ°€ κΈ°λŠ₯을 μ •ν™•νžˆ μˆ˜ν–‰ν•˜λŠ”μ§€ Verification(검증)ν•œλ‹€.

Basic principles of Application Testing

  • Pareto Principle(νŒŒλ ˆν†  법칙) : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 20%에 ν•΄λ‹Ήν•˜λŠ” μ½”λ“œμ—μ„œ 전체 κ²°ν•¨μ˜ 80%κ°€ λ°œκ²¬λœλ‹€λŠ” 법칙
  • Pesticide Paradox(μ‚΄μΆ©μ œ νŒ¨λŸ¬λ…μŠ€) : λ™μΌν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ λ™μΌν•œ ν…ŒμŠ€νŠΈλ₯Ό λ°˜λ³΅ν•˜λ©΄ 더 이상 결함이 λ°œκ²¬λ˜μ§€ μ•ŠλŠ” ν˜„μƒ
  • Absence of Errors Fallacy(였λ₯˜-λΆ€μž¬μ˜ κΆ€λ³€) : μ†Œν”„νŠΈμ›¨μ–΄μ˜ 결함을 λͺ¨λ‘ μ œκ±°ν•΄λ„ μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±μ‹œν‚€μ§€ λͺ»ν•˜λ©΄ ν•΄λ‹Ή μ†Œν”„νŠΈμ›¨μ–΄λŠ” ν’ˆμ§ˆ 이 λ†’λ‹€κ³  말할 수 μ—†λŠ” 것

ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 여뢀에 λ”°λ₯Έ ν…ŒμŠ€νŠΈ

Static Testing(정적 ν…ŒμŠ€νŠΈ)

ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜μ§€ μ•Šκ³  λͺ…μ„Έμ„œλ‚˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό λŒ€μƒμœΌλ‘œ λΆ„μ„ν•˜λŠ” ν…ŒμŠ€νŠΈμ΄λ‹€.

  • μ†ŒμŠ€ μ½”λ“œμ— λŒ€ν•œ μ½”λ”© ν‘œμ€€, μ½”λ”© μŠ€νƒ€μΌ, μ½”λ“œ λ³΅μž‘λ„, 남은 결함 등을 λ°œκ²¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©
  • μ’…λ₯˜ :
    • λ™λ£Œ κ²€ν† (Peer Review) : 2~3λͺ…이 μ§„ν–‰ν•˜λŠ” 리뷰의 ν˜•νƒœλ‘œ μš”κ΅¬μ‚¬ν•­ λͺ…μ„Έμ„œ μž‘μ„±μžκ°€ μš”κ΅¬μ‚¬ν•­ λͺ…μ„Έμ„œλ₯Ό μ„€λͺ…ν•˜κ³ , μ΄ν•΄κ΄€κ³„μžλ“€μ΄ μ„€λͺ…을 λ“€μœΌλ©΄μ„œ 결함을 λ°œκ²¬ν•˜λŠ” ν˜•νƒœλ‘œ μ§„ν–‰ν•˜λŠ” κ²€ν†  기법
    • μ›Œν¬μŠ€λ£¨(Walk Throughts) : κ²€ν†  자료λ₯Ό 회의 전에 λ°°ν¬ν•΄μ„œ 사전 κ²€ν† ν•œ ν›„ 짧은 μ‹œκ°„ λ™μ•ˆ 회의λ₯Ό μ§„ν–‰ν•˜λŠ” ν˜•νƒœλ‘œ κ°€μž₯ λΉ„ν˜•μ‹μ μΈ κ²€ν†  기법
      κ΄€λ¦¬μž 직책을 λ‹΄λ‹Ήν•˜λŠ” μ‚¬λžŒμ€ λ©€λ²„λ‘œ μ°Έμ—¬ λͺ»ν•¨
    • μΈμŠ€νŽ™μ…˜(Inspection) : μ†Œν”„νŠΈμ›¨μ–΄ μ €μž‘μž μ™Έμ˜ λ‹€λ₯Έ μ „λ¬Έκ°€ λ˜λŠ” νŒ€μ΄ κ²€μ‚¬ν•˜μ—¬ 문제λ₯Ό μ‹λ³„ν•˜κ³  λ¬Έμ œμ— λŒ€ν•œ 올반λ₯Έ 해결을 μ°Ύμ•„λ‚΄λŠ ν˜•μ‹μ μΈ κ²€ν†  기법
      개발 μ΄ˆκΈ°μ— κ²€μ‚¬ν•΄μ•Όλ§Œ 개발 초기 μž‘μ—…λ¬Όμ—μ„œ 문제λ₯Ό λ°œκ²¬ν•  수 있음
    • μ½”λ“œ 검사...

Dynamic Testing(동적 ν…ŒμŠ€νŠΈ)

ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜μ—¬ 였λ₯˜λ₯Ό μ°ΎλŠ” ν…ŒμŠ€νŠΈμ΄λ‹€.

  • μ†Œν”„νŠΈμ›¨μ–΄ 개발의 λͺ¨λ“  λ‹¨κ³„μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰
  • μ’…λ₯˜ : λΈ”λž™λ°•μŠ€ ν…ŒμŠ€νŠΈ, ν™”μ΄νŠΈλ°•μŠ€ ν…ŒμŠ€νŠΈ

Testing with Purpose

  • Recovery(회볡) Test
  • Security(μ•ˆμ „) Test
  • Stress(강도) Test : μ‹œμŠ€ν…œμ— κ³Όλ„ν•œ μ •λ³΄λŸ‰μ΄λ‚˜ λΉˆλ„ 등을 λΆ€κ³Όν•˜μ—¬ κ³ΌλΆ€ν•˜μ‹œμ—λ„ μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λŠ”μ§€λ₯Ό ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈ
  • Performance(μ„±λŠ₯) Test
  • Structure(ꡬ쑰) Test
  • Regression(νšŒκ·€) Test : 톡합 ν…ŒμŠ€νŠΈλ‘œ 인해 λ³€κ²½λœ λͺ¨μœ¨μ΄λ‚˜ μ»΄ν¬λ„ŒνŠΈμ— μƒˆλ‘œμš΄ 였λ₯˜κ°€ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈ
    • 이미 ν…ŒμŠ€νŠΈλœ ν”„λ‘œκ·Έλž¨μ˜ ν…ŒμŠ€νŒ…μ„ λ°˜λ³΅ν•˜λŠ” 것
    • νšŒκ·€ ν…ŒμŠ€νŠΈλŠ” μˆ˜μ •ν•œ λͺ¨λ“ˆμ΄λ‚˜ μ»΄ν¬λ„ŒνŠΈκ°€ λ‹€λ₯Έ 뢀뢄에 영ν–₯을 λ―ΈμΉ˜λŠ”μ§€, 였λ₯˜κ°€ 생기지 μ•Šμ•˜λŠ”μ§€ ν…ŒμŠ€νŠΈν•˜μ—¬ μƒˆλ‘œμš΄ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒμ„ λ³΄μ¦ν•˜κΈ° μœ„ν•΄ 반볡 ν…ŒμŠ€νŠΈλ₯Ό 함
  • Parallel(병행) Test

WhiteBox Test

ν™”μ΄νŠΈλ°•μŠ€ ν…ŒμŠ€νŠΈ(WhiteBox Test)λŠ” λͺ¨λ“ˆμ˜ μ›μ‹œ μ½”λ“œ(source code)λ₯Ό μ˜€ν”ˆμ‹œν‚¨ μƒνƒœμ—μ„œ μ›μ‹œ μ½”λ“œμ˜ 논리적인 λͺ¨λ“  경둜λ₯Ό ν…ŒμŠ€νŠΈν•˜μ—¬ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μ„€κ³„ν•˜λŠ” 방법이닀.

  • Module μ•ˆμ˜ μž‘λ™μ„ 직접 κ΄€μ°°ν•  수 있음
  • μ›μ‹œ μ½”λ“œμ˜ λͺ¨λ“  λ¬Έμž₯을 ν•œ 번 이상 μ‹€ν–‰ν•¨μœΌλ‘œμ¨ μˆ˜ν–‰ 됨

Types of WhiteBox Tests

  • Base Path Testing(기초 경둜 검사) :
    ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μ„€κ³„μžκ°€ 절차적 μ„€κ³„μ˜ 논리적 λ³΅μž‘μ„±μ„ μΈ‘μ •ν•  수 있게 ν•΄μ£ΌλŠ” ν…ŒμŠ€νŠΈ 기법
  • Condition Testing(μ œμ–΄ ꡬ쑰 검사) :
    • 쑰건 검사 : ν”„λ‘œκ·Έλž¨ λͺ¨λ“ˆ 내에 μžˆλŠ” 논리적 쑰건을 ν…ŒμŠ€νŠΈν•˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 섀계 기법
    • Loop Testing(루프 검사) : ν”„λ‘œκ·Έλž¨μ˜ 반볡 ꡬ쑰에 μ΄ˆμ μ„ 맞좰 μ‹€μ‹œν•˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 섀계 기법
    • Data Flow Testing(데이터 흐름 검사) : ν”„λ‘œκ·Έλž¨μ—μ„œ λ³€μˆ˜μ˜ μ •μ˜μ™€ λ³€μˆ˜ μ‚¬μš©μ˜ μœ„μΉ˜μ— μ΄ˆμ μ„ 맞좰 μ‹€μ‹œν•˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 섀계 기법

WhiteBox Tests Coverage

  • Statement Coverage(λ¬Έμž₯ 검증 κΈ°μ€€) :
    μ†ŒμŠ€ μ½”λ“œμ˜ λͺ¨λ“  ꡬ문이 ν•œ 번 이상 μˆ˜ν–‰λ˜λ„λ‘ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό 섀계
  • Branch Coverage(λΆ„κΈ° 검증 κΈ°μ€€) :
    μ†ŒμŠ€ μ½”λ“œμ˜ λͺ¨λ“  쑰건문에 λŒ€ν•΄ μ‘°κ±΄μ‹μ˜ κ²°κ³Όκ°€ True인 κ²½μš°μ™€ False인 κ²½μš°κ°€ ν•œ 번 이상 μˆ˜ν–‰ λ˜λ„λ‘ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό 섀계
    Decision Coverage(κ²°μ • 검증 κΈ°μ€€)이라고도 함
  • Condition Coverage(쑰건 검증 κΈ°μ€€) :
    μ†ŒμŠ€ μ½”λ“œμ˜ 쑰건문에 ν¬ν•¨λœ κ°œλ³„ μ‘°κ±΄μ‹μ˜ κ²°κ³Όκ°€ True인 κ²½μš°μ™€ False인 κ²½μš°κ°€ ν•œ 번 이상 μˆ˜ν–‰ λ˜λ„λ‘ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό 섀계
  • Branch/Codition Coverage(λΆ„κΈ°/쑰건 κΈ°μ€€) :
    λΆ„κΈ° 검증 κΈ°μ€€κ³Ό 쑰건 검증 기쀀을 λͺ¨λ‘ λ§Œμ‘±ν•˜λŠ” μ„€κ³„λ‘œ, 쑰건문이 True인 κ²½μš°μ™€ False인 κ²½μš°μ— 따라 쑰건 검증 κΈ°μ€€μ˜ μž…λ ₯ 데이터λ₯Ό κ΅¬λ¬Έν•˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό 섀계

BlackBox Test

λΈ”λž™λ°•μŠ€ ν…ŒμŠ€νŠΈ(BlackBox Test)λŠ” μ†Œν”„νŠΈμ›¨μ–΄κ°€ μˆ˜ν–‰ν•  νŠΉμ • κΈ°λŠ₯을 μ•ŒκΈ° μœ„ν•΄μ„œ 각 κΈ°λŠ₯이 μ™„μ „νžˆ μž‘λ™λ˜λŠ” 것을 μž…μ¦ν•˜λŠ” ν…ŒμŠ€νŠΈλ‘œ κΈ°λŠ₯ ν…ŒμŠ€λΌκ³  ν•œλ‹€.

  • μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­ λͺ…μ„Έλ₯Ό λ³΄λ©΄μ„œ ν…ŒμŠ€νŠΈ
  • 주둜 κ΅¬ν˜„λœ κΈ°λŠ₯을 ν…ŒμŠ€νŠΈ
  • μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ‹€μ‹œ

Types of BlackBox Tests

  • Equivalence Partitioning Testing(λ™μΉ˜ λΆ„ν•  검사) :
    • μž…λ ₯ 쑰건이 μœ νš¨ν•œ κ²½μš°μ™€ 그렇지 μ•Šμ€ 경우의 μž…λ ₯ 자료 개수λ₯Ό κ· λ“±ν•˜κ²Œ μ •ν•˜λŠ” 검사 기법
    • μ‹œμŠ€ν…œμ΄λ‚˜ μ‹œμŠ€ν…œ κ΅¬μ„±μš”μ†Œ λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ ν”„λ‘œκ·Έλž¨μ˜ μž…λ ₯κ°’κ³Ό 좜λ ₯값이 νŠΉμ • 그룹으둜 λΆ„λ₯˜λ˜λ©°, λΆ„λ₯˜λœ κ·Έλ£Ήλ‚΄μ˜ 값듀이 μ‹œμŠ€ν…œμ— μ˜ν•΄ λ™μΌν•˜κ²Œ μ·¨κΈ‰λœλ‹€λŠ” νŠΉμ„±μ„ μ΄μš©ν•˜μ—¬ μ‹œν—˜ν•˜λŠ” 기법
    • μœ μ‚¬ν•œ μž…λ ₯값듀이 μ‹œμŠ€ν…œμ„ κ±°μΉ˜λ©΄μ„œ μœ μ‚¬ν•œ 닡변이 λ‚˜μ˜¨λ‹€λŠ” 것을 κ°€μ •ν•˜μ—¬ ν…ŒμŠ€νŠΈ
  • Boundary Value Analysis(경계값 뢄석) :
    • μž…λ ₯ 쑰건의 쀑간값보닀 κ²½κ³„κ°’μ—μ„œ 였λ₯˜κ°€ λ°œμƒλ  ν™•λ₯ μ΄ λ†’λ‹€λŠ” 점을 μ΄μš©ν•˜μ—¬ μž…λ ₯ 쑰건의 경계값을 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ μ„ μ •ν•˜μ—¬ κ²€μ‚¬ν•˜λŠ” 기법
  • Cause-Effect Graphing Testing(원인-효과 κ·Έλž˜ν”„ 검사) :
    κ·Έλž˜ν”„λ₯Ό ν™œμš©ν•˜μ—¬ μž…λ ₯ 데이터 κ°„μ˜ 관계와 좜λ ₯에 영ν–₯을 λ―ΈμΉ˜λŠ” 상황을 μ²΄κ³„μ μœΌλ‘œ λΆ„μ„ν•œ λ‹€μŒ νš¨μš©μ„±μ΄ 높은 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μ„ μ •ν•˜μ—¬ κ²€μ‚¬ν•˜λŠ” 기법
  • Error Guessing(였λ₯˜ 예츑 검사) :
    과거의 κ²½ν—˜μ΄λ‚˜ ν™•μΈμžμ˜ 감각으둜 ν…ŒμŠ€νŠΈν•˜λŠ” 기법
  • Comparison Testing(비ꡐ 검사) :
    μ—¬λŸ¬ λ²„μ „μ˜ ν”„λ‘œκ·Έλž¨μ— λ™μΌν•œ ν…ŒμŠ€νŠΈ 자료λ₯Ό μ œκ³΅ν•˜μ—¬ λ™μΌν•œ κ²°κ³Όκ°€ 좜λ ₯λ˜λŠ”μ§€ ν…ŒμŠ€νŠΈ ν•˜λŠ” 기법


μ°Έκ³ ,
κΈΈλ²—μ•Œμ•€λ””. γ€Žμ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ μ‹€κΈ° 단기완성』. κΈΈλ²—. 2023.

profile
μ‚¬μš©μž κ²½ν—˜ ν–₯상과 지속적인 μ„±μž₯을 μΆ”κ΅¬ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ 개발자 ΚšΘ‰Ιž

0개의 λŒ“κΈ€