-
내가 공부하기 위한 공간 - [소프트웨어공학] 11 - 테스트소프트웨어공학 2025. 6. 7. 11:52반응형
[테스트]
정의 : 시스템 동작이 예상대로 확인하는 것
- 잘 되는지 확인보다 오류를 찾아내는 것
- 블랙박스, 화이트박스
<버그>
오류 : 개발자의 실수
고장 : 시스템이 정상 작동을 못함
결함 : 오류의 결과
- 고장 없어도 결함은 있을 수 있음 > 유저에게 영향없는 결함이 있을 수 있음
- 고장이 있다고 반드시 결함으로 발견되지 않을 수 있음
<원리>
- 오류 발견이 목적
- 완벽한 테스트 불가(모든 상황, 값들에 대해 테스트는 불가하기 때문)
- 개발에 독립적인 사람일수록 객관적으로 볼 수 있음
<과정>
- 테스트 대상 결정
- 방법 결정
- 테스트케이스(테스트 자료, 실행조건) 개발
- 예상 결과 작성
- 테스트오라클(판단 기준)로 판단
- 테스트케이스 기반으로 실행
- 테스트하니스(일부만 테스트하기 위한 변경)는 전체 테스트 후 제거
<단계>
단위 : 각 모듈 테스트
통합 : 모듈을 모아서 테스트
시스템 : 완성품 테스트
인수 : 유저대상 테스트(문서점검도 동시에)
리그레션 : 유지보수에서의 테스트
[블랙박스]
정의 : 내부를 보지않고 테스트
- 장점 : 기술정보 필요없음, 테스터와 개발자가 독립적으로 작업, 크고 복잡할수록 효율적, 초기단계에서 식별 가능
- 단점 : 가능한 조건을 못볼 수 있음, 크고 복잡할수록 완전한 테스트 불가
<동등분할기법>
정의 : 동작이 같을것으로 예상되는 것들로 묶어서 테스트
<경계값분석>
정의 : 입력값의 경계(동작이 변경되는 값)에 중점을 두는 테스트
<조합>
정의 : 입력값들을 조합하여 최소한으로 테스트
- 페퍼와이즈 : 입력값 쌍으로 테스트
- n원 : n개 간 모든 조합 테스트
- 직교배열 : 통계적 방법을 사용하여 테스트
<원인결과>
정의 : 입력값들을 조합하여 체계적으로 테스트
- 원인과 결과를 파악
- 결정테이블로 테스트케이스 생성
[화이트박스]
정의 : 내부를 보면서 테스트
- 코드로 구조이해(논리흐름) > 검증 기준 결정 > 각 기준마다 수행, 결과비교
<논리흐름>
정의 : 논리에 영향을 주는 요소들(선형, 조건, 반복)의 흐름
<검증기준>
정의 : 테스트 실행이 어떤 기준들을 커버하는지 결정
- 문장 커버리지 : 코드라인들이 한번은 실행되는지 확인
- 분기 커버리지 : 분기들이 한번은 실행되는지 확인
- 경로 커버리지 : 모든 실행 경로를 테스트
> 싸이클로매틱 복잡도 : 복잡도를 수치로 표현
- E - N + 2
- 폐쇄영역수 + 1
- 단일조건수 + 1
- 루프테스트
- 단순
- 중첩 : 내부부터 외부
- 연속 : 독립적이면 단순, 영향을 주면 중첩
- 비구조적 : 구조적으로 바꿈
[상태기반]
정의 : 상태가 있는 프로그램을 위한 테스트
<상태머신>
상태 : 과거에 대한 영향 표시
트랜지션 : 이벤트로 인한 상태변화
이벤트 : 입력
액션 : 출력
<테스트케이스>
모든 트랜지션 : 상태 그래프의 모든 트랜지션 점검
모든 트랜지션 쌍 : 모든 이웃 트랜지션(유입, 방출)쌍을 점검
트랜지션 트리 : 모든 단순 경로를 만족시키는 기준
[통합테스트]
드라이버(호출하는) : 시험 대상 모듈을 불러오는 간이 소프트웨어
스텁(호출되는) : 시험 대상 모듈에서 불러오는 모듈의 간이 소프트웨어
빅뱅 : 한번에 테스트
하향식 : 최상위 모듈(명령어 처리 모듈)부터 내려가면서 테스트
상향식 : 최하위 모듈부터 올라가면서 테스트
연쇄식 : 특수, 중요 기능을 먼저 구현
[시스템테스트]
기능 테스트 (Functionality Test)
목적: 소프트웨어가 요구된 기능을 제대로 수행하는지 확인
예시: 버튼을 누르면 로그인 기능이 제대로 작동하는지 확인
성능 테스트 (Performance Test)
목적: 시스템의 속도, 응답시간, 처리량 등을 평가
예시: 1000명이 동시에 접속할 때 서버가 버티는지 테스트
보안 테스트 (Security Test)
목적: 시스템이 외부 공격으로부터 안전한지 확인
예시: 비밀번호가 암호화되어 저장되는지, SQL Injection 방어 여부 확인
[인수테스트]
사용성 테스트 (Usability Test)
목적: 사용자가 소프트웨어를 쉽게 사용할 수 있는지 평가
예시: 메뉴 구성이 직관적인지, 초보자도 쉽게 사용할 수 있는지 확인
인수 테스트 (Acceptance Test)
목적: 최종 사용자가 요구사항을 만족하는지 확인
예시: 고객이 직접 기능을 테스트하고 “이대로 사용해도 되겠다”고 판단하는 테스트
- 알파테스트 : 개발자, 관련 인원이 테스트
- 베타테스트 : 유저들이 테스트
설치 테스트 (Installation Test)
목적: 소프트웨어가 다양한 환경에서 올바르게 설치되는지 확인
예시: Windows, Mac, Linux에서 설치가 정상적으로 되는지 확인
반응형'소프트웨어공학' 카테고리의 다른 글
내가 공부하기 위한 공간 - [소프트웨어공학] 13 - 품질 (1) 2025.06.07 내가 공부하기 위한 공간 - [소프트웨어공학] 12 - 유지보수 (1) 2025.06.07 내가 공부하기 위한 공간 - [소프트웨어공학] 10 - 코딩 (0) 2025.05.30 내가 공부하기 위한 공간 - [소프트웨어공학] 9 - UI (0) 2025.05.23 내가 공부하기 위한 공간 - [소프트웨어공학] 8 - 아키텍처 (0) 2025.05.23