1장
테스트의 목적
- 결함의 검출과 제품 품질 개선
- 품질 평가와 의사 결정 지원
- 개발 프로세스 개선 지원
장애 : 요구사항과 다르게 동작
결함 : 소프트웨어 내에 장애를 유발할 수 있는 문제
오류 : 이러한 결함이 생기게한 개발자의 행위
누락 : 요구명세서에 명시된 요구사항이 시스템의 구현에 반영되지않은 결함
부정확한 구현 : 요구명세서에 명시된 요구사항이 소프트웨어에 부정확하게 반영된 결함
비관련 결함 : 요구명세서와 관련되지 않은 구현
결함은 소스코드를 포함해서 최종적으로 소프트웨어 동작의 장애를 유발할 수 있는 모든 개발산출물에 존재할수있다
테스트 > 디버깅 > 결함위치 파악 > 결함 제거 > 재테스트
테스팅은 요구사항 명세서와 실제 동작의 차이를 확인하는것
디버깅은 테스트를 통하여 결함의 존재를 확인한 후에 수행되며 결함의 위치를 파악하고 이를 제거하는것을 목적으로함
주어진 인력과 시간을 바탕으로 최대한 효과적이고 효율적인 테스트를 수행할 수 있도록 체계적인 테스트가 수행되어야함
너무 많은 경우의 수가 있으므로 효과적이면서 효율적인 테스트가 진행되어야함
테스트의 원칙
1. 프로그래머나 팀과는 무관한 그룹이 수행
2. 결함이 발견되지 않으리라는 가정하에 테스트계획을 수립해서는 안됨
3. 타당하지않고 예상하지 못하는 경우에 대해서도 테스트를 수행해야함
4. 프로그램에 어떤 부분에 결함이 남아있을 확률은 그 부분에서 이미 발견된 결함의 수에 비례함
5. 테스트 케이스를 체계적으로 관리할것
- 프로그램 수정으로 인하여 기존의 기능이 영향을 받았는지 다시 테스트해야함
6. 각각의 테스트 결과를 철저하게 점검할것
품질 특성 분류
1. 기능 적합성
2. 성능효율성
3. 호환성
4. 사용성
5. 신뢰성
6. 보안성
7. 유지보수성
8. 이식성
기능테스트 : 기능요구사항에 중점을 둔 테스트
비기능 테스트 : 품질 요구사항에 초점을 둔 테스트
v&v : 검증과 확인
검증 : 소프트웨어 개발 과정에서 수행한 활동의 적합성 검사에 초점
확인 : 결과물의 적합성에 초점
테스트<v&v<품질보증
품질 보증 : 소프트웨어 제품의 품질 뿐만 아니라 프로세스의 품질을 포함한다는 측면에서 v&v보다 광범위함
컴포넌트 테스트->통합테스트->시스템테스트
이것 전체를 레벨테스트라고 칭함
정적테스트 : 대상을 실행하지 않고 테스트를 수행하는 방식
정적테스트의 장점
- 테스트 대상을 실행하지 않기 때문에 테스트 대상에 대한 실행환경을 필요로하지않는다는 장점이 있음
- 소스코드가 작성되기 이전의 개발단계에서 테스트를 수행할 수 있음
정적테스트의 종류
- 리뷰 : 각 개발단계별로 해당 단계의 산출물이 품질 목표에 부합하는지 점검하거나 산출물에 존재하는 결함을 검출하려는 목적
- 리뷰 종류 : 관리리뷰 기술리뷰 인스펙션(문제를 식별하고 문제에대한 올바른 해결을 검증함) 워크쓰루(인스펙션+대안조사, 개선활동 등 수행) 감사
- 정적분석 : 소스코드를 대상으로 결함으로 판단할 수 있는 특정한 패턴이 소스코드에 있는지 분석
- 정적분석 종류 : 코딩표준 복잡도측정 자료흐름분석
동적테스트 : 테스트대상(소프트웨어)을 실행하는 방식으로 테스트를 수행하여 결함을 검출
동적테스트의 장단점
- 장점 : 소스코드가 없어도 수행가능 but 환경이 요구됨
동적테스트의 종류
- 명세기반방법(블랙박스테스트) : 프로그램의 내부 논리 구조를 참고하지않고 사용자의 요구명세서나 설계 정보등을 이용하여 테스트 케이스를 개발
- 명세기반방법 종류 : 동등분할 분류트리기법 경곗값분석 신택스테스트 조합테스트 상태전이테스트 인과그래핑 결정표테스트 시나리오테스트
- 동등분할 : 입력과 출력을 유한개의 집합으로 나눈 후 대표값을 선택하여 테스트 케이스를 도출하는 명세 기반 기법
- 분류트리기법 : 소프트웨어 일부 또는 전체를 트리 구조로 분석 및 표현하고 이를 바탕으로 테스트 케이스를 도출하는 기법
- 경곗값분석 : 경계값 분석은 동등 분할의 확장 형태이다. 각 파티션이 순서화되어있고, 숫자 또는 연속 데이터로 구성된 경우에만 적용할 수 있다.
- 신택스테스트 : 해당 부분이 독립적으로 쓰일 수 있는지 확인하는 테스트이다
- 조합테스트 : 입력 값을 조합하여 테스트 케이스를 생성하고 이를 테스트하는 것
- 상태전이테스트 : 테스트 대상 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 테스트 케이스로 구성하는 테스트
- 결정표테스트 : 결정 테이블 테스트 입력 조건의 모든 조합에 대한 시스템의 액션을 고려하여 테스트 케이스를 도출
- 시나리오테스트 : 테스트 실행을 위한 일련의 활동을 구체적으로 기술해둔 문서
- 구조기반방법(화이트박스 테스트) : 제어 흐름이나 자료흐름 정보를 이용하여 테스트 케이스를 설계
- 구조기반방법 종류 : 문장테스트 결정테스트 조건테스트 결정조건테스트 다중조건테스트 변형조건결정테스트 기본경로테스트
- 문장테스트 : 모든실행가능한 문장을 최소한 한번은 행하도록 요구한다. 문장커버리지 = 테스트케이스집합에의해실행된문장의수 / 전체실행가능한프로그램문장의수 X 100
- 결정테스트 : 프로그램상에 나타난 모든 결정문의 결과가 참이되는 경우와 거짓이되는 경우를 최소한 한번은 실행하도록 요구한다. 결정커버리지 = 테스트케이스집합에의해실행된결정문의결과수 / 전체프로그램의결정문의결과수X100
- 조건테스트 : 프로그램의 조건에 나타난 모든 조건이 TRUE가 되는 경우와 FALSE가 되는 경우 모두를 발생하게 하는 입력데이터를 테스트 집합으로 사용. 조건커버리지 = 테스트케이스집합에의해실행된개별조건의결과수 / 전체프로그램개별조건의결과수 X100
- 결정조건테스트 : 결정테스트와 조건테스트를 모두 만족하는 테스트케이스 집합을 설계. 결정조건커버리지 = 테스트케이스집합에의해실행된결정문과개별조건의결과수/전체프로그램결정문과개별조건의결과수X100
- 다중조건테스트 : 프로그램 결정들에 사용된 모든 조건의 조합을 테스트할 수 있는 입력테스트들을 테스트 데이터 집합으로 선정. 다중조건커버리지 = 테스트케이스집합에의해실행된조건들의조합수 / 전체프로그램개별조건들의조합수 X100
- 변형된 조건/결정테스트 : 조건테스트와 결정테스트 요건을 모두 만족해야한다. MCDC커버리지 = 테스트케이스집합에의해MCDC를만족하는조건의개수 / 총조건의개수X100
- 기본경로테스트 : 구조적요소를 실행하는 테스트데이터를 요구.
- 경험기반테스트 : 설계를 바탕으로 테스트를 수행하지않고 도메인에 대한 테스터의 경험, 기존테스트 결과, 테스터의 직관을 주로 활용하여 테스트를 수행
- 경험기반테스트 종류 : 오류추정(개발자가 범할수있는 실수를 추정하고 결함이 검출되도록 TC 설계) 탐색적테스트(사전에 구체적으로 TC를 설계하여 기록하고 이를 바탕으로 테스트를 수행하는 방식, 테스터의 지식에 의존함)
2장
테스트레벨 / 테스트유형 / 테스트설계기법에 따라서 분류할수있음
테스트 레벨 : 단위테스트 / 통합테스트 / 시스템테스트 / 인수테스트
테스트 유형 : 기능적합성 성능효율성 호환성 사용성 신뢰성 보안성 유지보수성 이식성
테스트설계기법 : 정적테스트 동적테스트
성능효율성 테스트
고려해야할것 : CPU사이클, 디스크, 주기억공간과 같은 자원의사용, 주어진 시간 동안 처리할 수 있는 작업량 ,자원이 할당되기를 기다리는 태스크의 수
종류
- 부하 테스팅 : 부하를 계속 증가시키면서 시스템의 임계점을 찾는 테스트
- 스트레스 테스팅 : 시스템 처리능력이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트
- 스파이크 테스팅 : 짧은 시간에 사용자가 몰릴때 시스템의 반응을 측정함 (예:유명가수의 티켓팅)
- 내구성 테스팅 : 오랜시간동안 시스템에 높은 부하를 가하여 시스템의 반응을 파악하는 테스트
위험기반테스트 : 테스트가 필요한 피치들을 분류해서 위험도에 따라 분류 후 테스트
위험도에 따른 테스트 강도 : 고강도테스트 균형적테스트 부가적테스트 결함보고
소프트웨어 생명주기 모델과 테스트
- 순차적 생명주기 모델(폭포수모델,V모델) : 테스트 구현이 완료된 시점에서 1회만 수행됨
- 폭포수모델 : 소프트웨어 개발을 요구사항 분석에서 시작하여 전과정을 체계적이고 순차적으로 접근
- V모델 : 개발과 동시에 테스트 활동이 시작됨
- 진화형모델, 애자일 모델(애자일 개발 방법론, TDD) : 테스트도 반복적이고 점진적으로 수행됨
- 애자일 개발방법론
1. 사람 및 상호 의사 교환이 프로세스나 도구보다 우선한다.
2. 동작하는 소프트웨어가 포괄적인 문서보다 우선한다.
3. 고객과의 협력이 계약 협상보다 우선한다.
4. 변화에 반응하는것이 계획을 따르는 것보다 우선한다.
- TDD : 실제 프로그램의 코드를 나중에 작성하는 방식
- 이 방식을 사용하면 테스트 되지않는 코드가 없어 결함의 발생가능성을 상당히 줄일 수 있다.
테스트 자동화
테스트 관리 > 정적테스트 > 동적테스트 > 테스트실행및로깅 > 성능및모니터링
이슈관리도구 : 프로젝트를 진행하면서 발생하는 모든사항을 이슈로 처리
신규고객요구사항 기능개선 버그수정 문서작업 시스템설치작업
3장
테스트 메트릭 : 테스트현황을 정량적으로 파악하여 테스트의 진척도 및 시스템의 품질을 객관적으로 판단하기 위해 수집하는 측정항목을 말함
테스트 컨텍스트 명세 : 테스트 대상, 테스트 범위 등 테스트 수행의 배경이 되는 다양한 요소를 식별하고 명세함
테스트 결함보고 : 테스트 실행 활동에서 적절한 조치가 필요한 이슈를 발견하면 결함으로 보고한다
테스트실행로그->테스트결과분석->결함의기록->결함의보고서
테스트 효율성 = 테스트효과성/테스트비용
'QA > QA' 카테고리의 다른 글
압축(minify)된 CSS와 JS를 보기 좋게 해제해 주는 사이트 unminify (0) | 2025.03.31 |
---|---|
CSTS 로드맵 (0) | 2025.02.22 |
QA 로드맵 (0) | 2025.02.20 |