-
소프트웨어 테스팅Topcit/소프트웨어 개발 2018. 6. 11. 15:15
- 테스팅 개념 및 프로세스
- 테스팅 개념
- 어플리케이션과 시스템의 동작, 성능, 안정성이 사용자가 요구하는 수준을 만족하는지 확인, 검증하기 위해 결함을 발견하는 방법
- 테스팅의 일반적인 원리
- 결함의 존재성을 밝히는 활동 : 테스팅 활동은 결함이 존재함을 밝히는 활동
- 완벽한 테스팅은 불가능 : 매우 간단한 프로그램이라도 모든 경우에 대해 테스트를 하는 것은 불가능
- 테스팅은 개발 초기에 시작 : 개발 기간을 단축하고 결함 예방이 가능하다.
- 살충제 패러독스 : 동일한 테스트가 반복적으로 수행된다면 해당 테스트로는 더이상 새로운 버그를 찾아낼 수 없음
- 테스팅은 정황에 의존적 : 각 분야마다 접근하는 방법, 우선 순위, 심각도 등이 달라짐
- 오류-부재의 궤변 : 개발된 시스템이 쓸모가 없다면 결함을 찾고 수정하는 과정은 아무 의미가 없다.
- 테스팅 프로세스
- 테스트 분석과 설계
- 테스트 베이시스 검토
- 테스트 상황, 요구사항, 데이터 식별
- 테스트 기법 할당
- 테스트 용이성 평가
- 테스트 환경 구축
- 테스트 구현과 실행
- 테스트 케이스 명세화
- 우선순위 선정
- 데이터 생성
- 프로시저 작성
- 선행 테스팅
- 테스팅 실행 및 결과 기록
- 기대 결과와 비교
- 완료 조건의 평가와 리포팅
- 완료 조건의 달성 여부 확인
- 최초 테스트 보고서 작성
- 테스트 마감 활동
- 산출물 확인, 테스트웨어 보관
- 테스트 프로세스 평가
- 테스트 계획과 통제
- 테스트 목적, 목표 설정, 대상 연구
- 테스트 전략 개발, 리스크 분석
- 전략 수립, 테스트 완료 조건 설정
- 테스트 추정 및 조직 구성
- 테스트 계획, 테스트 관리 제어
- 리포팅, 리포팅 계획 설계
- 진행 리포팅
- 테스트 케이스 설계 방법
- 명세 기반 방법
- 동등 분할
- 동등하게 분할된 영역에서 대표 값으로 수행하도록 테스트 케이스를 설계하는 기법
- 경계값 분석
- 경계 값까지 포함하여 테스트 케이스를 설계하는 기법
- 동등 분할의 경계 부분에 해당하는 입력 값에서 결함이 발견될 확률이 높다.
- 페어와이즈 조합 테스팅
- 테스트에 필요한 각 값들이 다른 값들과 한 번씩은 조합을 이루게 테이블을 만들고, 테스트를 수행하는 기법
- 결정테이블 테스팅
- 테스트 케이스가 결정 테이블에 표시된 입력 값과 원인의 조합을 테스트 하도록 설계하는 기법
- 상태전이 테스팅
- 상태 전이도를 기반으로 이벤트, 액션, 활동, 상태, 상태전이 사이의 관계를 설계하는 기법
- 유스케이스 테스팅
- 유스케이스에서 테스트 케이스를 도출하는 기법
- 구조 기반 방법
- 제어흐름 테스팅
- 컴포넌트나 시스템을 통해 실행될 때 모든 이벤트 흐름 구조를 테스트 할 수 있게 설계하는 기법
- 커버리지 테스팅
- 시스템 또는 소프트웨어의 구조가 커버리지를 달성하기 위해 테스트 케이스를 설계하는 기법
- 최소비교 테스팅
- 변형 조건, 결정 개념을 사용하여 입력 값의 조합을 테스트하도록 테스트 케이스를 도출하는 테스트 설계 기법
- 경험 기반 방법
- 탐색적 테스팅
- 테스트를 수행하는 동안 얻은 정보를 활용하는 테스트를 설계하는 기법
- 분류 트리 기법
- 분류 트리로 표현된 테스트 케이스를 입력, 출력 도메인의 대표 값을 조합하여 수행하도록 설계하는 기법
- 테스팅 유형 및 기법
- 테스팅 유형
- 인수 테스트
- 요구 사항과의 일치성을 확인
- 시스템 테스트
- 실제 환경과 유사한 환경에서 전체적 기능, 비기능적 테스트 확인
- 통합 테스트
- 단위 모듈간의 인터페이스에서 결함 발견
- 단위 테스트
- 단위 모듈 내의 결함 발견
- 테스팅 기법
- 화이트박스 테스팅
- 구조적, 코드기반 테스트
- 단위 테스팅에서 주로 사용됨
- 정적분석 : 소스코드 내부 구조를 분석하여 미리 정의된 오류를 찾아낸다.
- 동적분석 : 프로그램의 실행을 통하여 실제 상황에서 발생 가능한 오류를 찾아낸다.
- 기법
- 구조적 기법 : 프로그램의 논리적인 복잡도를 측정하여 평가
- 루프 테스트 : 프로그램의 루프 구조에 제한하여 실시하는 방법
- 블랙박스 테스팅
- 기능, 명세기반 테스트
- 시스템 테스팅에서 사용되고 기능, 비기능 요구사항을 모두 검증
- 요구사항 명세서대로 소프트웨어가 작동하는지에 초점이 맞추어진 테스팅
- 시스템, 소프트웨어의 내부 구조를 참조하지 않고 요구사항 명세, 인터페이스 기반으로 테스팅 수행
- 기법
- 동등 분할 기법
- 다양한 입력 조건의 테스트 사례들을 선정하여 테스트
- 경계값 분석 기법
- 경계값을 기준으로 결과의 정확성을 테스트
- 원인, 결과 그래프 기법
- 입력값이 출력값에 미치는 영향을 그래프로 표현하여 오류 검출
- 오류 예측 기법
- 간과할 수 없는 오류들을 감각과 경험으로 검출하는 기법
- 소프트웨어 빌드와 배포
- 소프트웨어 빌드
- 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정
- 일일 빌드, 동작 테스트
- 소프트웨어 제품을 매일 전체적으로 다시 컴파일하고, 기본 동작을 검증하기 위해 필요한 일련의 테스트를 거치는 공정
- 소프트웨어 통합 실패, 낮은 품질, 프로젝트 가시성과 같은 리스크를 줄이고 시간을 절약하여 프로젝트 효율, 고객 만족도를 높인다.
- 소프트웨어 배포
- 사용할 소프트웨어 시스템을 만드는 모든 행위
- 소프트웨어 배포 종류 및 활동
- 릴리스
- 설치 및 활성화
- 비활성화
- 적응
- 업데이트
- 빌트인
- 버전 추적
- 삭제
- 은퇴
'Topcit > 소프트웨어 개발' 카테고리의 다른 글
소프트웨어의 요구사항 관리 (0) 2018.06.11 소프트웨어 유지보수, 역공학, 재공학 (0) 2018.06.11 프로그래밍 언어, 코드 재사용, 리팩토링 (0) 2018.06.11 사용자 인터페이스 설계 원리 (0) 2018.06.11 객체지향 설계 과정 (0) 2018.06.11
댓글