⭐️ Application Testing 2️⃣

m_ngyeongΒ·2024λ…„ 4μ›” 9일
0
post-thumbnail

🍏 Application Testing


Test Level

ν…ŒμŠ€νŠΈ λ ˆλ²¨μ΄λž€ μ†Œν”„νŠΈμ›¨μ–΄μ˜ 개발 단계에 따라 λ‹¨μœ„ ν…ŒμŠ€νŠΈ, 톡합 ν…ŒμŠ€νŠΈ, μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈ, 인수 ν…ŒμŠ€νŠΈλ‘œ λΆ„λ₯˜λœ 것이닀.

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν…ŒμŠ€νŠΈμ™€ μ†Œν”„νŠΈμ›¨μ–΄ 개발 단계λ₯Ό μ—°κ²°ν•˜μ—¬ ν‘œν˜„ν•  것을 V-λͺ¨λΈμ΄λΌκ³  함

Unit Test(λ‹¨μœ„ ν…ŒμŠ€νŠΈ)

λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” μ½”λ”© 직후 μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ˜ μ΅œμ†Œ λ‹¨μœ„μΈ λͺ¨λ“ˆμ΄λ‚˜ μ»΄ν¬λ„ŒνŠΈμ— μ΄ˆμ μ„ 맞좰 ν…ŒμŠ€νŠΈ ν•˜λŠ” 것이닀.

  • μΈν„°νŽ˜μ΄μŠ€, 외뢀적 I/O, 자료 ꡬ쑰, 독립적 기초 경둜, 였λ₯˜ 처리 경둜, 경계 쑰건 등을 검사
  • κ°œλ³„ λͺ¨λ“ˆμ„ μ‹œν—˜ν•˜λŠ” κ²ƒμœΌλ‘œ λͺ¨λ“ˆμ΄ μ •ν™•ν•˜κ²Œ κ΅¬ν˜„λ˜μ—ˆλŠ”μ§€, μ˜ˆμ •ν•œ κΈ°λŠ₯이 μ œλŒ€λ‘œ μˆ˜ν–‰λ˜λŠ”μ§€λ₯Ό μ κ²€ν•˜λŠ” 것이 μ£Όλͺ©μ μΈ ν…ŒμŠ€νŠΈ
  • μ‚¬μš©μžμ˜ μš”κ΅¬ 사항을 기반으둜 ν•œ κΈ°λŠ₯μ„  ν…ŒμŠ€νŠΈλ₯΄ μ΅œμš°μ„ μœΌλ‘œ μˆ˜ν–‰
  • ꡬ쑰 기반 ν…ŒμŠ€νŠΈμ™€ λͺ…μ„Έ 기반 ν…ŒμŠ€νŠΈλ‘œ λ‚˜λ‰˜μ§€λ§Œ 주둜 ꡬ쑰 기반 ν…ŒμŠ€νŠΈλ₯Ό μ‹œν–‰

Integration Test(톡합 ν…ŒμŠ€νŠΈ)

톡합 ν…ŒμŠ€νŠΈλŠ” λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ μ™„λ£Œλœ λͺ¨λ“ˆλ“€μ„ κ²°ν•©ν•˜μ—¬ ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œμœΌλ‘œ μ™„μ„±μ‹œν‚€λŠ” κ³Όμ •μ—μ„œμ˜ ν…ŒμŠ€νŠΈλ₯Ό μ˜λ―Έν•œλ‹€.

  • λͺ¨λ“ˆ κ°„ λ˜λŠ” ν†΅ν•©λœ μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ μƒν˜Έ μž‘μš© 였λ₯˜(μΈν„°νŽ˜μ΄μŠ€κ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λŠ”μ§€)λ₯Ό 검사
  • 비점진적 톡합 방식 / 점진적 톡합 방식

ν•˜ν–₯식 톡합 ν…ŒμŠ€νŠΈ(Top Down Integration Test)

ν”„λ‘œκ·Έλž¨μ˜ μƒμœ„ λͺ¨λ“ˆμ—μ„œ ν•˜μœ„ λͺ¨λ“ˆ λ°©ν–₯으둜 ν†΅ν•©ν•˜λ©΄μ„œ ν…ŒμŠ€νŠΈν•˜λŠ” 기법이닀.

  • 깊이 μš°μ„  방식 / λ„ˆλΉ„ μš°μ„  방식
  • Stub(μŠ€ν…) : μ œμ–΄ λͺ¨λ“ˆμ΄ ν˜ΈμΆœν•˜λŠ” 타 λͺ¨λ“ˆμ˜ κΈ°λŠ₯을 λ‹¨μˆœνžˆ μˆ˜ν–‰ν•˜λŠ” λ„κ΅¬λ‘œ, μΌμ‹œμ μœΌλ‘œ ν•„μš”ν•œ μ‘°κ±΄λ§Œμ„ 가지고 μž„μ‹œλ‘œ μ œκ³΅λ˜λŠ” μ‹œν—˜μš© λͺ¨λ“ˆ

상ν–₯식 톡합 ν…ŒμŠ€νŠΈ(Bottom Up Integration Test)

ν”„λ‘œκ·Έλž¨μ˜ ν•˜μœ„ λͺ¨λ“ˆμ—μ„œ μƒμœ„ λͺ¨λ“ˆ λ°©ν–₯으둜 ν†΅ν•©ν•˜λ©΄μ„œ ν…ŒμŠ€νŠΈν•˜λŠ” 기법이닀.

  • 절차 :
    1️⃣ ν•˜μœ„ λͺ¨λ“ˆλ“€μ„ ν΄λŸ¬μŠ€ν„°(Cluster)둜 κ²°ν•©
    2️⃣ μƒμœ„ λͺ¨λ“ˆμ—μ„œ λ°μ΄ν„°μ˜ μž…βˆ™μΆœλ ₯을 ν™•μΈν•˜κΈ° μœ„ν•΄ 더미 λͺ¨λ“ˆμΈ λ“œλΌμ΄λ²„(Driver)λ₯Ό μž‘μ„±
    3️⃣ ν†΅ν•©λœ ν΄λŸ¬μŠ€ν„° λ‹¨μœ„λ‘œ ν…ŒμŠ€νŠΈ
    4️⃣ ν…ŒμŠ€νŠΈκ°€ μ™„λ£Œλ˜λ©΄ ν΄λŸ¬μŠ€ν„°λŠ” ν”„λ‘œκ·Έλž¨ ꡬ쑰의 μƒμœ„λ‘œ μ΄λ™ν•˜μ—¬ κ²°ν•©ν•˜κ³  λ“œλΌμ΄λ²„λŠ” μ‹€μ œ λͺ¨λ“ˆλ‘œ λŒ€μ²΄λ¨
  • Test Driver(ν…ŒμŠ€νŠΈ νŠΈλΌμ΄λ²„) : ν…ŒμŠ€νŠΈ λŒ€μƒμ˜ ν•˜μœ„ λͺ¨λ“ˆμ„ ν˜ΈμΆœν•˜κ³ , νŒŒλΌλ―Έν„°λ₯Ό μ „λ‹¬ν•˜κ³ , λͺ¨λ“ˆ ν…ŒμŠ€νŠΈ μˆ˜ν–‰ν›„μ˜ κ²°κ³Όλ₯Ό λ„μΆœν•˜λŠ” 도ꡬ

System Test(μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈ)

μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈλŠ” 개발된 μ†Œν”„νŠΈμ›¨μ–΄κ°€ ν•΄λ‹Ή 컴퓨터 μ‹œμŠ€ν…œμ—μ„œ μ™„λ²½ν•˜κ²Œ μˆ˜ν–‰λ˜λŠ”κ°€λ₯Ό μ κ²€ν•˜λŠ” ν…ŒμŠ€νŠΈμ΄λ‹€.

  • κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­κ³Ό λΉ„κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­μ„ κ΅¬λΆ„ν•˜μ—¬ 각각을 λ§Œμ‘±ν•˜λŠ”μ§€ ν…ŒμŠ€νŠΈ

Acceptance Test(인수 ν…ŒμŠ€νŠΈ)

인수 ν…ŒμŠ€νŠΈλŠ” κ°œλ°œν•œ μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±ν•˜λŠ”μ§€μ— 쀑점을 두고 ν…ŒμŠ€νŠΈν•˜λŠ” 것이닀.

  • κ°œλ°œν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‚¬μš©μžκ°€ 직접 ν…ŒμŠ€νŠΈ
  • μ•ŒνŒŒ ν…ŒμŠ€νŠΈ : 개발자의 μž₯μ†Œμ—μ„œ μ‚¬μš©μžκ°€ 개발자 μ•žμ—μ„œ ν–‰ν•˜λŠ” ν…ŒμŠ€νŠΈ κΈ°λ²•μœΌλ‘œ, ν…ŒμŠ€νŠΈλŠ” ν†΅μ œλœ ν™˜κ²½μ—μ„œ 행해지며, 였λ₯˜μ™€ μ‚¬μš©μƒμ˜ λ¬Έμ œμ μ„ μ‚¬μš©μžμ™€ κ°œλ°œμžκ°€ ν•¨κ»˜ ν™•μΈν•˜λ©΄μ„œ 기둝
  • 베타 ν…ŒμŠ€νŠΈ : μ„ μ •λœ μ΅œμ’… μ‚¬μš©μžκ°€ μ—¬λ‘œ λͺ…μ˜ μ‚¬μš©μž μ•žμ—μ„œ ν–‰ν•˜λŠ” ν…ŒμŠ€νŠΈ κΈ°λ²•μœΌλ‘œ, μ‹€μ œ 업무λ₯Ό 가지고 μ‚¬μš©μžκ°€ 직접 ν…ŒμŠ€νŠΈν•¨

Test Oracle

ν…ŒμŠ€νŠΈ μ˜€λΌν΄μ€ ν…ŒμŠ€νŠΈ κ²°κ³Όκ°€ μ˜¬λ°”λ₯Έμ§€ νŒλ‹¨ν•˜κΈ° μœ„ν•΄ 사전에 μ •μ˜λœ 참값을 λŒ€μž…ν•˜μ—¬ λΉ„κ΅ν•˜λŠ” 기법 및 ν™œλ™μ„ λ§ν•œλ‹€.

  • κ²°κ³Όλ₯Ό νŒλ‹¨ν•˜κΈ° μœ„ν•΄ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•œ μ˜ˆμƒ κ²°κ³Όλ₯Ό κ³„μ‚°ν•˜κ±°λ‚˜ 확인
  • νŠΉμ§• : μ œν•œλœ 검증, μˆ˜ν•™μ  기법, μžλ™ν™” κΈ°λŠ₯

Types of Test Oracle

  • True(μ°Έ) Oracle : λͺ¨λ“  ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ μž…λ ₯ 값에 λŒ€ν•΄ κΈ°λŒ€ν•˜λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•˜λŠ” 였라클둜, λ°œμƒλœ λͺ¨λ“  였λ₯˜λ₯Ό κ²€μΆœν•  수 있음
  • Sampling(μƒ˜ν”Œλ§) Oracle : νŠΉμ •ν•œ λͺ‡λͺ‡ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ μž…λ ₯ 값듀에 λŒ€ν•΄μ„œλ§Œ κΈ°λŒ€ν•˜λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•˜λŠ” 였라클둜 μ „μˆ˜ ν…ŒμŠ€νŠΈκ°€ λΆˆκ°€λŠ₯ν•œ 경우 μ‚¬μš©ν•¨
  • Heuristic(μΆ”μ •) Oracle : νŠΉμ • ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ μž…λ ₯ 값에 λŒ€ν•΄ κΈ°λŒ€ν•˜λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•˜κ³ , λ‚˜λ¨Έμ§€ μž…λ ₯ 값듀에 λŒ€ν•΄μ„œλŠ” μΆ”μ •μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” 였라클
  • Consistent(일관성 검사) Oracle : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 변경이 μžˆμ„ λ•Œ, ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ μˆ˜ν–‰ μ „κ³Ό ν›„μ˜ κ²°κ³Ό 값이 λ™μΌν•œμ§€ ν™•μΈν•˜λŠ” 였라클

Test Automation Tools

  • Static Analysis Tools(정적 뢄석 도ꡬ) :
    • ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜μ§€ μ•Šκ³  λΆ„μ„ν•˜λŠ” 도ꡬ
    • μ†ŒμŠ€ μ½”λ“œμ— λŒ€ν•œ μ½”λ”© ν‘œμ€€, μ½”λ”© μŠ€νƒ€μΌ, μ½”λ“œ λ³΅μž‘λ„ 및 남은 결함을 λ°œκ²¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©
  • Test Execution Tools(ν…ŒμŠ€νŠΈ μ‹€ν–‰ 도ꡬ) :
    • 슀크립트 μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λŠ” 도ꡬ
    • ν…ŒμŠ€νŠΈ 데이터와 ν…ŒμŠ€νŠΈ μˆ˜ν–‰ 방법 등이 ν¬ν•¨λœ 슀크립트λ₯Ό μž‘μ„±ν›„ μ‹€ν–‰
  • Performance Test Tools(μ„±λŠ₯ ν…ŒμŠ€νŠΈ 도ꡬ) :
    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ²˜λ¦¬λŸ‰, 응닡 μ‹œκ°„, κ²½κ³Ό μ‹œκ°„, μžμ› μ‚¬μš©λ₯ μ— λŒ€ν•΄ κ°€μƒμ˜ μ‚¬μš©μžλ₯Ό μƒμ„±ν•˜κ³  ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•¨μœΌλ‘œμ¨ μ„±λŠ₯의 λͺ©ν‘œ 달성 μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” 도ꡬ
  • Test Control Tools(ν…ŒμŠ€νŠΈ ν†΅μ œ 도ꡬ) :
    • ν…ŒμŠ€νŠΈ κ³„νš 및 관리, ν…ŒμŠ€νŠΈ μˆ˜ν–‰, 결함 관리 등을 μˆ˜ν–‰ν•˜λŠ” 도ꡬ
  • Test Harness Tools(ν…ŒμŠ€νŠΈ ν•˜λ„€μŠ€ 도ꡬ) :
    • ν…ŒμŠ€νŠΈκ°€ 싀행될 ν™˜κ²½μ„ μ‹œλ¬Όλ ˆμ΄μ…˜ ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈ 및 λͺ¨λ“ˆμ΄ μ •μƒμ μœΌλ‘œ ν…ŒμŠ€νŠΈλ˜λ„λ‘ ν•˜λŠ” 도ꡬ
    • Test Harness(ν…ŒμŠ€νŠΈ ν•˜λ„€μŠ€) : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ»΄ν¬λ„ŒνŠΈ 및 λͺ¨λ“ˆμ„ ν…ŒμŠ€νŠΈν•˜λŠ” ν™˜κ²½μ˜ μΌλΆ€λΆ„μœΌλ‘œ, ν…ŒμŠ€νŠΈλ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄ μƒμ„±λœ μ½”λ“œμ™€ 데이터λ₯Ό 의미

Components of Test Harness

  • Test Driver(ν…ŒμŠ€νŠΈ νŠΈλΌμ΄λ²„) : ν…ŒμŠ€νŠΈ λŒ€μƒμ˜ ν•˜μœ„ λͺ¨λ“ˆμ„ ν˜ΈμΆœν•˜κ³ , νŒŒλΌλ―Έν„°λ₯Ό μ „λ‹¬ν•˜κ³ , λͺ¨λ“ˆ ν…ŒμŠ€νŠΈ μˆ˜ν–‰ν›„μ˜ κ²°κ³Όλ₯Ό λ„μΆœν•˜λŠ” 도ꡬ
  • Test Stub(ν…ŒμŠ€νŠΈ μŠ€ν…) : μ œμ–΄ λͺ¨λ“ˆμ΄ ν˜ΈμΆœν•˜λŠ” 타 λͺ¨λ“ˆμ˜ κΈ°λŠ₯을 λ‹¨μˆœνžˆ μˆ˜ν–‰ν•˜λŠ” λ„κ΅¬λ‘œ, μΌμ‹œμ μœΌλ‘œ ν•„μš”ν•œ μ‘°κ±΄λ§Œμ„ 가지고 μžˆλŠ” ν…ŒμŠ€νŠΈμš© λͺ¨λ“ˆ
  • Test Suites(ν…ŒμŠ€νŠΈ 슈트) : ν…ŒμŠ€νŠΈ λŒ€μƒ μ»΄ν¬λ„ŒνŠΈλ‚˜ λͺ¨λ“ˆ, μ‹œμŠ€ν…œμ— μ‚¬μš©λ˜λŠ” μΌ€μ΄μŠ€μ˜ 집합
  • Test Case(ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€) : μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­μ„ μ •ν™•ν•˜κ²Œ μ€€μˆ˜ν–ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•œ μž…λ ₯ κ°’, μ‹€ν–‰ 쑰건, κΈ°λŒ€ κ²°κ³Ό λ“±μœΌλ‘œ λ§Œλ“€μ–΄μ§„ ν…ŒμŠ€νŠΈ ν•­λͺ©μ˜ λͺ…μ„Έμ„œ
  • Test Script(ν…ŒμŠ€νŠΈ 슀트립트) : μžλ™ν™”λœ ν…ŒμŠ€νŠΈ μ‹€ν–‰ μ ˆμ°¨μ— λŒ€ν•œ λͺ…μ„Έμ„œ
  • Mock Object(λͺ© 였브젝트) : 사전에 μ‚¬μš©μžμ˜ ν–‰μœ„λ₯Ό μ‘°κ±΄λΆ€λ‘œ μž…λ ₯ν•΄ 두면, κ·Έ 상황에 λ§žλŠ” μ˜ˆμ •λœ ν–‰μœ„λ₯Ό μˆ˜ν–‰ν•˜λŠ” 객체


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

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

0개의 λŒ“κΈ€