
소프트웨어 테스트원리
결완초집살정오
결함존재증명
완벽테스팅은 불가능
초기집중
결함집중
살충제패러독스 - 동일한테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
정황의존성 - SW의 성격에 맞게 테스트 실시
오류-부재의 궤변 - 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼수 없음
소프트웨어 테스트 산출물
테스트 계획서
테스트 베이시스 - 설계를 위한 기준이 되는 문서(요구사항명세서등)
테스트 케이스 - 요구사항을 준수하는지 확인 위한 설계된 입력값
테스트 슈트 - 실행환경에 따라 구분해 놓은 테스트 케이스 집합
테스트 시나리오 - 테스트가 필요한 상황을 작성한 문서
테스트 스크립트 - 실행순서 절차를 작성한 문서
테스트 결과서 - 결과정리한 문서
화이트박스 테스트
각 응용프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
화이트박스 테스트 유형
구결조조변다기제데루
구문커버리지(Statement) - 모든 명령문을 적어도 한번 수행하는 커버리지
결정(선택,분기)커버리지(Decision,Branch) - 결정 포인트 내의 전체조건식이 적어도 한번은 참과 거짓의 결과를 수행
조건커버리지 - 결정포인트 내의 각 개별 조건식이 적어도 한번은 참과 거짓의 결과 수행
조건/결정커버리지 - 전체 조건식 뿐만 아니라 개별 조건식도 참 한번 거짓 한번 결과가 되도록 수행
변경조건/결정커버리지 - 다른개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 향상시킨 커버리지
다중조건커버리지 - 모든 가능한 조합을 100%보장
기본경로커버리지 - 수행가능한 모든 경로테스트
제어흐름테스트 - 제어구조를 그래프 형태로 나타내어 내부로직 테스트
데이터흐름테스트 - 제어흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트
루프테스트 - 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트
블랙박스테스트
외부사용자의 요구사항 명세를 보면서 수행하는 테스트
블랙박스 테스트 유형
동경결상유분페원비오
동등분할테스트 - 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
경곗값분석 - 등가분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트 하는 기법
결정테이블테스트 - 요구사항 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트 하는기법
상태전이테스트 - 테스트대상 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른상태로 전이되는 경우의수를 수행
유스케이스 - 시스템이 실제 사용되는 유스케이스로 모델링 되어있을때 프로세스 흐름을 기반으로 테스트 케이스를 명세화
분류트리테스트 - SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트 하는 기법
페어와이즈테스트 - 테스트 데이터 값들 간에 최소한 한번씩을 조합하는 방식
원인-결과 그래프테스트 - 그래프를 화용해 데이터간의 관계및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정
비교테스트 - 같은 입력값을 넣어서 동일한 결과가 나오는지 테스트
오류추정테스트 - 개발자가 범할수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트 하는 기법
테스트목적에 따른분류
회안성구회병
회복테스트 - 시스템의 고의로 실패유도 -> 정상복귀여부 테스트
안전테스트 - 불법적 SW 접근하여 시스템 파괴하지 못하도록 소스코드내 보안적인 결함을 미리 점검
성능테스트 - 응답시간 특정시간 내에 처리하는 업무량 사용자 요구에 시스템이 반응하는 속도등을 측정하는 테스트
구조테스트 - 시스템의 내부 논리 경로, 소스코드의 복잡도를 평가하는 테스트 기법
회귀테스트 - 회귀테스트는 오류를 제거하거나 수정한 시스템에서 오류제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
병행테스트 - 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법
테스트종류에 따른분류
명구경
명세기반테스트(블랙박스) - 요구사항명세서 기반
구조기반테스트(화이트박스) - 소프트웨어 내부 논리흐름에 따라 테스트케이스 작성확인
경험기반테스트(블랙박스) - 유사 소프트웨어 유사기술평가 경험을 토대로 한 직관과 기술 능력 기반 테스트
테스트 커버리지 유형
기라코
기능기반커버리지
라인커버리지
코드커버리지
결정커버리지
(각분기의)결정포인트 내의 전체 조건식이 적어도 한번은 참 거짓의 결과를 수행하는 테스트 커버리지
조건커버리지
(각분기의) 결정포인트 내의 개별조건식이 적어도 한번은 참 거짓의 결과가 되도록 되도록 수행하는 테스트 커버리지
테스트오라클
결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
테스트 오라클종류
참 오라클 - 모든입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
샘플링 오라클 - 특정한 몇개의 입력값에 대해서만 기대하는 결과를 제공하는 오라클
휴리스틱 오라클 - 샘플링오라클을 개선한 오라클 특정입력값에 대해 올바른 결과를 제공, 나머지 값에 대해 추정하는 오라클
일관성 검사 오라클 - 변경 수행전과 후 결괏값이 동일한지 확인하는 오라클
테스트 레벨 종류
단통시인
단위테스트 - 사용자 요구사항에 대한 단위모듈, 서브루틴등을 테스트 하는 단계
통합테스트 - 단위테스트를 통과한 모듈 사이의 인터페이스 통합된 컴포넌트 간의 상호작용을 검증하는 테스트
시스템테스트 - 통합된 단위 시스템의 기능이 시스템에 정상적으로 수행되는지를 검증하는 테스트 단계
인수테스트 - 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
- 알파테스트 - 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수테스트
- 베타테스트 - 실제환경에서 일정수의 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트
테스트 하네스 구성요소
드스슈케시스목
테스트드라이버
테스트스텁
테스트슈트
테스트케이스
테스트시나리오
테스트스크립트
테스트 목 오브젝트
결함관리 프로세스
계기검수재추최
결함관리계획
결함기록
결함검토
결함수정
결함재확인
결함추적 및 모니터링
최종 결함 분석 및 보고서 작성
결함 심각도별 분류
치명적결함 - 데이터 손실 시스템 충돌
주요결함 - 기능장애
보통결함 - 사소한 기능 오작동
경미한결함 - 표준 위반, UI잘림
단순결함 - 미관상좋지않음
애플리케이션 성능지표
처응경자
처리량 - 주어진시간에 처리할수 있는 트랜잭션의 수
응답시간 - 사용자 입력이 끝난후 응답출력이 개시 될때까지의 시간
경과시간 - 트랜잭션 처리후 그 결과의 출력이 완료될때까지 걸리는 시간
자원사용률 - CPU 사용량, 메모리 사용량, 네트워크사용량
배드코드
외계인코드 - 아주오래되거나 참고문서 또는 개발자가 없이 유지보수 작업이 아주 어려운 코드
스파게티코드 - 스파게티 코드는 컴퓨터 프로그램의 소스코드가 복잡하게 얽힌 모습, 정상작동하지만 코드파악 어려움
알수없는 변수명 - 이름 정의를 알수없는 코드
로직중복 - 동일한 처리 로직이 중복작성된 코드
클린코드
가단의중추
가독성
단순성
의존성최소
중복성제거
추상화
리팩토링
유지보수 생산성 향상을 목적으로 기능을 변경하지 않고 복잡한 소스코드를 수정 보완하여 가용성 및 가독성을 높이는 기법
유지보수향상,유연한 시스템,생산성향상,품질향상