테스트 관련 용어
- 스터브(Stub): 하위 모듈을 대신하여 호출할 수 있는 임시 코드
- 드라이버(Driver): 상위 모듈의 호출을 대신하는 임시 코드
- 테스트 스위트(Test Suite): 테스트 케이스들의 집합
- 테스트 상황(Condition): 테스트 수행 시 고려해야 할 조건이나 상태.
- 테스트 오라클(Test Oracle): 테스트 결과의 올바름을 판단하는 기준.
- 테스트 하네스(Harness): 테스트 수행을 위한 도구와 환경.
- 단위 테스트: 코드의 개별 모듈 테스트.
- 통합 테스트: 모듈 간 상호작용을 테스트.
- 테스트 케이스(Test Case): 특정 입력과 예상 결과를 포함하는 테스트의 단위.
- 오류(Error): 문제를 일으키는 실제 원인
- 결함(Defect): 소프트웨어 산출물이 요구사항을 충족하지 못하거나 표준에 부합하지 않는 상태
- 장애(Failure): 소프트웨어의 실행결과가 올바른 결과와의 차이
- 리그레션 테스트(Regression Test): 수정 후 기존 기능이 영향을 받지 않았는지 확인하는 테스트.
- 인수 테스트(Acceptance Test): 고객 요구사항에 따라 시스템을 검증하는 테스트.
- 시스템 테스트(System Test): 전체 시스템의 요구사항 준수를 확인하는 테스트.
- 테스트 베이시스: 테스트 설계의 근거가 되는 문서나 정보.
- 빅뱅 테스트(Big Bang Test): 모든 모듈을 한 번에 통합하여 테스트.
- 백본 테스트(Backbone Test): 핵심 경로를 중심으로 진행하는 테스트
- 알파 테스트(Alpha Test): 내부 환경에서 소수의 사용자가 수행하는 초기 테스트
- 베타 테스트(Beta Test): 실제 사용 환경에서 외부 사용자가 수행하는 테스트.
- 명세기반 테스트: 요구사항 명세 기반 테스트.
- 구조기반 테스트: 코드 구조 기반 테스트.
- 전수 테스팅(Exhaust Testing): 가능한 모든 입력과 경로를 테스트하는 방식.
- 싸이클로메틱 복잡도: 코드의 복잡성을 측정하여 결함 가능성을 예측하는 지표
- 사용사례기반 테스팅: 사용자 시나리오를 기반으로 하는 테스트.
- 동치분할 테스팅: 유사한 입력값을 그룹화하여 대표값으로 테스트.
- 화이트박스 테스팅: 코드 내부 구조 기반 테스트.
- 블랙박스 테스팅: 코드 내부를 보지 않고 요구사항에 따라 테스트.
소프트웨어 품질 및 기타
- 디버깅(Debugging): 코드의 오류를 찾아 수정하는 과정.
- 문장 커버리지(Statement Coverage): 코드의 모든 문장이 실행되었는지 측정.
- 조건 커버리지(Condition Coverage): 모든 조건식의 참/거짓 결과가 실행되었는지 측정.
- 결정 커버리지(Decision Coverage): 조건 분기마다 모든 결과를 테스트.
- 리엔지니어링(Re-engineering): 기존 소프트웨어를 개선하는 작업.
- 리버스 엔지니어링(Reverse Engineering): 기존 소프트웨어를 분석하여 설계를 도출하는 작업.
품질 지표
- 응집도 7개:
• 우연적(Coincidental)
• 논리적(Logical)
• 시간적(Temporal)
• 절차적(Procedural)
• 통신적(Communicational)
• 순차적(Sequential)
• 기능적(Functional)
- 결합도 5개:
• 자료 결합(Data Coupling)
• 스탬프 결합(Stamp Coupling)
• 제어 결합(Control Coupling)
• 외부 결합(External Coupling)
• 내용 결합(Content Coupling)
코드 스멜(Code Smell) 10개
- Duplicated Code: 중복된 코드.
- Long Method: 지나치게 긴 메서드.
- Large Class: 지나치게 큰 클래스.
- Long Parameter List: 매개변수 목록이 길다.
- Divergent Change: 하나의 클래스가 여러 이유로 변경됨.
- Shotgun Surgery: 하나의 변경이 여러 클래스를 수정하게 만듦.
- Feature Envy: 클래스가 다른 클래스의 데이터에 지나치게 의존.
- Data Clumps: 특정 데이터들이 항상 같이 다니는 경우.
- Primitive Obsession: 기본 타입을 지나치게 많이 사용.
- Switch Statements: 복잡한 switch/case문 사용.
'Programming > etc ...' 카테고리의 다른 글
객체지향과 절차지향 (0) | 2024.06.22 |
---|---|
iterm, oh-my-zsh 설정 - 현재 (0) | 2023.02.13 |