Brain
Science
root
/
학습 노트
/
Study Note
/
4: 소프트웨어 공학 (Software Engineering)
/
7. Object Oriented
7. Object Oriented
391. 소프트웨어 테스팅의 7가지 원리 (결함 발견, 완벽한 테스트 불가능, 조기 테스트, 결함 집중, 살충제 패러독스, 정황 의존, 오류 부재의 궤변)
392. 살충제 패러독스 (Pesticide Paradox) 극복을 위한 테스트 케이스 주기적 갱신
394. V-모델의 매핑 (요구사항-인수테스트, 기본설계-시스템테스트, 상세 설계-통합테스트, 코딩-단위테스트)
395. 검증 (Verification) - 제품을 올바르게 만들고 있는가 (과정, 산출 물 리뷰)
413. 동등 분할 (Equivalence Partitioning) - 입력 영역을 유효/무효 클래스로 분할하여 대푯값 테스트
2026-04-05
414. 경계값 분석 (Boundary Value Analysis) - 경계 부분에서 결함이 많다는 점 이용 (분할의 가장자리 값)
2026-04-05
415. 의사 결정 테이블 (Decision Table) - 복잡한 논리적 조건들의 조합을 표로 구성하여 테스트
2026-04-05
416. 상태 전이 테스트 (State Transition Testing) - 객체의 상태 변화 시나리오 검증
2026-04-05
417. 유스케이스 테스팅 (Use Case Testing) - 액터와의 상호작용 흐름 기반
2026-04-05
418. 페어와이즈 테스팅 (Pairwise Testing) - 변수 값들의 모든 쌍(Pair) 조합이 최소 한 번 테스트되도록 최적화 (조합 폭발 방지)
2026-04-05
419. 원인-결과 그래프 (Cause-Effect Graphing)
2026-04-05
420. 화이트박스 테스트 (White-box Test / 구조 기반 테스트) - 소스코드의 내부 논리 구조를 모두 검증
2026-04-05
421. 제어 흐름 테스트 (Control Flow Testing)
2026-04-05
422. 구문 커버리지 (Statement Coverage) - 코드의 모든 문장을 최소 한 번 실행
2026-04-05
423. 결정 커버리지 (Decision Coverage / 분기 커버리지) - 분기문(If, While 등)의 참/거짓을 최소 한 번씩 실행
2026-04-05
424. 조건 커버리지 (Condition Coverage) - 분기문 내의 각 개별 조건식이 참/거짓을 한 번씩 가짐
2026-04-05
425. 조건/결정 커버리지 (Condition/Decision Coverage) - 개별 조건과 전체 결정이 모두 참/거짓을 가짐
2026-04-05
426. 변경 조건/결정 커버리지 (MC/DC, Modified Condition/Decision Coverage) - 각 개별 조건이 독립적으로 전체 결과에 영향을 미침을 증명 (DO-178B/C 항공/안전 표준)
2026-04-05
427. 다중 조건 커버리지 (Multiple Condition Coverage) - 개별 조건의 모든 가능한 진리값 조합 (2^N)
2026-04-05
428. 경로 커버리지 (Path Coverage) - 가능한 모든 실행 경로를 테스트
2026-04-05
429. 데이터 흐름 테스팅 (Data Flow Testing) - 변수의 정의(Define)와 사용(Use) 경로 (DU 경로) 기반 검증
2026-04-05
430. 정적 테스팅 (Static Testing) - 코드를 실행하지 않고 리뷰나 도구를 통해 검증 (인스펙션, 정적 분석)
2026-04-05
431. 동적 테스팅 (Dynamic Testing) - 코드를 직접 컴파일하고 실행하여 검증
2026-04-05
432. 리스크 기반 테스팅 (Risk-based Testing) - 비즈니스 리스크가 높은 모듈에 테스트 자원 집중
2026-04-05
433. 탐색적 테스팅 (Exploratory Testing) - 명세서 없이 테스터의 직관과 경험을 바탕으로 테스트 설계와 수행을 동시 진행 (차터, 타임박스 활용)
2026-04-05
434. 오류 추정 (Error Guessing) - 테스터의 경험을 바탕으로 결함이 발생할 만한 곳을 추정하여 테스트
2026-04-05
439. 휴리스틱 오라클 (Heuristic Oracle) - 샘플링에 직관적/경험적 판단 추가
2026-04-05
440. 일관성 오라클 (Consistent Oracle) - 변경 전/후의 결과가 동일한지 확인 (회귀 테스트에 유용)
2026-04-05
441. 테스트 케이스 (Test Case) 구조 - 식별자, 전제조건, 입력 데이터, 기대 결과
2026-04-05
442. 테스트 시나리오 (Test Scenario) - 테스트 케이스들을 흐름에 따라 묶은 집합
2026-04-05
443. 테스트 절차 (Test Procedure) / 테스트 스크립트 (Test Script)
2026-04-05
444. 테스트 데이터 (Test Data) 생성 및 익명화 관리 (Test Data Management, TDM)
2026-04-05
445. 성능 테스트 (Performance Test) 4가지 유형
2026-04-05
446. 부하 테스트 (Load Test) - 시스템의 임계점(목표치)까지 부하를 증가시키며 상태 확인
2026-04-05
447. 스트레스 테스트 (Stress Test) - 임계점 이상의 과부하 상태에서 시스템 붕괴 및 복구 반응 확인
448. 스파이크 테스트 (Spike Test) - 갑작스럽게 사용자가 급증할 때의 반응 확인
449. 내구성 테스트 (Endurance / Soak Test) - 장시간 부하를 주어 메모리 누수(Leak) 등 확인
450. 벤치마크 테스트 (BMT, Benchmark Test) - 동일한 환경에서 여러 제품의 성능을 비교
2026-04-05
451. 사용성 테스트 (Usability Test) - 사용자가 시스템을 얼마나 쉽게 다룰 수 있는지 UI/UX 관점 평가
452. A/B 테스트 - 두 가지 UI/기능을 실 사용자에게 노출하여 반응 비교
453. 호환성 테스트 (Compatibility Test) - OS, 브라우저, 기기(모바일) 등 이기종 환경 동작 확인
454. 이식성 테스트 (Portability Test) - 다른 환경으로 시스템을 이전했을 때의 동작 확인
455. 모의 해킹 (Penetration Testing) 및 취약점 스캐닝
456. 뮤테이션 테스팅 (Mutation Testing / 돌연변이 테스팅) - 원본 코드에 고의로 에러(돌연변이)를 주입하여 기존 테스트 케이스가 이를 잡아내는지(Kill) 검증 (테스트 케이스의 품질 평가)
457. 퍼즈 테스팅 (Fuzz Testing / Fuzzing) - 무작위 또는 기형적인 데이터를 입력하여 크래시(Crash)나 예외 상황 유발
458. 테스트 더블 (Test Double) 5가지 개념 (xUnit 테스트 패턴)
459. Dummy (더미) - 인자 채우기용, 실제 사용 안됨
460. Stub (스텁) - 호출 시 준비된 답변만 반환 (상태 검증용)
461. Spy (스파이) - 스텁 역할 + 호출 정보 기록
462. Mock (목) - 행위(Behavior) 검증을 위해 예상되는 호출 명세가 프로그래밍된 객체
463. Fake (페이크) - 실제 동작하지만 프로덕션에는 적합하지 않은 축소판 (인메모리 DB 등)
464. 서비스 가상화 (Service Virtualization) - MSA 환경에서 외부 의존 API를 모사하는 스텁 서버
465. 지속적 테스팅 (Continuous Testing) - CI/CD 파이프라인 전 과정에 테스트 자동화 통합
466. 시프트 레프트 테스팅 (Shift-Left Testing) - 테스트 활동을 개발 초기(왼쪽) 단계로 당겨 결함 조기 발견
467. 시프트 라이트 테스팅 (Shift-Right Testing) - 운영 환경(오른쪽)에서의 테스트 (카나리, 카오스 엔지니어링)
468. 운영 환경 테스트 (Testing in Production / TiP)
469. 모델 기반 테스팅 (MBT, Model-Based Testing) - 시스템 모델(UML 등)에서 테스트 케이스 자동 생성
470. TDD (Test Driven Development) 생명주기 - 실패하는 테스트 작성(Red) -> 통과하는 최소 코드 작성(Green) -> 리팩토링(Refactor)