테스트 목적
- 산출물 평가
- 장애 유발 / 결함 식별
- 커버리지 보장
- 리스크 완화
- 요구사항 베리피케이션(검증)
- 기대 충족 벨리데이션(확인)
테스트 프로세스
1. 동적 테스팅 > 결함 식별
2. 확인 테스팅 > 수정 후 테스트
3. 리그레이션 테스팅 > 다른 부분 잘작동하는지
테스팅 / 품질보증
(테스팅)
- 제품 지향적
(품질보증)
- 프로세스 구현 / 개선
- 예방 접근법
테스팅 원리
- 결함의 존재 확인 o / 결함이 없음을 증명 x
- 완벽한 테스팅은 불가능
- 조기 테스팅으로 시간/비용 절감
- 결함은 집중
- 테스트 효과는 줄어든다
- 테스팅은 정황에 의존적 > 정황에 따라 접근법이 여러가지
- 결함-부재는 궤변
테스트 활동
- 테스트 계획 > 접근법 선택
- 모니터링 > 진행상황 & 계획 비교 활동
- 제어 > 목적 달성을 위한 조치
- 테스트 분석 > 베이시스 기반 TC 식별, 테스트 컨디션 정의, 우선순위 정의
- 테스트 설계
> 테스트 컨디션을 TC와 기타 테스트웨어로 구체화
> 입력값 구체화
- 테스트 구현
> 테스트웨어(데이터) 제작 및 획득
> 수동/자동 스크립트, 테스트 절차 정리, 환경 구축 및 설정
- 테스트 실행 > 수동/자동 수행
- 테스트 완료 > 변경 요청서, 제품 백로그, 테스트웨어 식별/보관, 개선사항 파악, 보고서
테스트웨어
- 계획 산출물 > 계획, 일정, 리스크 관리 대장, 시작/완료 저간
- 모니터링/제어 산출물 > 진행 상황 보고서, 제어 지침 문서, 리스크 정보
- 분석 산출물 > (우선순위) 테스트 컨디션, 베이시스 결함 보고서
- 설계 산출물 > 케이스, 차터, 커버리지 항목, 데이터 요구사항, 환경 요구사항
- 구현 산출물 > 절차, 수동/자동 스크립트, 테스트 스위트, 데이터, 실행 일정, 환경 요소(스텁, 드라이버, 시뮬레이터, 서비스 가상화)
- 실행 산출물 > 테스트 로그, 결함 보고서
- 완료 산출물 > 완료 보고서, 개선 항목, 변경 요청서(제품 백로그)
베이시스 - 테스트웨어 간의 추적성
- (테스트케이스 - 요구사항) 비교하여 요구사항 커버리지 확인
- (테스트결과 - 요구사항) 목표대비 진행상황 측정 제공
- (테스트결과 - 리스크) 잔존 리스크 수준 평가
- 변경사항의 영향, 테스트 감사, IT 운영 및 관리 기준 충족
- 진행 상황, 완료 보고서 이해 도움
- 이해관계자에게 이해하기 쉬운 방식으로 전달 도움
테스팅 역할
- 관리자
> 프로세스, 활동에 대한 전반적인 책임
> 주업무 : 테스트 계획, 모니터링, 제어, 완료
> 관리역할의 일부를 "애자일팀"이 처리할 수 있음
> 개발팀 외부의 테스트관리자가 수행 가능
- 테스터
> 기술적인 측면의 전반적인 책임
> 주업무 : 분석, 설계, 구현, 실행
- 상황에 따른 역할 수행
> 관리자 : 팀리더, 테스트관리자, 개발관리자
> 테스터 : 관리와 테스터 동시에 수행 가능
테스팅에 보편적 필요 기술
- 테스팅 지식(기법)
- 철저함, 신중함, 호기심, 세부사항 주의력
- 의사소통 기술, 경청, 팀플레이
- 분석적 사고, 비판적 사고, 창의성
- 기술 지식(테스트 도구)
- 도메인 지식(사용자/비즈니스 대표자 와 의사소통 위해)
전체 팀 접근법
- 필요 지식/기술을 갖췄다면 "누구나", "어떤 작업"이든 수행 가능
- 모든 팀원이 품질에 대한 책임 공유
- 의사소통과 협업 강화, 시너지 창출
- 테스터 & 비즈니스 담당자 > 인수테스트 작성
- 테스터 & 개발자 > 테스트 전략 협의, 자동화 접근법 결정
- 보안이 치명적인 경우 > 높은 수준의 테스트 독립성 필요
테스트 독립성
- 작성자와 테스터의 이해도 차이 > 결함 식별 효과적
- 꼭 그런 것 만은 아님
소프트웨어 개발수명주기(SDLC) 테스팅
- 인수 테스트 주도 개발
- 행위 주도 개발
- 도메인 주도 설계
- 익스트림 프로그래밍
- 기능 주도 개발
- 칸반
- 린 IT
- 스크럼
- 테스트 주도 개발
SDLC & 테스팅 영향
- 테스트 범위/시기 (테스트 레벨, 유형)
- 문서 상세화 수준
- 기법, 접근법 선택
- 자동화 범위
- 역할과 책임
순차적 개발 모델
- 초기 : 요구사항 리뷰, 분석, 설계
- 후반 : 동적 테스팅
반복적, 점진적 개발 모델(애자일, 반복주기)
- 모든 레벨에서 "정적" 및 "동적" 테스팅 수행 가능
- 가벼운 작업 산출물, 테스트 자동화 선호
- 따라서 경험 기반 테스트로 진행하는 경향 있음
소프트웨어 개발 주도 테스팅 (개발 접근법)
- 코드 작성 전 테스트 정의
- 조기 테스팅 , 시프트 레프트 접근법
- 반복적 개발 모델 지원
- 테스트 주도 개발(TDD)
> 소프트웨어 설계 대신 TC를 통해 코딩 주도
> TC를 먼저 작성, 코드 작성, TC & CODE 리팩토링
- 인수 테스트 주도 개발(ATDD)
> 시스템 설계 중 인수 조건에서 TC 도출
> 애플리케이션 영역 개발 전 TC 작성
- 행위 주도 개발(BDD)
> 기대 동작을 이해관계자가 이해하기 쉽게(자연어) 작성
> Given/When/Then 형태 사용
> 자동 실행 가능한 테스트로 변환
데브옵스 & 테스팅
- 시프트 레프트 테스팅 접근법 장려
- 안정적인 테스트 환경 구축, CI/CD 자동화 배포 프로세스 장려
- 비기능(성능,효율,신뢰) 증가
- 수동 테스팅 필요성 적어짐
- 리그레이션 발생 리스크 적어짐
- 배포 자동화 어려움 (단점)
- 수동화 테스트 또한 여전히 필요함
시프트 레프트 접근법
- 개발수명주기 초기에 수행
테스트 레벨
- 컴포넌트 테스팅(단위) > 개발자 개발환경
- 컴포넌트 통합 테스팅(통합) > 상향, 하향, 빅뱅
> 컴포넌트 & 인터페이스 상호작용
- 시스템 테스팅 > end-to-end
> 기능 & 비기능 포함
> 실제 환경에서 완성된 시스템
> 독립된 테스트팀 or 내부 테스트팀
- 시스템 통합 테스팅 > 외부 서비스와 인터페이스 테스트 중점
> 실제 환경과 유사한 테스트 환경
- 인수 테스팅 > 밸리데이션, 비즈니스 요구사항 충족
> 실제 사용자가 수행
테스트 레벨 구분
- 테스트 대상
- 목적
- 베이시스
- 결함과 장애
- 접근법과 역할
테스트 유형
- 기능 테스팅 > 동작 확인
> 성숙도(완전성)
> 정확성
> 타당성(적합성)
- 비기능 테스팅 > 성능 확인
> 품질 특성 확인
> 보안 / 신뢰도 / 유용성
유지보수 테스팅
- 테스팅 범위
> 변경의 리스크 수준
> 기존 시스템 크기
> 변경사항의 크기
- 테스팅 계기
> 수정사항
> 운영환경 업그레이드 , 마이그레이션
> 시스템 단종, 복원 및 복구 절차 테스팅
정적 테스팅
- 베리피케이션, 밸리데이션 모두 가능
- 산출물 요구사항 정합성 확인
- 사용자 스토리 분석, 리뷰
- 사람이 해석하기 어려움/타사의 실행 코드 > 정적 테스팅 부적합
리뷰 유형
- 비공식 리뷰
> 문서 X , 이상 사항 식별
- 워크쓰루 > 저자가 리더***
> 산출물 신뢰 구축, 리뷰어 교육, 합의 도출, 아이디어 창출, 개선 동기 및 지원, 이상사항 발견
- 기술 리뷰 > 중재자가 리더***
> 합의 도출, 산출물 신뢰 구축 등
- 인스펙션 > 저자 리더 X, 서기 X***
> 가장 공식적인 리뷰
> 이상 사항 식별, 매트릭 수집, 개발수명주기 개선
테스트 기법
- 블랙박스 테스트 기법
> 내부 구조 참조 X
- 화이트박스 테스트 기법
> 내부 구조와 처리에 대한 분석 기반
> 설계 & 구현이 끝난 후에 사용
- 경험기반 테스트 기법
> 테스터 능력 기반
블랙박스 테스트 기법
- 동등 분할
- 경계값 분석
- 결정 테이블 테스팅
- 상태 전이 테스팅
화이트박스 테스트 기법
- 구문 테스팅
- 분기 테스팅
> 분기 100% = 구문 100% 가능
> 구문 100% != 분기 100%
오류 추정
- 앱의 과거 동작
- 개발자가 범하기 쉬운 유형
- 유사 앱에서 발생한 장애 유형
탐색적 테스팅
- 경험 기반
체크리스트 테스팅
- 너무 일반적, 시작 조건, 종료 조건, 자동점검 X
협업 기반 테스트 접근법
- 사용자 스토리 (중요 요소)
> 카드 : 스토리 설명 매체
> 대화 : 소프트웨어 사용 방법(문서 OR 구두)
> 확인 : 인수 조건
사용자 스토리 인수 조건 작성법
- 시나리오 기반 (GIVEN WHEN THEN)
- 규칙 기반 (확인 목록 , 표(입력-출력 매핑))
인수 테스트 주도 개발
- 테스트 우선 접근법
> 사용자 스토리 구현 전 제작
1. 인수 조건 분석(토론) 작성
2. TC 작성
테스트 계획서
- 목적 달성 방법, 일정 문서
- 이해관계자와 의사소통 수단
다음내용 포함
- 범위, 목적, 베이시스, 제약사항
- 리스크 목록, 접근법, 예산 및 일정
시작 조건
- 인력, 도구, 환경, 데이터, 예산, 시간
- 베이시스, 요구사항, 스토리, 케이스
- 초기 품질 수준
완료 조건
- 커버리지 수준, 미해결 결함 수, 결함 밀도, 실패 케이스
- 체크리스트 완료, 리그레이션 테스트 자동화
- 시간 및 예산 소진
추정 기법 (테스트 노력 추정)
- 비율 기반 추정
> 이전 프로젝트 수치 수집
- 외삽법
> 지난 세 번의 반복 주기에 들인 평균 노력으로 다음 반복 주기 추정
- 와이드밴드 델파이
> 전문가 경험 기반
> 합의 도달까지 반복
> 플래닝 포커(와이드델파이 변형) > 숫자가 적힌 카드
- 3점 추정
> 낙관적(a), 이상적(m), 비관적(b)
> E = (a + 4*m + b)/6
> SD = (b-a)/6
우선순위 지정
- 리스크 기반 > 리스크가 큰 케이스 부터
- 커버리지 기반 > 커버리지가 큰 케이스 부터
- 요구사항 기반 > 요구사항이 큰 케이스 부터 > 이해관계자가 우선순위 정의
테스트 피라미드 (세분화 수준)
- 낮은 층일 수록 규모가 작고, 독립적, 빠름, 많은 테스트 필요
테스팅 사분면
- 1사분면 > 단위,통합
- 2사분면 > 시스템, 기능, 사용자스토리
- 3사분면 > 인수, 사용성, 탐색적
- 4사분면 > 스모크, 비기능, 신뢰성
> 테스트 레벨에 따라 테스트 유형 이 다르다
> 모든 이해관계자에게 테스트 유형을 구분하고 설명하는 방법 제공
리스크 관리
- 프로젝트 리스크 ( 프로젝트 관리, 제어 )
> 조직, 인력, 기술적, 공급업체 문제
- 제품 리스크 ( 품질 특성 )
> 잘못된 기능, 계산, 런타임, 비효율, 응답시간, UX, 보안
제품 리스크 분석
- 테스팅 엄격함 수준 판단에 도움
제품 리스크 제어
- 완화, 수용, 전가, 대안 계획
테스트 모니터링
- 테스트 대상 정보 수집
- 진행상황 평가
- 리스크, 요구사항, 인수 기준 커버리지 완료조건 충족하는지 측정
테스트 제어
- 식별된 리스크 우선순위 재지정
- 작업 후 완료조건 충족 평가
- 테스트 일정 조정
- 신규 자원 추가
테스트 완료 매트릭(자료)
- 프로젝트 진행상황 > 완료율, 사용률, 테스트노력 투입률
- 테스트 진행상황 > TC구현 진행률, 환경준비, 실행/미실행
- 품질 매트릭 > 가용성, 응답시간, 평균 장애 시간
- 결함 매트릭 > 발견/수정 결함 수, 우선순위, 결함 밀도, 발견 비율
- 리스크 매트릭 > 잔여 리스크 수준
- 커버리지 매트릭 > 요구사항 커버리지, 코드 커버리지
- 비용 매트릭 > 테스팅 비용, 조직 품질 비용
테스트 보고서
- 진행상황 보고서 > 테스트 제어, (일정,자원,계획) 수정 시 충분한 정보 제공
- 테스트레벨, 주기, 반복 주기 요약 및 후속 테스팅을 위한 정보 제공
포함내용
- 기간, 진행상황(빠름,늦어짐), 방해요소와 대응방법, 매트릭(자료)
- 식별/수정 리스크 내용
- 다음 주기 예정 테스팅 내용
결함 보고서
- 책임자에게 문제 해결을 위한 충분한 정보 제공
- 결과물의 품질 추적 수단 제공
- 개발& 테스트 프로세스 개선 아이디어 제공
테스팅 지원 도구
- 테스트 관리 도구 > SDLC, 요구사항, 테스트 ,결함, 형상관리를 도움
- 정적 테스팅 도구 > 리뷰, 정적 분석 수행 지원
- 설계 및 구현 도구 > TC, 데이터, 절차 생성 도움
- 실행 및 커버리지 도구 > 자동 테스트 실행 & 커버리지 측정 도움
- 비기능 테스팅 도구 > 비기능 테스트 수행할 수 있도록 도움 (치트)
- 데브옵스 도구 > 통합 및 배포 등 지원
- 협업 도구 > 커뮤 지원
- 확장성 및 배포 표준화 지원 > 가상머신, 도커
- 테스팅 도움 기타 도구 > 시트 등
자동화의 효과 & 리스크
(장점)
- 단순 실수 방지
- 객관적 측정치 제공 (커버리지)
- 관리 & 보고를 지원하기 위한 (그래프, 데이터) 에 쉽게 접근
- 조기 식별, 빠른 피드백, 실행시간 단축
(단점)
- 자동화 등에 필요한 시간,비용,노력에 대한 부정확한 추정
- 수동 테스팅이 필요한 곳에 사용X
- 도구에 의존
- 도구 지원 중단, 종속성
- 호환문제
- 규제 요건, 안전 표준 미준수
반복 주기와 릴리스 계획에 테스터의 기여
- 스토리와 품질 & 리스크 분석에 참여
- 노력 추정, 접근법 결정, 테스팅 계획
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
품질보증(QA)
> 사전 예방
품질제어(QC)
> 테스팅
> 분기/구문 테스팅 포함
베이시스 - 테스트웨어 간의 추적성
- (테스트케이스 - 요구사항) 비교하여 요구사항 커버리지 확인
- (테스트결과 - 요구사항) 목표대비 진행상황 측정 제공
- (테스트결과 - 리스크) 잔존 리스크 수준 평가
테스트 레벨
- 컴포넌트 테스팅(단위) > 개발자 개발환경
- 컴포넌트 통합 테스팅(통합) > 상향, 하향, 빅뱅
> 컴포넌트 & 인터페이스 상호작용 (UI, DB)
- 시스템 테스팅 > end-to-end
> 기능 & 비기능 포함
> 실제 환경에서 완성된 시스템
> 독립된 테스트팀 or 내부 테스트팀
- 시스템 통합 테스팅 > 외부 서비스와 인터페이스 테스트 중점
> 실제 환경과 유사한 테스트 환경
- 인수 테스팅 > 밸리데이션, 비즈니스 요구사항 충족
> 실제 사용자가 수행
이해관계자의 빈번한/조기 피드백 영향
- 요구사항 오해 방지
- 조기에 이해 & 구현
- 개발팀이 제품 이해도 향상
- 이해관계자가 중요기능 & 리스크가 큰 기능에 집중 가능
테스트 분석
- 우선순위 설정
- 인수 기준 확인
- 베이시스에서 식별된 결함 보고서
테스트 설계
- 케이스, 차터, 커버리지 항목, 테스트 데이터 요구사항, 환경 요구사항
테스트 구현
- 스크립트, 스위트, 데이터, 일정, 스텁, 드라이버, 시뮬레이터, 가상화, 환경요소
테스트 완료
- 완료 보고서, 교훈, 개선 항목, 변경 요청서
기술리뷰
- 중재자가 진행
인스펙션
- 가장 공식적인 리뷰 유형
- 주목적 ( 이상현상 식별 )
- 지표 수집
워크쓰루
- 저자가 진행
외삽법 계산
( 3(n-1) + (n-2) )/ 4
3점추정 계산
( b + 4a + c ) 6
편차 = (c-a)/6
테스팅 사분면
- 1사분면 > 단위,통합
- 2사분면 > 시스템, 기능, 사용자스토리
- 3사분면 > 인수, 사용성, 탐색적
- 4사분면 > 스모크, 비기능, 신뢰성
> 테스트 레벨에 따라 테스트 유형이 다르다
> 모든 이해관계자에게 테스트 유형을 구분하고 설명하는 방법 제공
제품 리스크 분석
- 테스팅 엄격함 수준 판단에 도움
제품 리스크 제어
- 완화, 수용, 전가, 대안 계획
(리스크분석 , 리스크제어) 는 다른 용어
소프트웨어 개발 수명주기
- 기본적으로 초기테스팅이 기반
- 산출물의 초안이 아닌 초안 분석 후 베이시스가 작성되어야 테스트 가능
데브옵스
- 지속적으로 변화하는 테스트 환경 보다는 "테스트자동화" 에 더 초점을 둠
유지보수 테스팅
- 테스팅 계기 ( 수정, 운영환경 변경, 시스템 단종 )
> 수정사항
> 운영환경 업그레이드 , 마이그레이션
> 시스템 단종, 복원 및 복구 절차 테스팅
오류추정
- 테스터의 지식을 기반으로 예측
- 개발자의 사생활은 모름
탐색적 테스팅
- 탐테 중에는 모든 블랙박스 기법 사용 가능
- 설계,실행 동시에 함
협업 기반 테스트 접근법 = 협업 사용자 스토리 작성 방법
- 사용자 스토리 (중요 요소)
> 카드 : 스토리 설명 매체
> 대화 : 소프트웨어 사용 방법(문서 OR 구두)
> 확인 : 인수 조건
커버리지기반 우선순위 지정 기법
- 가장 많은 케이스를 포함하는 tc 부터 우선순위 높음
오류(error)
- 인간의 실수
- 결함의 원인
결함(defect)
- 오류로 부터 발생
- 잘못된 코딩
장애(failure)
- 결함의 실행을 의미
- 사용자에게 해당 결함이 발생
테스트 구현 (산출물)
- 테스트 실행 일정
시프트 레프트 접근법
- 코드 구현 or 컴포넌트 통합 전에 케이스 작성
예시)
- 이해관계자가 승인하기 전에 요구사항 검토
- 관련 코드 작성 전 연관 단위 테스트 작성
- 컴포넌트 테스팅 중에 컴포넌트 성능 테스트 실행
순차개발모델
- 초기에 할게 없음, 동적테스트 후반에 가능
결정테이블 및 분기테스팅의 차이점
결정테이블
- 비즈니스로직에서 케이스 도출
- 블랙박스 테스트
분기테스트
- 테스트 대상의 제어흐름에 대한 지식에서 도출
- 화이트박스 테스트
0~ 5}{6 ~ 12}{13
5 6 12 13
4 5 6 7 11 12 13 14
0 1 4 7 11 14