응용 S/W 구현관리
테스트케이스
구현된 S/W가 사용자의 요구사항대로 정확하게 작성되었는지 확인하기 위해 설계된
입력값, 실행조건, 기대결과 등으로 구성된 테스트 항목에 대한 명세서
특정한 프로그램 일부 또는 경로에 따라 수행
테스트 시나리오
테스트 수행을 위한 여러 테스트 케이스 집합
테스트 케이스의 동작순서를 명세한 문서
테스트 수행절차를 미리 지정함으로 설계단계에서 중요시되던 요구사항이나
사전조건 등과 같은 구체적인 테스트 항목을 빠짐없이 수행할 수 있음
테스트 오라클
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동
결과를 판단하기 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인
모든 테스트 케이스에 적용할 수 없음
테스트 오라클의 값을 수학적 기법을 이용하여 구할 수 있음
테스트 대상 프로그램의 실행, 결과 비교, 커버리지 측정등을 자동화 할 수있음
종류
참 오라클, 샘플링 오라클, 추정 오라클, 일관성검사 오라클
테스트 자동화 도구
사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는
자동화 도구를 적용하여 쉽고 효율적으로 테스트를 수행하는 것
휴먼에러를 줄이고 테스트의 정확성을 유지하면서 테스트 품질향상을 꾀함
테스트 자동화도구 구분과 특징
정적 분석도구
프로그램을 실행하지 않고 분석하는 도구/소스코드에 대한 코딩표준, 코딩스타일,
코드 복잡 및 남은 결함 등을 발견하기위해 사용
테스트 실행도구
스크립트 언어를 사용하여 테스트를 실행
테스트 데이터와 테스트 수행방법등이 포함된 스크립트 작성 후 실행
데이터 주도 접근방식과 키워드 주도 접근방식으로 나뉨
성능 테스트 도구
처리량, 응답시간, 경과시간, 자원사용률등을 인위적으로 적용
가상의 사용자로 하여금 테스트를 수행함으로 성능의 목표 달성여부 확인
테스트 통제 도구
테스트 계획 및 관리, 테스트 수행, 결함관리 등을 수행하는 도구
종류 : 형상관리도구, 결함 추적관리 도구 등
테스트 하네스 도구
애플리케이션의 컴포넌트 및 모듈을 테스틀하는 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드와 데이터
테스트 실행될 환경을 시물레이션하여 컴포넌트 및 모듈이 정상적으로 테스트 되도록 함
결함 개념
요구된 기능을 수행하는데 실패의 원인이 되는 우발적인 조건
오류발생, 작동실패등과 같이 S/W가 개발자가 설계한 것과 다르게 동작 및 결과 발생되는 것
결함의 유형별 분류
시스템 결함
: 시스템 다운, 애플리케이션 작동 중지, 응답시간 지연, DB오류와 같이 애플리케이션 환경에서 발생
기능 결함
: 사용자 요구사항이 제대로 반영되지 않았거나 스크립트 오류, 외브시스템 연동오류 등과 같은 결함
GUI 결함
: 데이터 타입 표시오류, 부정확한 커서, 메시지 오류등 화면 인터페이스 설계에서 발생
문서 결함
: 사용자 온 오프라인 메뉴얼 불일치, 개발자 사용자간의 의사소통 및 명세 목록이 원활하지 않음으로써 발생
결함관리도구
결함을 체계적으로 관리할 수 있도록 도와주는 도구
종류 : Mantis, trac, redmine, Bugzila
결함 생명주기
상태별 명칭과 의미 알아두기
결함관리 프로세스
결함관리 계획
: 결함 관리일정/인력 확보하여 계획 수립
결함 기록
: 테스트팀에서 발견된 결함을 결함관리시스템에 기록
결함검토
: 등록된 결함을 검토하고 개발자에게 전달
결함수정
: 개발자가 결함을 수정
결함 재확인
: 테스터는 개발자가 수정한 내용확인
: 재 테스트 수행
상태추적 및 모니터링
: 결함관리시스템에 저장된 내용을 이용하여 겷함유형, 발생률 등을 한눈에 확인하는 서비스 제공
최종 결함 분석 및 보고서 작성
: 발견된 결함정보와 이해관계자의 의견이 반영된 보고서 작성
결함 조치 우선순위
발견된 결함에 대해 어떤 결함을 먼저 처리할 것인가에 대한 척도를 의미
가중치
: 애플리케이션의 평가 항목이나 각 단위 업무가 차지하는 중요도를 의미
결함 심각도
: 단위 업무 프로세스에 발생한 결함이 전체 시스템에 미치는 영향의 수준을
의미하는 것으로 단위 업무의 가중치를 기반으로 환산하여
우선순위에 따라 'H','M','L'로 분류할 수 있음
애플리케이션 성능
사용자가 애플리케이션에 요구한 기능을 최소한의 자원으로 최대한 많은 기능을 처리하는 정도를 의미
성능테스트 도구 : Jmeter, LoadUI, OpenSTA
★ 애플리케이션 성능 지표
처리량(Throughput)
: 일정 시간내에 애플리케이션이 처리하는 작업량
응답시간(response time)
: 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때 까지 걸린 시간
경과 시간(turn around time)
: 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때 까지 걸린시간
자원사용률 (resource usage)
: 애플리케이션이 의뢰한 작업을 처리하는 동안 CPU사용량, 메모리사용량,
네트워크 사용량과 같은 자원들의 이용률
애플리케이션의 성능 저하 원인
- DB에 필요이상 많은 데이터를 요청하는 경우
- DB의 락이 해제 되기를 기다리면서 애플리케이션이
대기하거나 타임아웃 된 경우
- 트랜잭션이 COMMIT되지 않고 커넥션이 풀에 반환되거나
잘못 작성된 코드로인해 불필요한 COMMIT이 발생하는 경우
- 인터넷 접속 불량으로 인해 서버소켓에 쓰기는 지속되나
클라이언트에서 정상적인 읽기가 수행되지 않는 경우
성능개선
소스코드 최적화
: 나쁜코드는 배제하고 클린코드로 작성(가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화)
소스코드 품질 분석 도구
정적 분석도구
: 작성한 코드를 실행하지 않고 코딩표준, 코딩스타일, 결함등을 확인
종류 : pmd, cppcheck, sonarqube, checkstyle 등
동적 분석도구
: 소스코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함등을 분석
종류 : avalanche, valgrind 등
문제 1
정답 : 개발자에 의해 결함이 수정되는 상태
문제 2
정답 : 처리량, 응답시간, 경과시간 , 자원사용률