[Sec 1. 애플리케이션 테스트케이스 설계]
소프트웨어 테스트
기본 원칙
- 완벽한 테스팅은 불가능하다.
- 테스팅은 개발 초기에 시작해야 한다.
- 테스팅 방법은 특정 상황에 의존적이다.
- 파레토 법칙 : 전페 결과의 80%가 전체 원인의 20%에서 일어나는 현상 (결함 집중)
- 살충제 패러독스 : 반복적인 테스트로는 새로운 결함을 찾기 어렵다.
- 오류-부재의 궤변 : 오류가 없다고 해도 사용자의 요구사항을 충족하지 않으면 품질이 좋다고 할 수 없다.
테스트 산출물 : 테스트 계획서, 테스트 케이스, 테스트 시나리오, 테스트 결과서
- 테스트 케이스(테스트 항목의 입력, 실행 조건, 기대 결과를 포함한 테스트 항목의 명세서)
테스트 오라클 : 테스트의 결과가 참인지 거짓인지 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법
- 참 오라클 : 모든 입력 값에 정확한 결과, 크리티컬한 시스템에서 사용
- 샘플링 오라클 : 제한된 입력 값들에 대해서만, 대부분에서 사용
- 휴리스틱 오라클 : 특정 입력 값들에는 정확하게, 나머지는 근사적인 추정치를 제공
- 일관성 검사 오라클 : 소프트웨어의 변경 전후로 테스트 결과의 일관성을 검증
테스트 레벨 : 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
단위 테스트
- 정적 테스트 : 소프트웨어의 실행 없이 테스트 (코드검사, 워크스루, 인스펙션)
- 동적 테스트 : 실제로 소프트웨어를 실행하며 테스트
통합 테스트 : 상호작용 중 발생할 수 있는 문제점 검출
점증적 방식
- 상향식 통합 테스트 : 하위 모듈을 클러스터로 결합하면서 위쪽 방향으로 진행, driver 개발
- 하향식 통합 테스트 : 깊이우선/너비우선 방식으로 통합, stub 개발
비점증적 방식
- 빅뱅 테스트 : 모든 구성 요소들을 한꺼번에 통합하여 테스트, 소규모 시스템에 사용
- 백본 테스트 : 상향식과 하향식의 장점 이용, 대규모 프로젝트에 사용
시스템 테스트
- 기능 테스트
- 비기능 테스트
인수 테스트
- 알파 테스트 : 개발자와 사용자
- 베타 테스트 : 사용자
테스트 기법
- 화이트박스 테스트 : 개발자 관점
기초 경로 검사(McCabe) : 면 + 1
- 블랙박스 테스트 : 사용자 관점
동등 분할 기법, 경계값 분석, 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사, 상태전이 검사
테스트 분류
시각에 따라 : Verification(개발자가 검증), Validation(사용자가 확인)
목적에 따라 : 회복, 안전, 강도(과다 정보량 부과), 성능, 구조, 회귀(수정된 코드에 대해 새로운 결함 발견 여부 평가), 병행, A/B 테스트, 스모크 테스트(간단하게 테스트)
종류 : 명세 기반 테스트, 구조 기반 테스트, 경험 기반 테스트
테스트 커버리지 : 테스트를 얼마나 수행했는지 측정하는 기준(기능 기반 커버리지, 라인 커버리지, 코드 커버리지)
[Sec 2. 애플리케이션 통합 테스트]
결함관리 측정 지표
- 결함 분포 : 특정 속성에 해당하는 결함의 수
- 결함 추세 : 시간의 흐름에 따른 결함의 수
- 결함 에이징 : 결함 상태의 지속 시간 측정
테스트 자동화 도구 : 반복적인 테스트 작업 자동화
- 정적 분석 도구 : 애플리케이션을 실행하지 않고 (↔ 동적 분석 도구(Avalanche, Valgrind))
- 테스트 실행 도구 : 사전에 작성된 테스트 스크립트나 시나리오 실행
- 성능 테스트 도구 : 시스템의 성능 테스트
- 테스트 통제 도구 : 테스트의 전체 프로세스 관리
- 테스트 장치 : 드라이버(상향식 테스트), 스텁(하향식 테스트), 슈트(테스트 케이스의 집합), 테스트 케이스(입력 값, 실행 조건, 기대 결과), 테스트 스크립트, 목 오브젝트
[Sec 3. 애플리케이션 성능 개선]
알고리즘
조건 : 입력, 출력, 명확성, 유한성, 효과성
설계 기법 : 분할과 정복, 동적 계획법, 탐욕법, 백트래킹
성능 분석 : 시간 복잡도(빅오 표기법)
O(1) > O(log n) > O(n) > O(n log n) > O(n²) > O(2ⁿ) > O(n!)
O(1) : 스택, 해시 함수(: 최악의 경우 O(n))
O(log n) : 이진 검색, 이진 트리 검색(: 최악의 경우 O(n))
O(n) : 선형 검색, 배열 순차 탐색
O(n log n) : 퀵 정렬(: 최악의 경우 O(n²)), 힙 정렬, 병합 정렬
O(n²) : 선택 정렬, 삽입 정렬, 버블 정렬
정렬 알고리즘 (→ 정렬에서 가장 빠른 시간 복잡도는 O(n log n)이다.)
- 선택 정렬 : 리스트 중 최솟값을 찾아 비교 대상과 교체
- 삽입 정렬 : 처음부터 순차적으로 현재 값이 삽입될 자리를 찾아 삽입
- 버블 정렬 : 인접한 값끼리 계속 비교하면서 정렬
- 퀵 정렬 : 피벗을 사용하여 분할하면서 정렬, 일반적으로 O(n log n), 최악의 경우 O(n²)
- 힙 정렬 : 추가 메모리를 사용하지 않음
- 병합 정렬 : 배열을 반으로 분할하여 정렬한 후 병합, 추가 메모리 필요
클린코드 작성 원칙 : 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화
'Data Analysis > 정보처리기사' 카테고리의 다른 글
| [3과목 데이터베이스 구축] 01. 논리 데이터베이스 설계 (0) | 2024.04.18 |
|---|---|
| [2과목 소프트웨어 개발] 05. 인터페이스 구현 (0) | 2024.04.18 |
| [2과목 소프트웨어 개발] 03. 제품 소프트웨어 패키징 (0) | 2024.04.18 |
| [2과목 소프트웨어 개발] 02. 통합 구현 (0) | 2024.04.18 |
| [2과목 소프트웨어 개발] 01. 데이터 입출력 구현 (1) | 2024.04.18 |