λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ‹œλ„/ꡭ비지원

[D+80] μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ν…ŒμŠ€νŠΈκ΄€λ¦¬

by πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2023. 1. 12.

 

 

ꡭ비지원 D+80

-  μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ν…ŒμŠ€νŠΈκ΄€λ¦¬ -

 


 

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ν…ŒμŠ€νŠΈκ΄€λ¦¬

• μ†Œν”„νŠΈμ›¨μ–΄ ν…ŒμŠ€νŠΈμ˜ κ°œλ…

μ†Œν”„νŠΈμ›¨μ–΄ ν…ŒμŠ€νŠΈλž€ κ΅¬ν˜„λœ μ‘μš© μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ μ‹œμŠ€ν…œμ΄ μ‚¬μš©μžκ°€ μš”κ΅¬ν•˜λŠ” κΈ°λŠ₯의 λ™μž‘κ³Ό μ„±λŠ₯, μ‚¬μš©μ„±, μ•ˆμ •μ„± 등을 λ§Œμ‘±ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•˜μ—¬ μ†Œν”„νŠΈμ›¨μ–΄μ˜ 결함을 μ°Ύμ•„λ‚΄λŠ” ν™œλ™μ΄λ‹€.

μ΄λ•Œ ν…ŒμŠ€νŠΈ ν™œλ™μ΄ 이루어지면 λ°˜λ“œμ‹œ μ‚°μΆœλ¬Όμ΄λΌλŠ” κ²°κ³Όκ°€ λ‚˜μ™€μ•Όν•œλ‹€.

 

• μ†Œν”„νŠΈμ›¨μ–΄ ν…ŒμŠ€νŠΈμ˜ 원리

β‘  ν…ŒμŠ€νŒ…μ€ 결함이 μ‘΄μž¬ν•¨μ„ λ°νžˆλŠ” ν™œλ™μ΄λ‹€.

ν…ŒμŠ€νŒ…μ€ μ†Œν”„νŠΈμ›¨μ–΄μ˜ 잠재적인 결함을 쀄일 수 μžˆμ§€λ§Œ, 결함이 λ°œκ²¬λ˜μ§€ μ•Šμ•„λ„ 결함이 μ—†λ‹€κ³  증λͺ…ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

 

β‘‘ μ™„λ²½ν•œ ν…ŒμŠ€νŒ…μ€ λΆˆκ°€λŠ₯ν•˜λ‹€.

λ¬΄ν•œ 경둜, λ¬΄ν•œ μž…λ ₯ κ°’, λ¬΄ν•œ μ‹œκ°„μ΄ μ†Œμš”λ˜μ–΄ μ™„λ²½ν•˜κ²Œ ν…ŒμŠ€νŠΈν•  수 μ—†μœΌλ―€λ‘œ 리슀크 뢄석과 μš°μ„ μˆœμœ„λ₯Ό ν† λŒ€λ‘œ ν…ŒμŠ€νŠΈμ— 집쀑할 것을 μ˜λ―Έν•œλ‹€.

 

β‘’ ν…ŒμŠ€νŒ…μ€ 개발 μ΄ˆκΈ°μ— μ‹œμž‘ν•΄μ•Ό ν•œλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 개발 단계에 ν…ŒμŠ€νŠΈλ₯Ό κ³„νšν•˜κ³  SDLC(Software Development Life Cycle)의 각 단계에 맞좰 μ „λž΅μ μœΌλ‘œ μ ‘κ·Όν•˜λŠ” 것을 κ³ λ €ν•˜λΌλŠ” λœ»μ΄λ‹€.

 

β‘£ 결함 집쀑(Defect Clustering)

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ²°ν•¨μ˜ λŒ€λΆ€λΆ„μ€ μ†Œμˆ˜μ˜ νŠΉμ €ν•œ λͺ¨λ“ˆμ— μ§‘μ€‘λ˜μ–΄ μ‘΄μž¬ν•œλ‹€.

 

β‘€ μ‚΄μΆ©μ œ νŒ¨λŸ¬λ…μŠ€(Presticide Paradox)

λ™μΌν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ 반볡 μ‹€ν–‰ν•˜λ©΄ 결함을 λ°œκ²¬ν•  수 μ—†μœΌλ―€λ‘œ 주기적으둜 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό λ¦¬λ·°ν•˜κ³  κ°œμ„ ν•΄μ•Ό ν•œλ‹€.

 

β‘₯ ν…ŒμŠ€νŒ…μ€ μ •ν™©(Context)에 μ˜μ‘΄ν•œλ‹€.

μ •ν™©κ³Ό λΉ„μ¦ˆλ‹ˆμŠ€ 도메인에 따라 ν…ŒμŠ€νŠΈλ₯Ό λ‹€λ₯΄κ²Œ μˆ˜ν–‰ν•˜μ—¬μ•Ό ν•œλ‹€.

 

⑦ 였λ₯˜-λΆ€μž¬μ˜ κΆ€λ³€(Absence of Errors Fallacy)

μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±ν•˜μ§€ λͺ»ν•˜λŠ” 였λ₯˜λ₯Ό λ°œκ²¬ν•˜κ³  κ·Έ 였λ₯˜λ₯Ό μ œκ±°ν•˜μ˜€λ‹€ 해도, ν•΄λ‹Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν’ˆμ§ˆμ΄ λ†’λ‹€κ³  말할 수 μ—†λ‹€.

 

• ν…ŒμŠ€νŠΈ ν”„λ‘œμ„ΈμŠ€

 

• μ†Œν”„νŠΈμ›¨μ–΄ ν…ŒμŠ€νŠΈ μ‚°μΆœλ¬Ό

- ν…ŒμŠ€νŠΈ κ³„νšμ„œ : ν…ŒμŠ€νŠΈ μˆ˜ν–‰μ„ κ³„νšν•œ λ¬Έμ„œ

 

- ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ : ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ 섀계 μ‚°μΆœλ¬Όλ‘œ, μ‘μš© μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­μ„ μ€€μˆ˜ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ μž…λ ₯κ°’, μ‹€ν–‰ 쑰건, κΈ°λŒ€ 결과둜 ꡬ성퇸 ν…ŒμŠ€νŠΈ ν•­λͺ© λͺ…μ„Έμ„œ

 

- ν…ŒμŠ€νŠΈ μ‹œλ‚˜λ¦¬μ˜€ : ν…ŒμŠ€νŠΈ μˆ˜ν–‰μ„ μœ„ν•œ μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ μ§‘ν•©μœΌλ‘œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ λ™μž‘ μˆœμ„œλ₯Ό κΈ°μˆ ν•œ λ¬Έμ„œμ΄λ©°, ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ 절차λ₯Ό λͺ…μ„Έν•œ λ¬Έμ„œ

 

- ν…ŒμŠ€νŠΈ κ²°κ³Όμ„œ : ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό μ •λ¦¬ν•œ λ¬Έμ„œλ‘œ ν…ŒμŠ€νŠΈ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ¦¬λ·°ν•˜κ³ , ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό ν‰κ°€ν•˜κ³  λ¦¬ν¬νŒ…ν•˜λŠ” λ¬Έμ„œ

 

• μ†Œν”„νŠΈμ›¨μ–΄ ν…ŒμŠ€νŠΈμ˜ μœ ν˜•

β‘  ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ—¬λΆ€

- 정적 ν…ŒμŠ€νŠΈ : ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 없이 μ†ŒμŠ€ μ½”λ“œμ˜ ꡬ쑰λ₯Ό λΆ„μ„ν•˜μ—¬ λ…Όλ¦¬μ μœΌλ‘œ κ²€μ¦ν•˜λŠ” ν…ŒμŠ€νŠΈλ‘œ μΈμŠ€νŽ™μ…˜, μ½”λ“œ 검사, μ›Œν¬μŠ€λ£¨ 등이 μžˆλ‹€.

- 동적 ν…ŒμŠ€νŠΈ : ν”„λ‘œκ·Έλž¨μ˜ 싀행을 μš”κ΅¬ν•˜λŠ” ν…ŒμŠ€νŠΈλ‘œ ν™”μ΄νŠΈλ°•μŠ€ ν…ŒμŠ€νŠΈμ™€ λΈ”λž™λ°•μŠ€ ν…ŒμŠ€νŠΈκ°€ μžˆλ‹€.

 

β‘‘ ν…ŒμŠ€νŠΈ 기법

- ν™”μ΄νŠΈλ°•μŠ€ ν…ŒμŠ€νŠΈ : ν”„λ‘œκ·Έλž¨μ˜ λ‚΄λΆ€ 둜직(μˆ˜ν–‰ 경둜 ꡬ쑰, 루프 λ“±)을 λ³΄λ©΄μ„œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•œλ‹€.

- λΈ”λž™λ°•μŠ€ ν…ŒμŠ€νŠΈ : ν”„λ‘œκ·Έλž¨μ˜ μ™ΈλΆ€ μ‚¬μš©μž μš”κ΅¬μ‚¬ν•­ λͺ…μ„Έλ₯Ό λ³΄λ©΄μ„œ ν…ŒμŠ€νŠΈ, 주둜 κ΅¬ν˜„λœ κΈ°λŠ₯을 ν…ŒμŠ€νŠΈν•œλ‹€.

 

β‘’ ν…ŒμŠ€νŠΈμ— λŒ€ν•œ μ‹œκ°

- 검증(Verification) : 개발자 κ΄€μ μœΌλ‘œ μ œν’ˆμ˜ 생산 과정을 ν…ŒμŠ€νŠΈν•˜λ©°, μ˜¬λ°”λ₯Έ μ œν’ˆμ„ μƒμ‚°ν•˜κ³  μžˆλŠ”μ§€ κ²€μ¦ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

- 확인(Validation) : 고객 κ΄€μ μœΌλ‘œ μƒμ‚°λœ μ œν’ˆμ˜ κ²°κ³Όλ₯Ό ν…ŒμŠ€νŠΈν•˜λ©° μƒμ‚°λœ μ œν’ˆμ΄ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

 

β‘£ ν…ŒμŠ€νŠΈ λͺ©μ 

- 회볡(Recovery) ν…ŒμŠ€νŠΈ

- μ•ˆμ „(Security) ν…ŒμŠ€νŠΈ

- 강도(Stress) ν…ŒμŠ€νŠΈ

- μ„±λŠ₯(Performance) ν…ŒμŠ€νŠΈ

- ꡬ쑰(Structure) ν…ŒμŠ€νŠΈ

- νšŒκ·€(Regression) ν…ŒμŠ€νŠΈ : μˆ˜μ •ν•œ λͺ¨λ“ˆλ§Œ ν…ŒμŠ€νŠΈν•˜λŠ” 것이 μ•„λ‹Œ μˆ˜μ •ν•œ λͺ¨λ“ˆμ΄ 영ν–₯λ ₯을 μ£ΌλŠ” μ½”λ“œκΉŒμ§€ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•΄μ•Όν•œλ‹€.

- 병행(Parallel) ν…ŒμŠ€νŠΈ

 

β‘€ ν…ŒμŠ€νŠΈ μ’…λ₯˜

- λͺ…μ„Έ 기반 ν…ŒμŠ€νŠΈ : 주어진 λͺ…μ„Έλ₯Ό 빠짐없이 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ κ΅¬ν˜„ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈ

 

- ꡬ쑰 기반 ν…ŒμŠ€νŠΈ : μ†Œν”„νŠΈμ›¨μ–΄ λ‚΄λΆ€ 논리 흐름에 따라 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•˜κ³  ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈ

 

- κ²½ν—˜ 기반 ν…ŒμŠ€νŠΈ : μœ μ‚¬ μ†Œν”„νŠΈμ›¨μ–΄λ‚˜ μœ μ‚¬ 기술 ν‰κ°€μ—μ„œ ν…ŒμŠ€ν„°μ˜ κ²½ν—˜μ„ ν† λŒ€λ‘œν•œ, 직관과 기술λŠ₯λ ₯을 기반으둜 μˆ˜ν–‰ν•˜λŠ” ν…ŒμŠ€νŠΈ

 

• ν…ŒμŠ€νŠΈ 였라클

β‘  ν…ŒμŠ€νŠΈ 였라클 μ •μ˜

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

- 였라클 : 정상이라고 νŒλ‹¨λ˜λŠ” κΈ°λŒ€κ²°κ³Ό(집합)λ₯Ό 였라클이라고 ν•œλ‹€.

 

β‘‘ ν…ŒμŠ€νŠΈ 였라클 μœ ν˜•

- μ°Έ(True) 였라클 : λͺ¨λ“  μž…λ ₯ 값에 λŒ€ν•˜μ—¬ κΈ°λŒ€ν•˜λŠ” κ²°κ³Όλ₯Ό μƒμ„±ν•¨μœΌλ‘œμ¨ λ°œμƒλœ 였λ₯˜λ₯Ό λͺ¨λ‘ κ²€μΆœν•  수 μžˆλŠ” μ˜€λΌν΄μ΄λ‹€.

 

- μƒ˜ν”Œλ§(Sampling) 였라클 : νŠΉμ •ν•œ λͺ‡ 개의 μž…λ ₯ 값에 λŒ€ν•΄μ„œλ§Œ κΈ°λŒ€ν•˜λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•΄ μ£ΌλŠ” μ˜€λΌν΄μ΄λ‹€.

 

νœ΄λ¦¬μŠ€ν‹±(Heuristic) 였라클 : μƒ˜ν”Œλ§ μ˜€λΌν΄μ„ κ°œμ„ ν•œ 였라클둜, νŠΉμ • μž…λ ₯ 값에 λŒ€ν•΄ μ˜¬λ°”λ₯Έ κ²°κ³Όλ₯Ό μ œκ³΅ν•˜κ³ , λ‚˜λ¨Έμ§€ 값듀에 λŒ€ν•΄μ„œλŠ” νœ΄λ¦¬μŠ€ν‹±(μΆ”μ •)으둜 μ²˜λ¦¬ν•˜λŠ” μ˜€λΌν΄μ΄λ‹€.

 

일관성 검사(Consistent) 였라클 : μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 변경이 μžˆμ„ λ•Œ, μˆ˜ν–‰ μ „κ³Ό ν›„μ˜ 결과값이 λ™μΌν•œμ§€ ν™•μΈν•˜λŠ” μ˜€λΌν΄μ΄λ‹€.

 

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

- ν•˜ν–₯식 톡합

예λ₯Όλ“€μ–΄ λ‘œκ·ΈμΈμ„ ν•˜λ©΄ 검색할 수 μžˆλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ €κ³  ν•œλ‹€.

μ΄λ•Œ 둜그인기λŠ₯이 κ΅¬ν˜„μ΄ λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ λ‚΄κ°€ μž„μ‹œλ‘œ λ”λ―Έλ‘œκ·ΈμΈ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ 검색기λŠ₯을 λ§Œλ“œλŠ” 것이 λ°”λ‘œ ν…ŒμŠ€νŠΈ μŠ€ν…(Stub)이닀.

 

- 상ν–₯식 톡합

λ§Œμ•½ κ΅¬λ§€νŽ˜μ΄μ§€κ°€ 둜그인이 λ˜μ–΄μžˆμ§€ μ•Šμ„λ•Œ 둜그인 창이 λœ¨λ„λ‘ ν•˜κ³  싢은데 κ΅¬λ§€νŽ˜μ΄μ§€λŠ” κ΅¬ν˜„λ˜μ–΄μžˆμ§€ μ•Šκ³  둜그인이 κ²½μš°μ— 따라 잘 μž‘λ™λ˜λŠ”μ§€ 확인해 보고 μ‹Άλ‹€λ©΄ λ”λ―Έν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ ν™•μΈν•˜λŠ” 것이 λ“œλΌμ΄λ²„(Driver)이닀.

 

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

ν…ŒμŠ€νŠΈ 도ꡬλ₯Ό ν™œμš©ν•΄ 반볡적인 ν…ŒμŠ€νŠΈ μž‘μ—…μ„ 슀크립트 ν˜•νƒœλ‘œ κ΅¬ν˜„ν•¨μœΌλ‘œμ¨, ν…ŒμŠ€νŠΈ μ‹œκ°„ 단좕과 인λ ₯ νˆ¬μž… λΉ„μš©μ„ μ΅œμ†Œν™”ν•˜λŠ” ν•œνŽΈ, 쉽고 효율적인 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆλŠ” 방법이닀.

 

• ν…ŒμŠ€νŠΈ μž₯치 - ν…ŒμŠ€νŠΈ 슈트(Test Suites)

- ν…ŒμŠ€νŠΈ λŒ€μƒ μ»΄ν¬λ„ŒνŠΈλ‚˜ λͺ¨λ“ˆ, μ‹œμŠ€ν…œμ— μ‚¬μš©λ˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 집합을 λ§ν•œλ‹€.

- ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 집합 + ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό λ„μΆœ κ°€λŠ₯ν•œ λ¬Έμ„œ

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€