검증과 확인 프로세스
검증과 확인
- 검증
- 올바른 제품을 생성하고 있는가 -> 요구사항 명세서 기반 판단
- 확인
- 제품이 올바르게 생성되고 있는가
- 고객이 의도한 요구사항에 따라 구현되었는지(명시되지 않은 것도 포함)
- 검증과 확인 작업은 실제로 구분하기 어려운 경우가 존재
방법과 종류
- 정적인 방벙
- 소프트웨어 개발 중에 생성되는 모든 산출물들에 대해 적용 가능
- 검토 - 코드리뷰 등
- (인스펙션)
- (워크스루)
- 소프트웨어 개발 중에 생성되는 모든 산출물들에 대해 적용 가능
- 동적인 방법
- 소프트웨어 실행하여 결함을 찾아냄
- 대표적인 방법: 테스팅
Peer review란
동료 검토 절차
- 공지와 배포
- 준비
- 검토자는 에러 체크리스트로 산출물을 검토
- 검토
- 작성자, 진행자, 검토자들이 모여 산출물 검토
- 검토 보고서 작성
- 후속 조치
소프트웨어 테스팅
결함을 지칭하는 다양한 용어
- error : 결함의 원인
- defect, fault, bug : 실패 또는 문제의 원인
- failure, problem : 결함이 있는 부분이 실행될 때 발생하는 현상
테스트 케이스
목적
- 테스터가 테스팅을 체계적으로 할 수 있도록
- 개발자가 테스트 케이스 결과를 통해 디버깅을 함
테스팅 종류
- 블랙박스 테스팅
- 요구사항 명세서나 설계서로부터 테스트 케이스 추출
- 화이트박스 테스팅
- 내부구조(코드)를 기반으로 테스트 케이스 추출
블랙박스 테스팅
신택스 테스팅
- 입력을 적합과 부적합으로 분류한 뒤, 예상되는 결과를 검증하는 기법
동등 분할
- 입력이 범위가 정해져 있을 경우, 각 범위의 대표값(중간, 경계, 벗어나는 값 등)을 이용하여 테스팅
의사결정 테이블
- 입/출력이 true, false로 결정될 수 있는 경우 모든 경우의 수를 확인해 볼 수 있는 방법
화이트박스 테스팅
특징
- 테스트의 목적과 조건에 맞게 적절한 방법 선택
- 각 테스팅 방버베 따라 복잡도, 소요되는 시간(비용)이 다름
문장 커버리지
- 프로그램을 구성하는 문장들이 최소한 한번은 실행될 수 있는 입력 값을 테스트 케이스로 선정함
분기 커버리지
- 프로그램에 있는 분기를 최소한 한번은 실행하게 하는 테스팅 방법
- and or에서 모든 조건을 테스트 해볼 수 없음
조건 커버리지
- and(&&), or(||) 등의 조건을 가진 분기문에서 각 조건식이 참 한 번, 거짓 한 번을 갖도록 테스트 케이스를 만듬
범위: 문장<분기<조건
기본경로 테스팅
- 프로그램의 제어구조를 플로우 그래프로 표현
- 순환복잡도를 통해 독립적인 경로의 수를 찾아 테스트 케이스를 추출
테스트케이스 추출 단계
프로우 그래프를 그린다
순환복잡도 계산
독립적인 경로 정의
정의된 각 경로의 테스트케이스 작성
테스팅 단계
소프트웨어 개발 단계와 테스팅
단위 테스팅(Unit Testing)
- 각 모듈이 완성되었을 경우 개별적인 모듈 테스팅
- 해당 모듈의 개발자가 테스팅
- Stub: 테스팅 대상 모듈에서 호출하는 모듈
- Test Driver: 테스팅 대상 모듈을 호출하는 환경
통합 테스팅(Integrating Testing)
- 모듈을 통합한 단계에서 수행되는 테스팅
- 종류
- 빅뱅 기법
- 모듈을 한꺼번에 통합하여 테스팅
- but, 오류가 발생했을 때 어디에서 났는지 찾기 어려움
- Top-Down 기법
- 가장 상위 모듈부터 하위 모듈로 점진적으로 통합
- 하위 모듈에 대한 스텁이 필요
- Bottom-Up 기법
- 하위 모듈 부터 점진적으로 통합
- 상위 모듈에 대한 테스트 드라이버가 필요
- 빅뱅 기법
시스템 테스팅(System Testing)
- 고객에게 시스템을 전달하기 전, 시스템을 개발한 조직이 테스팅
- 테스팅 대상
- 요구사항 명세서를 기반으로 사용자의 기능 요구사항
- 보안, 성능, 신뢰성 등의 비기능 요구사항
인수 테스팅(Acceptance Testing)
- 시스템이 사용자에게 인수되기 전, 사용자에 의해 실시되는 테스팅
reference
- 상명대학교 한종대 교수님
'컴퓨터과학 > 소프트웨어공학' 카테고리의 다른 글
SOLID 원칙 (0) | 2021.06.13 |
---|---|
[소프트웨어공학] 형상 관리 - 형상 항목, 형상 식별자, 베이스라인 (0) | 2021.06.03 |
[소프트웨어공학] 설계 2 - 객체 지향, 클래스 다이어그램, 시퀀스 다이어그램 (0) | 2021.05.17 |
[소프트웨어공학] 설계 1 - 추상화, 모듈화, 정보은닉, 응집력, 결합도 (0) | 2021.05.11 |
[소프트웨어공학] 프로젝트 계획 및 통제 - WBS, PERT, Gantt, EVM (0) | 2021.04.13 |
댓글