김선우의 머릿속
1. Software Testing and Analysis 본문
What is testing?
소프트웨어 테스팅은 소프트웨어의 품질을 평가하고, 운영 중 소프트웨어 장애의 발생 가능성을 줄이는 하나의 방법이다.
SW를 실행하고 결과를 확인하는 Test execution에 국한되지 않고, 테스트 계획, 분석, 설계, 구현, 실행, 결과보고, 품질 평가 등 많은 활동을 포함한다.
테스팅의 목적
- 결함 예방
- 요구사항 충족 검증(Verification)
- 클라이언트 요구사항 충족(Validation)
- 리스크 예방
- 개발 결과물에 대한 정보 제공
- 법적 기준, 표준 등 준수 여부 판단
Quality Assurance and Testing
품질 보증과 Testing은 다른 개념
둘다 품질 관리(Quality management)에 속한다.
품질 관리는 품질 측면에서 조직이 나아가야 하는 방향을 제시하고 제어하는 모든 활동이 포함된다.
품질 보증과 품질 제어를 포함한 여러 활동이 있는데 테스팅은 품질 제어의 다양한 활동 중 일부에 포함된다.
테스팅의 7가지 원리
- 테스팅은 결함이 존재함을 밝히는 활동, 결함이 없음을 증명할 수 없다.
- 완벽한 테스팅은 불가능하다.
- 조기 테스팅으로 시간, 비용을 절약할 수 있다. (shift left)
- 결함은 집중된다.
- 살충제 패러독스에 유의
살충제 패러독스 : 같은 테스트를 계속해서 반복 실행하다 보면, 결함을 더 이상 발견할 수 없게 된다.
새로운 결함을 발견하기 위해서 새로운 테스트를 작성할 필요가 있다. - 테스팅은 정황에 의존적이다 (Context dependent)
프로젝트의 종류에 따라 다른 방법으로 진행된다.
- 오류 부재의 궤변
결함을 많이 발견하고 수정했다고 해서 시스템의 성공이 보장되는 것은 아니다.
테스팅의 단계
- 테스트 계획
테스트 기법 명시, 일정 수립
- 테스트 모니터링과 제어
커버리지와 결과 확인, 테스트 결과 기반 시스템의 품질 평가
- 테스트 분석
- 요구사항 분석, 설계와 구현 정보, 구현 컴포넌트 및 시스템, 분석 보고서 등을 평가
- 결함 식별
- 테스트할 기능 식별
- 테스트 컨디션의 정의 및 우선순위 설정
- 테스트 요소와 컨디션 간의 양방향 추적성 포착
- 테스트 설계
- 테스트 구현
- 테스트 실행
- 테스트 완료
소프트웨어 검증이 어려운 이유
- 요구사항의 수준이 다르다.
- SW 구조가 계속해서 변경된다. (업데이트됨)
- 에러가 고르게 분포 되어 있지 않다.
- non-linearity : input의 변화에 대해 output의 변화가 linear하지 않다.
- Basic Questions
V&V를 시작하고 끝내는 시점?
Specification(요구사항)을 기반으로 테스트한다.
Test Execution은 개발 과정의 마지막에 이루어지지만, Testing은 프로젝트 시작과 동시에 시작.
ex) Feasibility Study -> 프로젝트 계획을 보고 프로젝트의 실현 가능성을 확인한다.
Maintenance 단계에서도 Testing은 계속된다. (새로운 테스트 케이스 생성, Regression Testing...)어떤 기술이 적용되어야 하는가?
프로젝트의 단계마다 적절한 테크닉을 사용
고려사항 : 효율성(Effectiveness), 적용가능성(Applicability), 차이점(Difference), 트레이드오프(Trade-off)제품이 출시될 준비가 되었는지 어떻게 평가할 것인가?
결함을 100% 찾아내서 없애는 것은 불가능
Measurement : 신뢰성(dependability) 만족 기준을 특정한다.
Assessment : Measurement에 맞는지 평가한다.업데이트 되는 release의 품질을 어떻게 보장할 것인가?
- 문서화를 한다.
- System Testing을 계속해서 수행한다.(Regression Testing)
어떻게 개발 과정을 향상시킬 것인가?
Process improvement 팀이 improve를 보장한다.
a. 수집할 데이터와 구현할 과정을 정의하고 수집한다.
b. 정의된 데이터를 분석한다.
c. weakness를 수정한다.
d. 품질과 개발 과정을 조정한다.
'Software V&V' 카테고리의 다른 글
6. Data Flow Model (0) | 2020.06.24 |
---|---|
5. Finite Model (0) | 2020.06.24 |
4. Test and Analysis Activities within a software process (0) | 2020.06.22 |
3. Basic principles (0) | 2020.06.22 |
2. A Framework for Testing and Analysis (0) | 2020.06.21 |