💠기타/자격증

[정처기 필기] 「2」 | 애플리케이션 테스트 관리 - (4.1) 애플리케이션 테스트, 테스트의 분류

2024. 1. 30. 21:56
728x90

[정처기 필기] 2」 | 애플리케이션 테스트 관리 - (4.1) 애플리케이션 테스트, 테스트의 분류

「1」 소프트웨어 설계

> 「2」 소프트웨어 개발

- 데이터 입 / 출력 구현, 통합 구현, 제품 소프트웨어 패키징, > 애플리케이션 테스트 관리, 인터페이스 구현

「3」 데이터베이스 구축

「4」  프로그래밍 언어 활용

「5」  정보시스템 구축 관리

 

> 1 애플리케이션 테스트

> 2 애플리케이션 테스트의 분류

3 테스트 기법에 따른 애플리케이션 테스트

4 개발 단계에 따른 애플리케이션 테스트

5 통합 테스트

6 테스트 케이스 / 테스트 시나리오 / 테스트 오라클

7 테스트 자동화 도구

8 결함관리

9 복잡도

10 애플리케이션 성능 개선

1. 애플리케이션 테스트

애플리케이션 테스트의 개요

 

애플리케이션에 잠재되어 있는 결함을 찾아내는 행위, 절차

 

- 확인(Validation)사용자 입장에서 요구에 맞게 구현되었는지 개발 결과를 테스트하여 확인

- 검증(Verification)개발자 입장에서 명세서에 맞게 구현되었는지 개발 과정을 테스트하여 점검

- 확인과 검증을 통해 결함 유형명확하게 파악 가능

- 개발한 소프트웨어의 유형분류하고, 중점으로 테스트할 테스트 사항 정리

 

>소프트웨어의 분류<

 

상용 소프트웨어

- 공통적인 필요 기능을 제공, 산업의 특성에 따라 산업 범용 소프트웨어, 산업 특화 소프트웨어로 구분

 

> 산업 범용 소프트웨어

: 시스템 소프트웨어 - 운영체제, 데이터 관리, 스토리지, 소프트웨어, 소프트웨어 공학 도구, 가상화 소프트웨어, 시스템 보안 소프트웨어로 구분

: 미들 웨어 - 분산 시스템 소프트웨어, IT 자원 관리, 서비스 플랫폼, 네트워크 보안 소프트웨어로 구분

: 응용 소프트웨어 - 영상 처리, CG/VR, 콘텐츠 배포, 자연어 처리, 음성 처리, 기업용 소프트웨어로 구분

> 산업 특화 소프트웨어

: 특정 분야에서 요구하는 기능만 구현한 소프트웨어, 자동차, 항공, 조선, 건설 등 지원하는 소프트웨어

 

서비스 제공 소프트웨어

- 상업적 목적이 아닌, 특정 사용자가 필요로 하는 기능만 구현하여 제공

 

> 신규 개발 소프트웨어 : 새로운 서비스를 제공하기 위해 개발된 소프트웨어

> 기능 개선 소프트웨어 : 사용자 편의성, 화면 UI 등 기존 서비스 기능을 개선하기 위해 개발된 소프트웨어

> 추가 개발 소프트웨어 : 법 / 제도 개정 등 새로운 기능을 추가하기 위해 개발된 소프트웨어

> 시스템 통합 소프트웨어 : 시스템별로 서비스되던 것을 원스톱(One-Stop) 서비스로 제공하기 위해 업무 기능이나 데이터 등 통합하여 개발한 소프트웨어

 

애플리케이션 테스트의 필요성

 

- 프로그램 실행 전에 오류 발견하여 예방 가능

- 요구, 기대 수준 등 만족하는지 반복적으로 테스트하므로 신뢰도 향상

- 개발 초기부터 진행하면 단순한 오류 발견 가능, 새로운 오류의 유입예방 

- 효과적으로 수행하면 최소한의 시간과 노력으로 많은 결함 찾을 수 있음

- 성공적인 테스트는 아직 발견되지 않는 오류를 찾는 것

 

애플리케이션 테스트의 기본 원리

 

- 소프트웨어의 잠재적 결함은 줄일 수 있지만 없다고 증명할 수 없음, 완벽한 소프트웨어 태스팅 불가

- 결함은 대부분 특정 모듈에 집중, 발견된 80%의 오류전체 모듈의 20%에서 발견되는 파레토 법칙 적용

- 동일한 테스트 케이스동일한 테스트를 반복하면, 더 이상 결함이 발견되지 않는 '살충제 패러독스'(Pesticide Paradox) 현상이 발생, 테스트 케이스를 지속적으로 보완 / 개선

- 소프트웨어 특징, 테스트 환경, 테스터 역량 등 정황에 따라 결과가 달라지므로, 정황에 따라 다르게 수행

- 결함을 모두 제거해도 요구를 만족시키지 못하면, 소프트웨어의 품질이 낮은 것, 이를 오류-부재의 궤변(Absence of Errors Fallacy)라고 함

 - 테스트와 위험 반비례, 많이 할수록 위험이 줄어들음

- 작은 부분에서 시작하여 확대하며 진행

- 개발자와 관계없는 별도의 팀에서 수행

2. 애플리케이션 테스트의 분류

프로그램 실행 여부에 따른 테스트

 

정적 테스트

: 프로그램을 실행하지 않고, 명세서 / 소스 코드를 대상으로 분석

: 개발 초기결함 발견, 개발 비용 낮춰줌

: 워크스루, 인스펙션, 코드 검사

동적 테스트

: 프로그램을 실행, 모든 단계에서 수행 가능

: 블랙박스 테스트, 화이트박스 테스트

 

테스트 기반(Test Bases)에 따른 테스트

 

명세 기반 테스트

: 요구에 대한 명세를 빠짐없이 테스트 케이스 작성 / 확인, 블랙박스 테스트

: 동등 분할, 경계 값 분석

구조 기반 테스트

: 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스 작성 / 확인, 화이트박스 테스트

: 구문 기반, 결정 기반, 조건 기반

경험 기반 테스트

: 유사 소프트웨어나 기술 등 테스터의 경험을 기반으로 수행, 블랙박스 테스트

: 요구에 대한 명세가 불충분 / 테스트 시간에 제약

: 에러 추정, 체크 리스트, 탐색적 테스팅

 

시각에 따른 테스트

 

검증(Verification) 테스트

: 개발자의 시각에서 소프트웨어 개발 과정을 테스트, 명세대로 완성됐는지 테스트

확인(Validation) 테스트

: 사용자의 시각에서 소프트웨어 결과를 테스트, 요구대로 제품 완성됐는지, 정상적 동작하는지 테스트

 

목적에 따른 테스트

 

회복(Recovery) 테스트

: 여러 결함을 주어 실패하도록 한 뒤, 올바르게 복구하는지 확인

안전(Security) 테스트

: 설치된 시스템 보호 도구가 불법적인 침입으로 보호할 수 있는지 확인

강도(Stress) 테스트

: 과도한 정보량 / 빈도로 과부하 시에도 정상적으로 실행하는지 확인

성능(Performance) 테스트

: 실시간 성능 / 전체적인 효율성 진단, 응답 시간 / 처리량테스트

구조(Structure) 테스트

: 내부의 논리적인 경로, 소스 코드 복잡도 등 평가

회귀(Regreesion) 테스트

: 변경 / 수정된 코드새로운 결함이 없음확인

병행(Parallel) 테스트

: 변경된 소프트웨어기존 소프트웨어동일한 데이터 입력하여 결과비교

 

 

 

 

 

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90