티스토리 뷰
- 용어
- 블랙박스 테스트
- 화이트박스 테스트
- 객체지향 테스트
- 통합 & 시스템 테스트
- 테스트 관리 및 자동화 도구
용어
- 테스트
→ 시스템이 정해진 요구를 만족하는지, 예상과 실제가 어떤 차이를 보이는 지 수동or자동으로 검사 및 평가하는 것
→ 100% 테스트는 불가능 ( 판단의 어려움 / 시간, 자원 제약 )
→ 소프트웨어는 많은 테스트를 해봐야 한다
→ 테스트 단계 : 대규모 시스템의 테스트는 단계적으로 이루어져야 함
- 신뢰도
→ 시스템의 동작과 명세에 기술된 동작이 일치하는 정도
- 오류
→ 시스템 실행동안 결함
→ 시스템이 정상적으로 작동하지 못하게 하는 것
- 결함
→ 이상 동작을 하게 하는 설계 / 코딩 / 버그
- 고장
→ 컴포넌트의 명세와 실행 동작의 차이
→ 하나 이상의 오류로 인해 발생
- 테스트 대상 컴포넌트
→ 분리해서 시험할 수 있는 시스템의 모듈
- 테스트 케이스
→ 고장 및 결함을 찾기 위해 컴포넌트의 입력 및 예상 결과 집합
→ 속성 : 이름 , 테스트 대상, 조건, 입력 , 오라클, 로그
→ 테스트 스위트 : 테스트 케이스 집합
→ 테스트 절차 : 테스트 케이스를 어떤 순서로 실행할 것인지 기술한 것
→ 테스트 스텝 : 테스트 케이스 실행의 최소 단위
- 테스트 드라이버 ( bottom up )
→테스트될 컴포넌트를 호출하는 부분적인 구현
→ 테스트 대상을 구동시키는 프로그램
- 테스트 스터브 ( top down )
→ 테스트될 컴포넌트가 호출하는 컴포넌트가 부분적으로 구현된 것
→ 호출되는 컴포넌트를 시뮬레이션 한 프로그램
- 오류 개념
→ 테스트는 오류가 있음을 보여주는 작업이지 오류가 없음을 보여주는 작업이 아님
→ 모든 오류가 결함이 되지는 않음
→ 결함이 고장 현상으로 나타나지 않을 수 있음
→ S/W 고장은 오류로 인해 발생함
- 오류 수정
→ 결함을 고치기 위해 컴포넌트를 변경하는 것
→ 버그 트래킹 : 고장, 오류, 결함, 오류 수정작업을 기록한 것 / 형상관리 작업의 일부
→ 리그레션 테스트 : 수정된 모듈 및 관련 모듈의 테스트 / 수정할 때 마다 리그레션 테스트를 해야하기 때문에 자동화해야함
→ 문서화 : 변경 이유 및 관계를 기록
블랙박스 테스트
- 블랙박스 테스트
→ 대상을 블랙박스로 보고 기능이 올바른 지 확인하는 작업
→ 종류 : 동등 분할 테스트 / 경곗값 분석 / 원인 결과 분석
1. 동등 분할 테스트
→ 입력의 결과가 동등한 클래스를 분할 , 대표 입력값
→ 가능한 입력을 동치 클래스로 나눈 후, 테스트 사례를 각 클래스에서 선택한다.
→ 대표 입력값 선택의 기준 : 포함 정도 / 비결합성 / 표현성
→ 포함 정도 : 가능한 모든 입력은 동치 클래스 중 하나에 반드시 속할 것
→ 비결합성 : 동치 클래스에는 같은 입력이 존재하면 안됨
→ 표현성 : 동치 클래스A의 멤버가 입력으로 사용되서 오류가 발생했다면, 동치 클래스A의 다른 멤버도 오류가 발생해야 함
2. 경곗값 분석
→ 오류가 많이 발생하는 경계선 상의 테스트
→ 클래스 경계에서 값을 선택함
→ 예를 들어 입력값의 범위가 1~100 이라면 경곗값은 1 주변값 ( 0,1,2 ) 이거나 100 주변값 ( 99, 100, 101 ) 이어야 함
3. 원인 결과 분석
→ 원인과 결과 관계를 파악하여 테스트
→ 어떤 결과와 그 결과에 영향을 주는 요인 사이의 관계를 분석
→ 의사 결정표 : 입력이 원인이 되고, 출력은 결과가 된다.
→ 과정 : 원인과 결과를 찾는다 à 원인과 결과의 관계를 그래프로 나타낸다 à 원인과 결과 사이에 제약조건을 추가해 그래프를 완성한다 à 그래프를 의사 결정표로 전환한다 à 테스트 케이스를 생성한다
화이트박스 테스트
- 화이트박스 테스트
→ 모듈 안의 내부 구조와 실행 경로를 자세히 참조하는 테스트
→ 종류 : 경로 테스트 / 경로 찾기
1. 경로 테스트
→ 가능한 경로를 적어도 한번씩 실행
2. 경로 찾기
→ 원시 코드의 흐름도 작성
- 테스트 커버리지
→ S/W 총량에 대해 테스트된 아이템의 비율 : 테스트한 경로 / 기본 경로의 수
→ 문장 커버리지 : 실행 코드라인이 한 번 이상 실행되면 충족
→ 분기 커버리지 : 내부 조건이 참 또는 거짓이면 충족
→ 경로 커버리지 : 독립된 모든 경로를 테스트하는 기준
→ 조건 커버리지 : 각 분기의 내부 복합 조건에 대한 단위 조건의 참과 거짓을 모두 테스트해야 충족
※ 구조기반 기법
객체지향 테스트
- 객체지향 테스트
→ 사용사례 기반 테스트 : 사용사례 명세에서 테스트 케이스 추출
→ 상태기반 테스트 : 시계 실행 상태의 예상된 결과와 오러클의 비교
→ 테스트 케이스 : 모든 상태 변환이 적어도 한 번씩 방문 되도록 할 것
통합 & 시스템 테스트
- 통합 테스트
→ 2개 이상의 컴포넌트에 초점을 두어 단위 테스트에서 발견하지 못한 결함을 찾는 것
→ 스터브와 드라이버 작성이 필요
→ 종류 : 동시식 / 하향식 / 상향식 / 샌드위치식
1. 동시식 통합
→ 모든 컴포넌트를 동시에 통합
→ 스터브나 테스트 드라이버가 필요하지 않음
→ 비용이 많이 들고 고장과 관련된 컴포넌트를 찾기 어려움
2. 하향식 통합
→ 최상위층을 단위테스트 / 아래층을 점증적으로 통합
→ 하위층을 시뮬레이션 하는 스터브 사용
→ 시스템의 골격 테스트에 좋음
→ 스터브 개발에 시간이 많이들고, 하위층에 기능이 많이 구현되어 있으면 효율이 떨어짐
3. 상향식 통합
→ 하위층의 컴포넌트를 테스트 à 위층에 있는 컴포넌트를 차례로 통합
→ 테스트 드라이버 필요
→ 인터페이스 결함 발견에 좋음
→ 시스템의 골격이 나중에 테스트되고, 상위층에서 발견된 결함이 서브 시스템에 영향을 줄 수 있음
4. 샌드위치 통합
→ 상향식 + 하향식
→ 서브 시스템 분할 : 타깃층 + 타깃 아래층 + 타깃 위층
→ 타깃층을 중심으로 위쪽은 하향식 , 아래쪽은 상향식으로 병행 테스트
→ 최상위층과 최하위층은 스터브와 드라이브가 필요없음
- 시스템 테스트
→ 전체 시스템을 빌드한 후 요구 중심의 테스트
→ 종류 : 기능 테스트 / 성능 테스트 / 파일럿 테스트 / 인수 테스트 / 설치 테스트가 있음
1. 기능 테스트 : 기능적 요구와 시스템의 차이를 발견하기 위한 테스트
2. 성능 테스트 : 스트레스 / 볼륨 / 보안 / 타이밍 / 복구 테스트를 하는 것
3.
파일럿 테스트 : 필드 테스트 / 알파 테스트 / 베타 테스트를 하는 것
4. 인수 테스트 : 벤치마크 / 경쟁 테스트를 하는 것
5. 설치 테스트 : 목표 환경에서 기능 테스트와 성능 테스트를 반복, 설치 테스트가 시스템 테스트의 최종임
테스트 관리 및 자동화 도구
- 테스트 작업
→ 한정된 자원과 일정으로 진행되므로 '계획' 을 잘 세워야 한다.
→ 테스트 작업 계획 / 문서 / 할당 순서로 구성
1. 테스트 작업 계획
→ 효과적인 테스트 케이스를 선정하고, 테스트 작업을 병렬로 계획
2. 테스트 작업 문서
→ 테스트 계획서 : 관리 문서, 작업 범위, 접근 방법, 자원, 일정 , 요구 사항에 대한 문서
→ 테스트 케이스 : 입력 , 예상 출력, 드라이버, 스터브, 수행할 작업의 단계
→ 테스트 실행 보고서 : 실행 결과
→ 테스트 요약 보고서 : 발견된 오류
→ 완벽한 테스트는 불가능 하므로 종료 기준이 있어야 함
※ 테스트 종료 기준(시점)
→ 테스트 케이스를 중요도에 따라 레벨 1~3으로 나눈다.
→ 레벨 1은 전부 테스트를 실행한다.
→ 레벨 2,3 은 정한 비율로 테스트를 진행해 통과시킨다.
→ 2번 이상의 빌드 과정을 거친다.
3. 테스트 작업 할당
→ 컴포넌트 개발에 참여하지 x 엔지니어
→ 컴포넌트 분석에 능통하고 모순점을 잘 찾는 사람
→ 품질 관리를 담당하는 팀
- 테스트 자동화 도구
1. 정적 분석 도구
1-1. 코드 분석 도구
→ 원시 코드의 문법적 적합성을 자동으로 평가하고 잘못된 문장을 표기해준다.
1-2. 구조 검사 도구
→ 원시 코드의 그래프를 생성해 논리흐름을 보여준다
→ 구조적 결함이 있는지 체크해준다.
1-3. 데이터 분석 도구
→ 원시 코드에 정의된 데이터 구조/선언, 컴포넌트 인터페이스를 검사한다.
→ 잘못된 링크 / 데이터 정의 충돌 / 잘못된 테이터 사용 등을 발견해준다.
1-4. 순서 검사 도구
→ 이벤트의 순서를 체크해준다.
→ 잘못된 순서가 발견되면 지적해준다.
2. 동적 분석 도구
→ 프로그램이 수행되는 동안 이벤트의 상태를 파악하기 위해, 특정 변수나 조건의 스냅샷(snapshot) 을 생성
- 테스트 케이스 생성 도구
1. 자료 흐름도
→ 원시 프로그램을 입력받아 파싱하고 자료 흐름도를 작성해준다
→ define - use 관계
→ 찾으려는 변수에 영향을 주는 요소들을 모아 테스트 경로를 구동시키는 입력값을 찾아낸다.
2. 기능 테스트
→ 주어진 기능을 구동 시키는 모든 가능한 상태를 파악하고 입력을 작성한다.
3. 입력 도메인 분석
→ 원시 코드의 내부를 참조하지 않고 입력 변수가 가질수 있는 값의 도메인 분석
4. 랜덤 테스트
→ 입력 값을 무작위로 추출
→ 시스템의 신뢰성 분석에 사용
- 테스트 실행 도구
→ 자동적으로 스터브와 드라이버를 생성하는 도구
→ 자동 테스트 환경 : 테스트 수행 도구들이 테스트 환경으로 통합되어 제공
※ 캡쳐 및 리플레이
→ 테스트 계획에 표시된 테스트 데이터를 자동으로 입력
→ 실행 과정에 발생하는 화면 / 인쇄 결과를 캡쳐
→ 예상 결과와 비교
→ 예상 결과와 차이가 발생할 경우 프로그래머에게 보고
→ 오류를 발견하고 수정한 후 고치는 작업을 체크
'전공 > 소프트웨어 공학' 카테고리의 다른 글
13. 품질 보증 (0) | 2023.07.12 |
---|---|
12. 유지보수 (0) | 2023.07.12 |
10. 구현 (0) | 2023.07.11 |
9. 디자인 패턴 2 (0) | 2023.07.07 |
8. 디자인 패턴 1 (0) | 2023.07.07 |
- Total
- Today
- Yesterday
- 소프트웨어공학
- lan
- 디자인 패턴
- Instant-NGP
- 셀룰러네트워크
- 인터네트워크
- ngp 실행
- Transition Function
- 소프트웨어 공학
- ngp 오류
- 혼잡제어
- NGP-ERROR
- 설계 원리
- Instnat-ngp
- Regular Expression
- Compiler
- ATM
- CUDA VISUAL STUDIO 2022 지원
- 전송계층프로토콜
- 컴파일러
- 백준 2437
- 인터넷프로토콜
- 회선교환
- 비동기전송모드
- 클래스 모델링
- Proper CFL
- Ambiguity
- 아키텍처 설계
- 컴퓨터네트워크
- Extension to Regular Expression
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |