Software Test Flashcards
소프트웨어 테스트 원리
⦿ SW 테스트의 정의 : SW 신뢰도 및 고객요구 만족도 향상을 위한 품질보증활동 ⦿ 7가지 원리 (결완초집 살정오) - 결함 존재만을 증명 - 완벽한 테스트 불가 - 개발 초기 테스트 시작 - 결함은 집중되어 존재 - 살충제 패러독스 - 정황 의존적 - 오류 부재의 궤변
소프트웨어 테스트 유형
- 정보획득 대상 : 화이트박스/블랙박스 테스트
- 실행여부 : 동적(화이트, 블랙), 정적(코드검사, 워크스루)
- 시각 : 검증, 확인
- 단계 : 단통시인설
- 목적 : 회안강성구
Verification
⦿ 활동대상 : 제품생산 활동(과정) ⦿ 목적 : 올바르게 생산하는가 ⦿ 활동기간 : 각 단계별 ⦿ 관점 : Internal (개발자) ⦿ 테스트 유형 : Inspection, Walkthrough
Validation
⦿ 활동대상 : 생산된 제품(결과) ⦿ 목적 : 제품이 올바른가 ⦿ 활동기간 : 시작 및 종료 단계 ⦿ 관점 : External (사용자) ⦿ 테스트 유형 : 단통시인설
단계별 테스트 유형
- 단위 테스트 : 개별 모듈 확인
- 통합 테스트 : 빅뱅, 상향식, 하향식, 샌드위치
- 시스템 테스트 : 기능, 비기능
- 인수 테스트 : 알파, 베타, 감마
- 설치 테스트 : 상호 연동 확인
단위 테스트
⦿ 정의 : 테스트 가능한 최소 단위 모듈을 기준으로 결함을 찾고, 기능을 검증하는 활동 ⦿ 분야 - 인터페이스 : 입출력 매개변수 - 자료구조 : 자료형태 - 실행경로 : 조건, 루프 - 오류처리 : 오류 메시지 ⦿ 절차 및 산출물 - 계획 : 단위 테스트 계획서 - 케이스 : Test Case/Oracle - 수행 : 뮤테이션, 탐색적 - 보고 : 결과/수정 보고서
통합 테스트
⦿ 정의 : 최종 SW구성 시, 컴포넌트 및 인터페이스와 상호작용의 결함과 기능을 검증하는 활동 ⦿ 유형 - 하향식 : Test Stub 이용 - 상향식 : Test Driver 이용 - 샌드위치 : 모듈 최소 단위 부터 - 빅뱅 : 전체 시스템 한번에
Test Driver
- Bottom Up
- 하위 모듈 구동
- Simulator
- 구현 어려움
- 초기 구조 파악 어려움
Test Stub
- Top-Down
- 하위 모듈 대체
- SetDebug
- 구현용이
- 테스트 비교적 어려움
시스템 테스트
⦿ 정의 : 사용자 요구사항 만족 여부를 기능 및 비기능 측면에서 테스트 ⦿ 목적 - 요구사항 부합 여부 확인 - 가용성과 안전성 보장 여부 확인 - 중/장기적 운영위한 사전검증 ⦿ 종류(회안강성구) - 회복 : 자가 회복 - 안전 : 불법 SW 방지 - 강도 : 과부하 - 성능 : 응답시간, 처리량, 속도 - 구조 : 내부 논리적 복잡도
인수 테스트
⦿ 정의 : 기능/비기능 요구사항을 사용자가 직접 테스트, 개발 완료 증명 ⦿ 목적 : 확신, 배포 가능성, 준수성(납기, 표준), 고객 피드백 ⦿ 절차 - 준비 : 계획, 환경구축 (테스트 케이스/시나리오) - 수행 : 테스트 수행, 오류 수정(테스트 수행 계획서) - 평가 : 테스트 결과 요약, 검토, 승인 (테스트 결과 보고서) - 시스템 모니터링 : 자원 사용량, 성능 보안 (시스템 테스트 보고서) ⦿ 주요 인수 기준 - 기능성, 성능 - 보안성, 안전성 - 인터페이스 품질 - 소프트웨어 품질
기능 테스팅
- ISO 9126 : 기능성
- 목적 : 원하는 기능
- 특징 : 기능 만족 필수
- 사례 : 로그인, 권한, 조회
- 종속성 : 개발자 실력
- 기법 : 단위 테스트, 통합 테스트
비기능 테스팅
- ISO 9126 : 신뢰성, 사용성, 효율성, 유지보수성, 이식성
- 목적 : 원하는 성능
- 특징 : 성능 만족 협의
- 사례 : 동접 100명 처리시 CPU 50%
- 종속성 : 솔루션, HW
- 기법 : 성능, 부하, 스트레스
확인 테스트 (Confirmation)
⦿ 정의 : 수정 활동이 성공적이었는지를 확인하기 위하여, 마지막으로 실행했을 때의 실패한 테스트 케이스를 다시 실 행하는 테스트. 재테스팅(Re-Testing)
⦿ 대상 : 결함이 발견된 후 수정된 소프트웨어
⦿ 목적 : 수정활동이 성공적이었는지를 확인하기 위함
⦿ 범위와 정도 : 실제 결함이 발견된 부분에 대해서만 테스팅, 수행 횟수는 리스크 분석 정보를 기반으로 결정
⦿ 적용 : 모든 테스트 레벨에서 수행가능
⦿ 방법 : 기존 실패한 테스트 케이스를 다시 실행
회귀 테스트 (Regression)
⦿ 정의 : 프로그램 수정으로 인해 숨어 있던 결함이 노출되지 않았는지, 또는 신규결함이 유입되지 않았는지 검증
⦿ 대상 : 변경된 소프트웨어 또는 관련이 있거나 전혀 관련이 없는 소프트웨어
⦿ 수행 : 소프트웨어 또는 실행환경이 변경되었을 때
⦿ 범위와 정도 : 이전에 정상동작했던 SW에서 결함을 발견하지 못해 야기될 수 있는 리스크에 바탕을 둠
⦿ 적용 : 모든 테스트 레벨에서 수행 가능
⦿ 방법 : 여러번 반복 수행되므로 자동화에 적합
⦿ 수행유형
- Retest All
- Selective Test
- Priority Test
리스크 기반 테스팅에서 Test 수준 적용 사례
- STA(Severe) : Re-Testing 3회 / Full Regression Test
- STTA(STrong) : Re-Testing 2회 / Full Regression Test
- ITA(Intensive) : Re-Testing 1회 / Partial Regression Test
- FTA(Fundamental) : Re-Testing 1회
- 장애로인한영향(왼쪽)
- 장애발생가능성(아래)
리뷰의 유형
- 비공식적 리뷰 : 페어 프로그래밍
- 기술적 리뷰 : 사전준비, 기술해결, 결함발견, 대안평가, 적합성 검토
- 워크쓰루 : 학습, 이해향상, 결함발견
- 인스팩션 : 훈련된 모더레이터, 사전준비, 결함발견, 개선활동수행
Inspection
(형주진계관회해)
- 형태 : 공식 (Formal)
- 주최자 : 프로젝트 팀
- 진행 : 진행자 (Moderator)
- 계획성 : 역할기반, 계획적
- 관심사 : 결함발견
- 회의록 : 기록자에 의한 공식 회의록 운영
- 해결책 : 논하지 않음
Walkthrough
- 형태 : 비공식 (Informal)
- 주최자 : 작성자 (코드, 문서)
- 진행 : 작성자 (Author)
- 계획성 : 비 계획적 미팅
- 관심사 : 결함발견 혹의 의견제안
- 회의록 : 작성자, 개발자의 메모성 기록
- 해결책 : 결함에 대해 의견 제안
성능 테스트
⦿ 개념 - 병목지점파악/튜닝 - 용량산정/시스템용량계획 ⦿ 종류 1) 목적분류 - 단위 : 업무단위 - 복합 : 동시 사용자 및 가중치 - 임계 : 최대 성능 2) 방법분류 - 루프백 : 병목지점 도출 - 스파이크 : 트랜젝션 동시 실행 - 확장성 : 확장 계수 보장 여부 - 가용성 : HA, FT ⦿ 구성요소 - 조직 : 의뢰자, 관리자, 실행자, 인프라, 개발자 - 대상 : SW, 서버, 인프라 - 도구 : 자동화 도구, 부하 솔루션 - 스크립트 : Shell, Batch - 지표 : 전체/동시 사용자, 부하, 응답시간, 처리량 ⦿ 절차 - 계획 : 목표성능, 테스트계획 수립 - 설계 : Workload 설계, TestCase 도출, Process 수립, Script 생성 - 실행 : 수행, 모니터링 - 보고 : 종합결과보고, 평가보고서 작성 ⦿ 성능지표 1) CPU - MIPS (Millions of Instructions Per Second) - MFLOPS (Millions of Floating-Point Operations Per Second) 2) Network - PPS (Packets Per Seconds) - BPS (Bits Per Seconds) 3) HW Vendor - TPMC (Transaction Per Minute Concurrent : 동접자 + 분당처리수) 4) Main Frame C/S - TPS (Transaction Per Seconds)
Little’s Law
⦿ 정의 : 공간 내에 머무는 객체 수는 객체의 공간 유입량과 객체가 머무는 시간에 비례 ⦿ 분석도 : TPS가 더 이상 증가하지 않고 완만하게 되는 시점이 그 시스템의 임계치 ⦿ Little's Law를 적용한 분석방법 - 운영서버의 임계치 분석 - 튜닝 포인트 분석 - 향후의 성능 위험 요소 분석 - 튜닝의 향상 효과 분석 ⦿ 성공적 테스트를 위한 고려사항 - 테스트 케이스 정의 - 테스트 계획 수립 - 테스트 조직 및 전문가 지원 - 제3자 테스트 수행
성능테스트 목표를 정하기 위한 Workload Metric
⦿ 정의 : 작업량(Workload)에 대한 정량적인 수치로써, 사용자 수에 따라 결정되는, 대상 시스템에 대한 성능 기준선(Baseline) ⦿ 평가 항목 및 지표 - 시간당 처리건수(TPH) - 분당 최다 처리건수(TPM) - 초당 최대 처리건수(TPS, 60초) - 업무별 업무 가중치(비율%) - 최대동시 사용자 수(명) - 호출간격(초)
TPS (Transaction Per Second)
⦿ 정의 : 사용자의 요청(Request)에 대한 초당 처리된 트랜잭션의 건 수
⦿ 상관관계
- TPS-사용자 : 비례관계
- TPS-응답시간 : 반비례관계
⦿ TPS 계산방법
- Concurrent User = TPS * (Response Time + Think Time)
- TPS = Concurrent User / Request interval
- Active User = TPS * (Response Time)
성능 테스트 구성 용어
- Named User(전체 사용자) = Concurrent User + 비접속자
- Concurrent User(동시 사용자) = Active User + Inactive User
- Response Time(응답 시간) = Round Trip Time + Queuing Time + Process Time
- Think Time(사용대기 시간)
- Request Interval = Response Time + Think Time