1. 소프트웨어 테스트
노출되지 않은 결함(= 오류)을 찾기 위해 소프트웨어를 작동시키는 행위 또는 절차
2. 테스트 절차
① 계획과 통제
② 분석과 설계
③ 테스트 구현 및 실행
④ 테스트 완료 조건의 평가와 리포팅
⑤ 테스트 마감
3. 테스트의 기본 원리
테스트는 결함(오류)을 밝히는 활동 (개발 초기부터 수행)
모든 소프트웨어는 결함(오류) 존재 (= 결함이 발견되지 않았다고 해서 결함이 없는 소프트웨어가 아님)
살충제 패러독스 - 동일한 테스트 반복 수행하면 결함을 찾을 수 없다 -> 테스트를 리뷰하고 개선
파레토(Pareto) 법칙 - 소프트웨어의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다.
4. 테스트 케이스란 ?
프로그램의 특정 일부분이 잘 수행되는가, 요구사항을 준시하는가를 확인하기 위해 입력 값, 실행조건, 기대결과 등으로 구성된 테스트 항목의 명세서
5. 테스트 시나리오란 ?
테스트 케이스의 집합, 테스트 케이스의 동작 순서를 기술한 문서 (절차 명세 문서)
6. 테스트 오라클이란 ?
테스트 수행 결과가 참인지 거짓인지 판단하기 위해 미리 정의된 참 값을 대입하여 비교하는 방법
① 참 오라클 - 모든 입력값의 기대한 결과값 확인
② 샘플링 오라클 - 특정 몇몇 입력 값들에 대해
③ 휴리스틱 오라클 - 샘플링 오라클 + 나머지는 경험에 의한 처리
④ 일관성 검사 오라클 - 이전 수행결과와 현재 수행결과를 비교 검증
* 참샘휴일
7. 테스트 레벨(단계) = V 모델
SW 개발 주기에 대응되는 테스트항목을 표시한 V자형 모델
8. 테스트 기법
9. 테스트 실행 기법 중요 !!
1. 통합 테스트란 ?
단위 테스트가 완료된 모듈들을 통합해서 테스트하는 활동
2. 통합 테스트 접근 전략
3. 하향식 통합 / 상향식 통합
하향식 통합 (Top Down)
- 메인 제어 모듈부터 경로를 따라 하향식으로 통합, 아직 구현되지 않은 하위 모듈은 Stub을 이용
상향식 통합 (Bottom Up)
- 최하위 레벨 모듈부터 클러스터로 결합해 상향식으로 통합, 아직 구현되지 않은 상위 모듈은 Drive 이용
4. 테스트 자동화 도구
1. 알고리즘이란 ?
문제 해결을 위한 절차나 방법을 공식화한 형태로 표현한 것
2. 알고리즘 기술 방법
3. 순서도 (Flow chart)
4. 알고리즘 성능 표현 방법
5. 알고리즘 기법
① 분할과 정복 (Divide and Conquer) - 문제를 나누어 해결한 다음 다시 병합하여 답을 얻음
② 동적 계획법 (Dynamic Programming) - 과거에 구한 해를 활용하는 방식
③ 탐욕법 (Greedy) - 그 순간에 가장 좋다고 생각되는 것을 해답으로 활용
④ 백트랙킹 (Backtracking)
6. 정렬 알고리즘 중요 !!
선택 정렬 - 제일 작은 값을 선택하여 맨 왼쪽으로 이동 (오름차순)
버블 정렬 - 인접한 두 키를 비교하면서 제일 큰 값을 맨 오른쪽으로 이동 (오름차순)
삽입 정렬 - 왼쪽(앞)의 키들과 비교하여 삽입할 위치를 지정한 후에 자료를 삽입 (나머지 값들 이동)
병합 정렬 - 반으로 나누어 분할과 정복
퀵 정렬 - '피벗'이라는 기준을 중심으로 왼쪽에는 작은 값 오른쪽에는 큰 값들로 나누어 분할과 정복
힙 정렬 - 최대 힙, 최소 힙 트리를 구성하는 알고리즘으로 루트를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽
* 선택 / 버블 / 삽입 정렬은 𝛰(n^2) 퀵 / 병합 / 정렬은 𝛰(nlogn)
* 이미 정렬된 경우 가장 효율 좋은 정렬은 삽입, 가장 효율 안 좋은 정렬은 퀵
7. 리팩토링이란 ?
기능은 변경하지 않고 소스 코드를 수정 및 보완하여 가용성, 가독성, 성능을 높이는 기법