-
[QA - 실러버스] 1장 테스팅의 기초 (1)QA/실러버스(Syllabus) 2025. 3. 16. 16:19반응형
1.1 테스팅이란 무엇인가?
1.1.1 테스트 목적
- 요구사항, 사용자 스토리, 설계, 소스 코드 등 작업 산출물 평가
- 장애 유발 및 결함 식별
- 테스트 대상에 필요한 커버리지 보장
- 소프트웨어 품질 부족으로 인한 리스크 수준 완화
- 정의된 요구사항의 충족 여부를 확인하는 베리피케이션
- 테스트 대상의 계약, 법률, 규제 요구사항 준수 여부를 확인하는 베리피케이션
- 이해관계자가 정보에 입각한 결정을 내리는데 필요한 정보 제공
- 테스트 대상의 품질에 대한 자신감 획득
- 테스트 대상의 완성 여부와 이해관계자의 기대 충족 여부를 확인하는 밸리데이션
테스트의 목적은 정황에 따라 달라질 수 있음 (작업 산출물, 테스트 레벨, 리스크, 사용하는 소프트웨어 개발수명주기(SDLC), 그리고 기업 구조, 경쟁사 구도, 시장 출시 시기)
🤔 회사에서 보통 하는 검증은 '기획에 맞게 만들어졌는지' + '결함이 있는지를 찾아내는 것'에 더 가까운것 같음
💡용어 & 정리
커버리지 (coverage) : 테스트 해야하는 범위중에 내가 수행 할 테스트가 얼마만큼 이 범위를 커버할 수 있는지를 나타내는 척
벨리데이션 (validation) : 고객의 요구사항을 만족시키는 소프트웨어를 확인하는 다른 행동들의 집합이다. > 고객위주?
베리피케이션 (verification) : 명세된 기능이 올바르게 구현된 소프트웨어인지 확인하는 행동들의 집합이다. > 명세위주?
개발수명주기(SDLC) : 계획 > 설계 > 구현 > 테스트 > 배포 > 유지
애자일 / 나선형 차이점 : 나선형은 위험부담의 더 초점을 둠. 즉 불확실성이 높은 프로젝트에 사용, 애자일은 제공성 + 유연함의 초점을 둠. 즉 계속 변화할 법한 프로젝트에 사용
1.1.2 테스팅과 디버깅- 테스팅 : 동적테스팅
- 디버깅 : 정적테스팅 (장애재현 > 분석 > 원인해결)
테스트가 끝나면 확인테스팅 + 리그레션테스팅을 해야 함
💡용어 & 정리
동적테스팅 : 코드를 참조하지 않고 명세나 경험을 기반으로 하는 테스트 (동등분할, 경계값 분석등)
정적테스팅 : 코드를 포함하여 소프트웨어 개발 및 산출물을 검토
확인테스팅 : 결함이 발견되고 수정된 이후에 다시 재현되는지 확인하는 테스팅
리그레이션테스팅 : 결함을 수정함으로 인해 다른 기능에서 문제가 있는지 확인하는 테스팅1.2 테스팅이 왜 필요한가?
1.2.1 성공을 위한 테스팅의 기여도
- 개발생명주기() 단계별로 테스트 (요구사항 고려)
🤔 SDLC에 따라 테스트를 하려면 각 단계마다 역할이 있다고 생각
계획, 설계 단계에서는 요구사향에 맞게 되었는지 확인, 구현 이후로는 오류를 찾는 방식
1.2.2 테스팅과 품질 보증
- 품질모증은 QA, 테스팅(품질제어)은 QC
- 품질제어는 품질달성을 지원하는 활동에 초점을 맞춤 (정형기법, 시뮬레이션, 프로토타이핑 등이 속함)
- 품질보증은 프로세스의 구현과 개선에 초점을 맞춤
품질제어는 결함을 수정하는데 사용, 품질보증은 개발 및 테스트 프로세스가 잘 동작하는지 확인
1.2.3 오류, 결함, 장애, 근본 원인- 오류는 사람의 실수, 요구사항 명세서, 코드, 문서등 지원 산출물에서 나올 수 있음
- 주변 환경조건에서도 발생할 수 있음 (전자기장, 방사선 등)
1.3 테스팅의 원리
- 테스팅은 결함의 존재를 밝히는 활동이지, 결함이 없음을 증명하지 않는다
- 테스팅을 하면서 결함이 있을 확률을 줄이는 거지 전혀 발견되지 않을수는 없음
- 완벽한 테스팅은 불가능하다.
- 간단한 소프트웨어를 제외하고는 완벽한 테스팅은 불가능. 따라서 테스트 케이스 우선순위를 지정, 리스크 기반테스팅 등을 사용해서 테스트 노력을 집중해야 함
- 조기 테스팅으로 시간과 비용을 절약할 수 있다.
- 프로세스 초기에 발견한 결함은 후속 결함으로 이루어지지 않기 때문에 정적테스팅, 동적테스팅 모두 최대한 이른 시점에 시작해야 함
- 결함은 집중된다.
- 보통 결함은 소수의 시스템 컴포넌트에 집중돼서 발생 (파레토 원리)
- 테스트 효과는 줄어든다.
- 같은 테스트를 계속 반복하면 신규 결함 식별 효과는 떨어지게 됨. 그러나 리그레션 테스팅 같은 경우는 반복하는것이 유익한 결과로 이루어지는 경우도 있음
- 테스팅은 정황에 의존적이다.
- 모든 상황에 적용할 수 있는 테스팅 접근법은 없음
- 결함-부재는 궤변이다.
- 정의한 모든 요구사항을 철저히 테스트하고, 발견한 모든 결함을 수정해도 사용자의 요구, 기대에 못 미치거나 경쟁 시스템에 비해 부족한 시스템이 만들어 질수도 있음. 즉 베리피케이션과 함께 벨리데이션도 수행해야 함.
🤔 5번은 계속 반복핵서 검증을 하다보면 사람이 새로운 걸 생각하기가 쉽지 않음. 다양한 사람들이 같이 확인할 경우 새로운 결함을 발견할 확률이 높아진다고 생각.
7번의 단순히 오류를 찾아내는 것이 아닌 사람들이 사용할 때 불편하지 않을지에 대한 고민을 하면서 검증해야 함. (다만 도메인에 대한 이해도가 높아야지 생각하기 용이하다고 생각.)
💡용어
파레토 원리 : 상위 20%가 전체 생산의 80%를 해낸다는 법칙반응형'QA > 실러버스(Syllabus)' 카테고리의 다른 글
[QA - 실러버스] 1장 테스팅의 기초 (2) (0) 2025.03.16