- 기능 시험 (COVER)
: 시험 절차(요구사항 기반)에 따라 test
target 직접 연결하여 실행파일 검증
'아키텍처 설계서' 기반ex. <pad.c> SRS STD 1. 문서를 open할 수 있다. → 1. Pad 실행 ... 2. File명 클릭 n. 3. 열기 button 클릭 4. 파일을 open [오류 가능성] 문서 txt, word, 아래한글만 사용한다는 가정하에, 3가지 파일형만 open 가능하도록 test 그 외 파일형이 open 불가하도록 test
- 단위 시험 (CONTROLLER TESTER - CT)
: target 직접 연결하여 실행파일 내 함수 검증
'상세 설계서' 기반
함수 = 코드 내 최소 단위
함수들의 집합 = 모듈, 컴포넌트, 시스템 등
▶ 코드 커버리지 : 소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 테스트 진행 시, '코드 자체가 얼마나 실행되었는지'를 수치로 확인 가능 ▶ 커버리지 (1) 문장 커버리지: ;(=semicolon) 기준 모든 문장 test (2) 분기 커버리지: 조건문, 반복문 기준 test (3) MC/DC 커버리지: 분기문 안에 있는 개별 조건문 포함 test
- 아키텍처 설계서 & 상세 설계서
ex. 계산기
1. 덧셈기능 //아키텍처 설계서
1-1 숫자 int형 //상세 설계서 (함수)
- 아키텍처
ex.
1. 덧셈기능
1-1 숫자 int형
1-2 ...
2. 뺄셈기능
2-1 ...
2-2 ...
2-23 ...
//단위 테스트: 1-1, 1-2, 2-1 ..
//통합 테스트: 1, 2
//시스템 테스트: all(1+2)
- host & target
-host: PC, windows (환경)
-target: 하드웨어 내부 칩 (보드)
※ target OS 없을 경우, host에서 동적시험
- 테스트 하네스(= 테스트 드라이버)
: 자동화된 테스트 지원도구
테스트 코드 및 입력값(in 파라미터, 전역변수) 자동생성
- 의존성 제거
: 단위시험 시, 함수를 직접 호출하지 않고
목 객체 or stub을 이용해서 값을 조절해가며 시험
- 테스트 충분성
: 위험도가 높을수록, 깊이있고 충분한 테스트 요구ex. 드론 구문 커버리지 - 스크린 시계 분기 커버리지 MC/DC 커버리지 - 프로펠러 all pass // ↓ 할수록 충분한 테스트 = 비효율적
- 시스템 안정성
: 회피 가능성, 고장 빈도 등 평가 기준표에 따라 어떤 커버리지를 수행할 것인지 결정하는 척도
ex.
a = 1;
b = 3;
if (a < b && a > 0){
a = b;
}
구문 커버리지 100% (3/3)
→ a = 1;, b = 3;, a = b; 세 문장 모두 실행 o
분기 커버리지 50% (1/2)
→ if가 true일 경우, 테스트 o if가 false일 경우, 테스트 x
1) signaled "메모리 오류"
전역 변수, 포인터 변수 등 할당된 메모리가 없는 상태에서 접근할 때,
- 해결방안
: 전역 변수, 파라미터에 값을 할당
or null 포인터를 참조하지 않도록 수정
2) Abnormal exit "비정상적인 종료"
ex. exit, reset 함수 //비정상
return, int //정상
(void) 함수 전체 실행 후 종료 //정상
- 해결방안
: 코드 → 미달성 사유서 작성
함수 → stub 빈 함수도 대체
3) Timeout "무한루프"
- 해결방안
: 코드 → 미달성 사유서 작성
값을 조절하여 무한루프 탈출
- 메모리맵 파일 = 파티션 해놓을 파일 내에서 메모리 조정 가능
- 시험 대상을 줄인 후, test
- 필요한 것만 사용하여 test (메모리 절약)