티스토리 뷰
[Note]
정보처리기사 실기 요약 정리 공유
07. 애플리케이션 테스트 관리
01. 애플리케이션 테스트 케이스 설계
파레토 법칙
- 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상
- ⇒ 20%의 모듈에서 80%의 결함이 발견되는 것을 말한다.
살충제 패러독스
- 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함.
- 테스트 케이스의 정기적 리뷰와 개선 및 다른 시각에서의 접근이 필요.
오류-부재의 궤변
- 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 불 수는 없음.
소프트웨어 테스트 유형
- 정적 테스트
- 동적 테스트
- 프로그램 실행을 요구하는 테스트
- 화이트 박스 테스트 (구조 테스트) = 프로그램 내부 로직을 보면서 수행하는 테스트
- 제어 구조 테스트 : 소프트웨어의 논리적 복잡도 측정 후 수행 경로들의 집합을 정의하는 테스트.
- 루프 테스트 : 프로그램의 루프 구조에 국한해서 실시하는 테스트
- 블랙 박스 테스트 (기능 테스트)
- 동등 분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유효 값/무효 값을 그룹핑하여 대표 값 테스트 케이스를 도출하여 테스트하는 기법
- 경계값 분석 테스트 : 등기분할 후 경계 값 부분에서 오류 발생 확률이 높기에 경계 값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법
- 결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트하는 기법.
- 상태전이 테스트 : 테스트 대상/시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법
- 유스케이스 테스트 : 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법.
- 분류 트리 테스트 : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법.
- 페어와이즈 테스트 : Test data 값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법.
= 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
테스트 목적에 따른 분류 (회안강성 구회병)
- 회복 테스트
- 시스템에 고의로 실패를 유도하고, 시스템의 정상적 복귀 여부를 테스트하는 기법
- 안전 테스트
- 불법적인 소프트웨어가 접근하여 시스템을 파괴하지 못하도록 소스 코드 내의 보안적인 결함을 미리 점검하는 테스트 기법
- 강도 테스트
- 시스템에 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지를 검증하는 테스트 기법
- 성능 테스트
- 사용지의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법
- 구조 테스트
- 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법
- 회귀 테스트
- 회귀 테스트는 기능 추가나 오류를 제거/수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
- 이전에 실행 테스트를 재실행하여 이전에 고쳐 졌던 오류가 재현되는지 검사하는 방법
- 병행 테스트
- 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법
테스트 종류에 따른 분류 (명구경)
- 명세 기반 테스트
- 프로그램의 요구사항 명세서를 기반으로 테스트 케이스를 선정하여 테스트하는 기법
- 구조 기반 테스트
- 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 기법
- 경험 기반 테스트
- 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한, 직관과 기술 능력을 기반으로 수행하는 테스트 기법
- 명세 기반 테스트의 설계 산출물로 설계된 입력값, 실행조건, 기대결과로 구성된 테스트 항목의 명세서
테스트 레벨 종류 (단통시인)
- 단위 테스트
- 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계
- 통합 테스트
- 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계
- 시스템 테스트
- 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계
- 인수 테스트
- 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
가상머신 (Virtual Machine)
- 컴퓨터상의 가상으로 컴퓨터를 구동시키는 것으로, 물리적인 하드웨어를 가상화하여, 하나의 물리적 하드웨어 상에서 여러 컴퓨터가 구동되는 것처럼 에뮬레이션 하는 것이다.
VLAN
- 논리적으로 분할된 스위치 네트워크나 가상 기능을 가진 LAN 스위치 또는 ATM 스위치를 사용해서 물리적인 배선에 구애받지 않고 브로드캐스트 패킷이 전달되는 범위를 임의로 나누는 네트워크 기술.
알파 테스트
- 새로운 하드웨어와 소프트웨어의 프로토타입이 운영되는 과정에서 상품으로 출시하기 전 개발 인력이 성능을 확인하는 테스트
베타 테스트
- 선발된 잠재 고객으로 하여금 일정 기간 무료로 사용하게 한 후에 나타난 여러 가지 오류를 수정, 보완하는 테스트
브룩스의 법칙
- 추가적인 인력투입은 오히려 프로젝트 기간을 연장시킨다.
02. 애플리케이션 통합 테스트
하향식 통합
- 메인 제어 모듈(프로그램)로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며, 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 '깊이-우선' 또는 '너비-우선'방식으로 통합된다.
- 더미 모듈인 스텁 사용
💡 스텁 (Stub)
- 모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈이다.
- 스텁은 하위 모듈의 반환값만 전달하면 된다.
상향식 통합
- 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행한다.
- 더미 모듈인 드라이버 사용
💡 드라이버 (Driver)
- 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈이다.
- 드라이버는 상위 모듈 흐름을 작성해야 하기 때문에 스텁이 개발하기 쉽다.
통합 테스트 수행 방법 간 비교
- 빅뱅 테스트
- 모든 모듈을 동시에 통합 후 테스트 수행
- 드라이버/스텁 없이 실제 모듈로 테스트
- 단시간 테스트 가능
- 장애 위치 파악이 어려움
- 상향식 테스트
- 최하위 모듈부터 점진적으로 상위 모듈과 함께 테스트
- 테스트 드라이버 필요
- 장애 위치 파악 쉬움
- 이른 프로토타입이 어려움
- 하향식 테스트
- 최상위 모듈부터 하위 모듈들을 통합하면서 테스트
- 테스트 스텁 필요
- 장애 위치 파악 쉬움
- 이른 프로토타입 가능
- 많은 스텁이 필요하다는 단점
테스트 하네스
- 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성한다.
- 구성요소 : 테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트
테스트 커버리지
- 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준이며, 테스트의 정확성과 신뢰성을 향상시키는 역할을 한다.
- 유형
- 구문 커버리지
- 조건문 결과와 관계없이 구문 실행 개수로 계산
- 프로그램 내의 모든 명령문을 적어도 한번 수행하는 커버리지
- 결정 커버리지
- 프로그램 내의 전체 결정문이 적어도 한 번은 참과 거짓의 결과를 수행하는 커버리지
- 조건 커버리지
- 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지
- 조건/결정 커버리지
- 전체 조건식 뿐만아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 커버리지
- 변경 조건/결정 커버리지
- 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지
- 다중 조건 커버리지
- 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
- 구문 커버리지
03. 애플리케이션 성능 개선
애플리케이션 성능 측정 지표 (처응경자)
- 처리량
- 애플리케이션이 주어진 시간에 처리할 수 있는 트렌젝션의 수
- 웹 애플리케이션의 경우 시간당 페이지 수로 표현
- 응답 시간
- 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
- 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
- 경과 시간
- 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
- 자원 사용률
- 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량
LDAP (Lightweight Directory Access Protocol)
- TCP/IP 위에서 조직화되고 비슷한 특성을 가진 객체들의 모임인 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜
틀린 내용이 있거나 문제가 있을시 알려주세요. 같이 공부해요 😊
이 글이 도움이 되셨다면 공감, 댓글 부탁드려요 👍🏻
'Study' 카테고리의 다른 글
[Note] 2021 정보처리기사 실기 요약 정리 공유 | 09. 소프트웨어 개발 보안 구축 (2) | 2021.07.06 |
---|---|
[Note] 2021 정보처리기사 실기 요약 정리 공유 | 08. SQL 응용 (0) | 2021.06.29 |
[Note] 2021 정보처리기사 실기 요약 정리 공유 | 06. 화면 설계 (0) | 2021.06.29 |
[Note] 2021 정보처리기사 실기 요약 정리 공유 | 05. 인터페이스 구현 (0) | 2021.06.25 |
[Note] 2021 정보처리기사 실기 요약 정리 공유 | 04. 서버 프로그램 구현 (0) | 2021.06.25 |
댓글