일이 끝나고 추석연휴 첫 날. 쉬고 싶었지만 정보처리기사 시험이 얼마 남지 않아 책을 폈다.
테스트 레벨 : SW 개발 단계에 따라 단위, 통합, 시스템, 인수
테스트로 분류
소프트웨어 생명 주기의 V-모델 - A
코딩 직후 SW 설계 최소 단위인 모듈이나 컴포넌트에 초점
을 맞춰 테스트
인터페이스, 외부 I/O, 자료구조, 오류처리경로, 경계 조건 등을 검사
개별 모듈을 시험하는 것으로 모듈이 정확하게 구현 됐는지 예정한 기능이 제대로 수행되는지를 점검하는 것이 주 목적.
단위테스트가 완료된 모듈을 결합해 하나의 시스템으로 완성
시키는 과정에서의 테스트
모듈 간 또는 통합된 컴포넌트 간의 상호 작용 오류를 검사
개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는 가를 점검
개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트
개발한 소프트웨어를 사용자가 직접 테스트
알파 테스트
: 개발자의 장소에서 사용자가 개발자 앞에서 테스트
통제된 환경에서 오류와 문제점을 사용자와 개발자가 함께 기록함
베타 테스트
: 선정된 최종 사용자가 여러명의 사용자 앞에서 행하는 테스트
실 업무를 가지고 사용자가 직접 테스트
Top Down Integration Test. 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트
주요 제어 모듈은 작성된 프로그램을 사용하고 주요 제어 모듈의 종속모듈은 스텁으로 대체
스텁(Stub)
: 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구. 일시적으로 필요한 조건만 가지고 있는 시험용 모듈Bottom Up Integration Test. 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
하위 모듈을 클러스터
로 결합. 상위 모듈에서 데이터 입출력을 확인하기 위해 더미 모듈인 테스트 드라이버를 작성한다.
테스트 드라이버(Test Driver)
: 더미 모듈. 테스트 대상의 하위 모듈을 호출하고 파라미터를 전달하고 모듈 테스트 수행 후의 결과를 도출하는 도구통합 테스트로 인해 변경된 모듈이나 컴포넌트
에 새로운 오류가 있는지 확인하는 테스트
이미 테스트 된 프로그램의 테스팅을 반복하는 것
수정된 모듈이나 컴포넌트가 다른 부분에 영향을 미치는 지 테스트해 새로운 오류가 발생하지 않음을 보증하기 위해 반복 테스트
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입해 비교하는 기법
결과 판단을 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인
참(True) 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클. 발생된 모든 오류를 검출 가능
샘플링(Sampling) 오라클 - B : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클. 전수 테스트가 불가능 한 경우 경계값 및 구간 별 예상값 결과 작성시 사용
추정(Heuristic) 오라클 : 특정 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하고 나머지 입력값에 대해서는 추정으로 처리하는 오라클
일관성(Consistent) 오라클 : 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과값이 동일한지 확인하는 오라클
성능 테스트 도구 : 애플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률에 대해 가상의 사용자를 만들어 테스트를 수행함으로써 성능 목표를 달성하였는지 확인하는 도구
그외 정적분석도구, 테스트 실행 도구, 테스트 통제 도구, 테스트 하네스 도구가 있다.
테스트를 지원하기 위해 생성된 코드와 데이터
소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것
오류발생, 작동 실패 뿐만 아니라 예상과 실제의 차이, 업무내용과의 불일치 등으로 인해 변경이 필요한 부분도 모두 결함에 해당한다.
처리량
(Throughput) : 일정 시간 내에 애플리케이션이 처리하는 일의 양응답 시간
(Response Time) : 애플리케이션에 요청을 전달한 시간~응답이 도착할때까지 걸린 시간경과 시간
(Turn Around Time) : 애플리케이션에 작업을 의뢰한 시간~처리가 완료될 때 까지 걸린 시간자원 사용률
or 자원 활용률(Resource Usage) : 애플리케이션이 의뢰한 작업을 처리하는 동안의 CPU사용량, 메모리 사용량, 네트워크 사용량 등O(1)
: 수행시간이 입력 데이터 수와 관계 없이 일정
. ex) 스택의 삽입, 삭제한 프로그램의 논리적인 복잡도를 측정하기 위한 척도. 맥케이브 순환도라고도 한다.
순환 복잡도 V(G) = 화살표 수 - 노드 수 + 2
나쁜코드를 배제하고 클린코드로 작성하는 것
클린코드 : 누구나 쉽게 이해하고 수정할 수 있는 단순 명료한 코드
나쁜코드(Bad Code) : 로직이 복잡하고 이해하기 어려운 코드
ex) 스파게티코드(로직이 복잡하게 얽힘), 에일리언 코드(Alien Code, 오래되거나 참고문서 혹은 작성한 개발자가 없어 유지보수가 어려운 코드)
정적 분석(Static Analysis) 도구
작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 도구
동적 분석(Dynamic Analysis) 도구
작성한 소스 코드를 실행해 프로그램의 동작이나 반응을 추적하고 보고하는 도구. 모니터링 기능이나 스냅샷 생성 기능들을 포함하고 있다. 메모리 누수 스레드 결함 등을 분석한다.