영남이공대학교 자율 공부 모임에 공유할 목적으로 작성하는 포스트입니다.
학습 내용에 대한 구체적인 사항은 별도 포스트에서 다룰 예정입니다.
개인적으로 학습하며 기록하고 있기 때문에 잘못된 내용이 있을 수 있습니다. 잘못된 내용이 있다면 댓글로 알려주세요.
개요
- 날짜: 2021년 04월 02일 금요일
- 내용
- 교과목 QA실습 강의 수강 후 관련 내용을 정리하며 학습했습니다.
- 백준 온라인저지 81문제 풀이 진행했습니다.
QA실습
테스트 설계 및 구현 프로세스
테스트 설계 관련 용어
요구사항(Requirement)
- 고객이 시스템이나 SW에 요구하는 기능적, 비기능적 요소
- 기능적: 프로그램의 기능 / 비기능적: 퍼포먼스(성능)
테스트 시나리오(Test Scenario)
- 시스템이나 SW에 존재하는 기능을 테스트 하기 위해 수행해야 되는 절차나 정보
테스트 케이스(Test Case)
- 테스트를 위해 작성된 입력과 예상 결과
테스트 절차서(Test Procedure)
- 테스트를 수행하기 위해 요구되는 절차를 기술한 문서
- 절차서에 시나리오가 포함될 수 있다.
테스트 케이스 구성 요소
테스트에 사용되는 테스트 케이스는 입력과 예상 결과로 이루어져 있지만 사용 목적이나 사용되는 곳에 따라 추가적인 정보가 추가됨

요구사항과 구현에 따른 테스트 전략

- (1)요구사항에 명시되어 있으나 구현되지 않은 경우
- 요구사항을 기반으로 테스트 케이스를 작성해 실행해야 한다.
- (2)요구사항대로 구현되었으나 때에 따라 정상동작 하지 않는 경우
- 요구사항을 기반으로 테스트 케이스를 작성해 실행하고 추가적인 테스트 케이스를 수행한다(네거티브 테스트 포함)
- (3)요구사항에 명시되어 있지 않지만 구현된 경우
- 요구사항 기반의 테스트로 해당 결함을 발견하기 어려우므로 비공식적인 테스트를 추가적으로 실행 하여야 함
- 결함을 발견하기 위해서는 실제 구현된 부분을 반영하여 요구사항을 변경해야 함
- (4)요구사항에 명시되어 있지 않지만 구현되었으며, 정상동작 하지 않는 경우
테스트 설계 기법의 종류
테스트 설계 기법
테스트의 설계 기법은 블랙박스 테스트와 화이트 박스 테스트로 나누어짐
블랙박스 테스트

- 소프트웨어 내부(소스코드)를 생각하지 않고 테스트를 진행
- 주로 소프트웨어 스펙(Specification)을 참고하여 테스트를 수행함
화이트박스 테스트

- 소스코드를 보고 테스트를 진행
- 소스코드를 기반으로 테스트를 진행하므로 개발 관련 지식이 요구됨
테스트 설계 기법
- 명세 기반 기법
- 명세를 기반으로 테스틀 설계, 주로 개발 문서를 참고하여 수행함
- 구조 기반 기법
- 코드와 개발 설계 등의 소프트웨어 구현 정보를 기반으로 수행함
- 경험 기반 기법
- 테스터, 개발자 등의 경험에 기반으로 수행함
- 소프트웨어 실행(Dynamic Test)
- 소프트웨어를 실행하면서 테스트를 수행
- 소프트웨어 비 실행(Static Test)
- 소프트웨어를 실행하지 않고 테스트를 수행, 주로 문서나 프로세스 관점에서 수행
명세 기반 기법
주어진 명세를 바탕으로 테스트 케이스를 도출하는 기법. 요구사항 분석서, 설계서 등 구현하고자 하는 소프트웨어를 최대한 이해하기 쉽게 체계적으로 표현한 것.
최근에는 UML(Unified Modeling Language)을 많이 사용하고 있음
UML(Unified Modeling Language)
소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어

동등 분할(Equivalence partitioning)

소프트웨어나 시스템이 특정 범위의 입력에 의해 결과가 동일하다면 이러한 입력의 범위를 하나의 그룹으로 구분할 수 있음
- 구조 기반 기법과 경험 기반 기법에서 입/출력 데이터가 필요한 경우에도 사용가능
- 동등 분할은 모든 테스트 유형에서 적용 가능함
교재 p.98 실습 예제 1 / 실습 예제 2
경계값 분석(Boundary value analysis)

경계값 분석은 동등 분할의 경계에서 결함이 발견될 확률이 높기 때문에 결함을 예방하기 위해 경계값까지 테스트하는 기법
- 동등 분할과 마찬가지로 모든 테스트 레벨, 모든 테스트 유형에 적용 가능함
- 결함 발견율이 높고 적용하기 쉽다는 장점이 있음
교재 p.101 실습 예제 3

결정 테이블 테스팅(Decision table testing)
결정 테이블은 논리적인 조건이나 상황을 구현하는 시스템에서 요구 사항을 도출하거나 내부 시스템 설계를 문서화하는 매우 유용한 도구
- 논리적으로 의존적인 가능한 모든 조건들의 조합을 생성
- 복잡한 시스템은 표현하기 어렵고 작성 시 논리적 실수의 가능성이 있음
교재 p.102~103 적용 사례1 / 표 4.5
시나리오 테스팅(Scenario testing)

시나리오를 기반으로 수행하는 테스팅
- 실제 시나리오를 기반으로 수행하는 테스팅
- 인수 테스트 설계 시 유용함
유즈케이스 테스팅(Use case testing)
유즈케이스나 비즈니스 시나리오를 기반으로 테스트를 명세화할 수 있음
- 유즈케이스를 기반으로 생성된 T.C는 실제 프로세스 흐름에서 결함을 발견하는데 유용함
컴포넌트 레벨 유즈케이스 테스팅: 교재 p.123 적용 사례1 / 표 4.18
시스템 레벨 유즈케이스 테스팅: 교재 p.125~126 적용 사례2 / 표 4.19