공부/정보처리기사

2020년 정보처리기사 실기 정리 #7

셩잇님 2022. 11. 13. 17:49
반응형

소프트웨어 테스트

개발된 응용 어플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동

 

소프트웨어 테스트 (발예항)

오류 발견 관점 : 프로그램에 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하기 위해 필요

 

오류 예방 관점 : 프로그램 실행 전에 동료 검토, 워크스루, 인스펙션 등을 통해 오류를 사전에 발견하는 예방 차원의 필요

 

품질 향상 관점 : 사용자의 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질 보증을 위해 필요

 

소프트웨어 테스트 원리 (결완초집 살정오)

테스팅은 결함이 존재함을 밝히는 것
결함이 존재함을 밝히는 활동, 결함이 없다는 것을 증명할 수는 없음

결함을 줄이는 활동

 

완벽한 테스팅은 불가능
완벽하게 테스팅하려는 시도는 불필요한 시간과 자원낭비

 

개발 초기에 테스팅 시작
초기 테스트 설계 시 장점 : 테스팅 결과를 단시간에 알 수 있고, 테스팅 기간 단축, 재작업을 줄여 개발 기간 단축 및 결함 예방

 

결함집중
적은 수의 모듈에서 대다수의 결함이 발견됨

20%의 모듈에서 80% 결함이 발견됨

 

살충제 패러독스
동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함

 

테스팅은 정황에 의존적
소프트웨어 성격에 맞게 테스트 실시

 

오류-부재의 궤변
요구사항을 충족시켜주지 못하면 결함이 없다 해도 품질이 높다 할 수 없음

 

소프트웨어 테스트 프로세스

테스트 계획, 분석, 디자인, 케이스 및 시나리오 작성, 수행, 결과 평가 및 리포팅

 

소프트웨어 테스트 산출물 (결시계케)

테스트 계획서
테스트 목적과 범위 정의, 대상 시스템 구조 파악, 수행 절차, 일정, 조직 역할 및 책임 정의 등 테스트 수행을 계획한 문서

 

테스트 케이스
테스트를 위한 설계산출물로 응용 SW가 사용자의 요구사항을 준수하는지 확인하기 위해 구성된 테스트 항목의 명세서

 

테스트 시나리오
테스트 수행을 위한 여러 개의 테스트 케이스의 집합으로 테스트 케이스의 동작 순서를 기술한 문서이며, 테스트 절차를 명

세한 문서

 

테스트 결과서
테스트 결과를 정리한 문서로 프로세스를 리뷰하고, 결과를 평가하고 리포팅하는 문서

 

동료검토

2~3명이 진행하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해 관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행하는 검토 기법

 

워크스루

검토 자료를 회의 전에 배포해서 사전검토 한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서화 하는 기법

 

인스펙션

다룬 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 기법

 

화이트박스 테스트

프로그램 내부 로직을 보며 수행하는 테스트

 

블랙박스 테스트

외부 사용자의 요구사항 명세를 보면서 수행하는 테스트

 

블랙박스 테스트 유형 (동경결상 유분페)

동등 분할 테스트
입력 데이터의 영역을 유사한 도메인별로 유효 값/무효 값을 그룹핑하여 대표 값 테스트 케이스를 도출하여 테스트하는 기법

 

경계 값 분석 테스트
등가분할 후 경계 값 부분에서 오류 발생 확률이 높기에 경계 값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법

 

결정 테이블 테스트
요구사항의 논리와 발생조건을 테이블 형태로 나열해 조건과 행위를 모두 조합하여 테스트하는 기법

 

상태전이 테스트
테스트 대상/시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법

 

유스케이스 테스트
시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법

 

분류트리 테스트
SW의 일부 또는 전체를 트리구조로 분석 및 표현해 테스트 케이스를 설계하여 테스트하는 기법

 

페어와이즈 테스트
테스트 데이터 값들 간에 최소 한번씩 조합하는 방식이며 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 기법

 

테스트 시각에 따른 분류

검증 : 소프트웨어 과정을 테스트, 올바른 제품을 생산하고 있는지 검증
확인 : 소프트웨어 결과를 테스트, 만들어진 제품이 제대로 동작하는지 확인

 

테스트 목적에 따른 분류 (회안강성 구회병)

회복 테스트
고의로 실패를 유도해 시스템의 정상 복귀 여부를 테스트하는 기법

 

안전 테스트
불법적인 SW가 접근해 시스템을 파괴하지 못하도록 소스코드 내의 보안적인 결함을 미리 점검하는 테슽 기법

 

강도 테스트
과다 정보량을 부과해 과부하시에도 시스템이 정상적으로 작동되는지를 검증하는 테스트 기법

 

성능 테스트
사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에처리하는 업무량, 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법

 

구조 테스트
시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 기법

 

회귀 테스트
오류를 제거하거나 수정한 시스템에서 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법

 

병행 테스트
변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법

테스트 종류에 따른 분류 (명구경)

분류 : 명세 기반 테스트
설명 : 프로그램의 요구사항 명세서를 기반으로 테스트 케이스를 선정해 테스트 하는 기법
유형 : 동경결상 유분페

 

분류 : 구조 기반 테스트
설명 : SW 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 기법
유형 : 구결조 조변다

 

분류 : 경험 기반 테스트
설명 : 유사 SW나 유사 평가에서 테스터의 경험을 토대로 한 직관과 기술 능력을 기반으로 수행하는 테스트 기법
유형 : 탐색적, 오류추정, 체크리스트, 특성 테스트

 

테스트 케이스 작성 절차

테스트 계획 및 자료 확보 – 위험 평가 및 우선순위 결정 – 테스트 요구사항 정의 – 테스트 구조 설계 및 테스트 방법 결정 – 테스트 케이스 정의 – 테스트 케이스 타당성 확인 및 유지보수

 

테스트 오라클

테스트 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법

 

테스트 오라클 종류 (참샘휴일)

참 오라클
모든 입력값에 대해 기대하는 결과를 생성함으로ㅆ 발생된 오류를 모두 검출할 수 있는 오라클

 

샘플링 오라클
특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클

 

휴리스틱 오라클
틍정 입력값에 대해 올바른 결과를 제공하고 나머지 값들에 대해 휴리스틱으로 처리하는 오라클

 

일관성 검사 오라클
변경이 있을 때 수행 전과 후의 결과값이 동일한지 확인하는 오라클

 

테스트 레벨 종류 (단통시인)

분류 : 단위 테스트
설명 : 사용자가 요구사항에 대한 단위 모듈 등을 테스트 하는 단계
기법 : 인터페이스, 자료 구조, 실행 경로, 오류 처리 테스트

 

분류 : 통합 테스트
설명 : 단위 테스트를 통과한 모듈 사이 인터페이스, 컴포넌트 간 상호작용을 검증하는 테스트 단계
기법 : 빅뱅, 상향/하향 테스트

 

분류 : 시스템 테스트
설명 : 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계
기법 : 기능,비기능 요구사항 테스트

 

분류 : 인수 테스트
설명 : 계약상 요구사항이 만족되었는지 확인하기 이한 테스트 단계
기법 : 알파/베타 테스트

 

테스트 시나리오

테스트 수행을 위한 여러 테스트 케이스의 집합으로 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서

 

통합 테스트

각 모듈간 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법

 

하향식 통합 (스텁)

프로그램이 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며, 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 깊이-우선, 너비-우선 방식으로 통합

 

상향식 통합 (드라이버)

애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동해 구축과 테스트를 수행

 

빅뱅 테스트

모든 모듈을 동시에 통합 후 테스트를 수행하며 드라이버/스텁 없이 실제 모듈로 테스트 한다.

 

테스트 하네스

애플리케이션 컴포넌트 및 모듈을 테스트 하는 환경의 일부분으로 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작선한다

 

테스트 하네스 구성요소 (드 스슈케 스목)

테스트 드라이버
테스트 대상 하위 모듈을 호출하고, 파라미터를 전달해 모듈 테스트 수행 후의 결과를 도출하는 상향식 테스트에 필요

 

테스트 스텁
제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요

 

테스트 슈트
테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합

 

테스트 케이스
입력값, 실행 조건, 기대 결과 등의 집합

 

테스트 스크립트
자동회된 테스트 실행 절차에 대한 명세

 

목 오브젝트
사용자의 행위를 조건부로 사전에 입력해두면 상황에 예정된 행위를 수행하는 객체

 

테스트 리포팅

테스트 결과 정리
모든 테스트가 완료되면 테스트 계획과 테스트 케이스 설계부터 단계별 테스트 시나리오까지 모두 포함된 문서 작성

 

테스트 요약문서
테스트 계획, 비용, 결과로 판단 가능한 대상 SW의 품질 상태를 문서 작성

 

품질 상태
품질 상태는 정량회된 품질 지표인 테스트 성공률, 커버리지, 결함의 수와 중요도 등이 포함

 

테스트 결과서
결함과 관련한 사항을 중점적으로 기록해 결함의 내용 및 자운 정보, 재현 순서등을 상세하게 기록함

 

테스트 실행 절차 및 평가
단계별 테스트 종료시 테스트 실행 절차를 리뷰해 결과에 대한 평가를 수행하고 그 결과에 따라 실행 절차를 최적화하여 다음 테스트에 적용

 

테스트 결함 관리

각 단계별 테스트 수행 후 발생한 결함의 재발 방지와 유사 결함 발견 시 처리 시간 단축읠 위해 결함을 추적하고 관리하는 활동

 

결함 관리 프로세스 (발등 분확할 조검)

에러 발견
요구사항 분석 설계 테스트 실행 중 에러 발견될 경우 테슽 전문가와 프로젝트 팀이 함께 논의

 

에러 등록
결함 관리 대장에 발견된 에러를 등록

 

에러 분석
등록된 에러가 단순 에러인지 아니면 실제 결함인지를 분석

 

결함 확정
등록된 에러가 실제 결함으로 확정될 경우 결함 확정 상태로 설정

 

결함 할당
결함 해결 담당자를 지정해 할당하고 결함 할당 상태로 설정

 

결함 조치
결함에 대해 수정활동을 수행하고 수정이 완료 될 경우 결함 조치상태로 설정

 

결함 조치 검토 및 승인
수정이 완료된 결함에 대해 확인 테스트를 수행하고 정상적으로 결함 조치가 완료된 경우 결함 조치 완료 상태로 설정

결함 추이 분석

테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성값들을 분석하고, 향후 애플리케이션 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업

 

결함 추이 분석 유형 (분추에)

결함 분포 분석 : 각 애플리케이션 모듈 또는 컴포넌트 특정 속 해당하는 결함의 수를 측정하여 결함의 분포 분석

 

결함 추세 분석 : 테스트 진행 시간의 흐름에 ᄄᆞ른 결함의 수를 측정해 결함 추세를 분석

 

결함 에이징 분석 : 등록된 결함에 대해 특정한 결함 상태의 지속 시간을 측정하여 분석

 

테스트 커버리지

주어진 테스트 케이스에 의해 수행되는 SW의 테스트 범위를 측정하는 테스트 품질 측정 기준이며, 정확성과 신뢰성을 향상 시키는 역할을 한다.

 

코드 커버리지 유형 (구결조 조변다)

구문 커버리지
프로그램 내 모든 명령문을 적어도 한 번 수행하는 커버리지

 

결정 커버리지
프로그램 내 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행하는 커버리지

 

조건 커버리지
결정 명령문 내 각 조건이 한번은 참과 거짓의 결과가 되도록 수행하는 커버리지

 

조건/결정 커버리지
전체 조건식뿐만 아니라 개별 조건식도 참 한번 거짓 한번 결과가 되도록 수행하는 커버리지

 

변경 조건/결정 커버리지
다른 개별 조건식에 영향 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리즈를 향상시킨 커버리지

 

다중 조건 커버리지
결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

 

결함 심각도 별 분류 (치주보경단)

치명적 결함 – 주요 결함 – 보통 결함 – 경미한 결함 – 단순 결함

 

결함 우선순위 (결높보낮)

결정적 – 높음 – 보통 – 낮음

 

애플리케이션 성능 측정 지표 (처응경자)

처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
응답 시간 : 사용자 입력이 끝난 후, 애플리케이션 응답 출력이 개시될때까지의 시간
경과 시간 : 애플리케이션 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
자원 사용률 : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량 등

 

데이터베이스 관련 성능 저하 원인 (락페릭사커)

DB 락
대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생하는 현상

 

불필요한 DB 패치
실제 필요한 데이터보다 많은 대량의 데이터 요청이 들어올 경우 응답 시간 저하 현상 발생

 

연결 누수
DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생

 

부적절한 커넥션 풀 크기
너무 작거나 크게 설정한 경우 성능 저하 현상이 발생할 가능성 존재

 

확정 관련
트랜잭션이 확정 되지 않고 커넥션 풀에 반환될 때 성능 저하 가능성 존재

 

나쁜 코드 유형 (오문이 결침)

오염
비즈니스 기능을 수행하지 못하는 많은 컴포넌트들이 존재

 

문서부족
현재 코드와 문서가 일치하지 않고 수정과 변경을 위한 도메인 지식은 크게 증가하지만 개발자의 지식부족 초래

 

의미 없는 이름
함수, 클래스, 컴포넌트 이름들이 명확한 의미를 갖지 못하거나 실제 작동과 불일치

 

높은 결합도
클래스와 컴포넌트 간 데이터와 컨트롤 흐름이 네트워크로 복잡하게 연결

 

아키텍처 침식
아키텍처가 더 이상 구별되지 않고 여러 솔루션으로 이루어져 아키텍처상 변형들로 인해 시스템 품질이 떨어짐

 

클린 코드 유형 (이주배 함제오)

의미 있는 이름
변수나 클래스, 메서드 명을 의도가 분명한 이름

 

간결하고 명확한 주석
주석이 필요한 경우 최대한 간결하고 명확하제 작성

 

보기 좋은 배치
읽는 사람이 편하게 읽을 수 있도록 구성

 

작은 함수
함수는 가급적으로 작게 만들고 반복문 안의 내용은 한 줄로 처리되도록 작성

 

읽기 쉬운 제어 흐름
조건, 루프, 흐름을 통제하는 선언문이 코드에 있으면 코드가 읽기 어려움

 

오류 처리
오류 코드의 반환보다 예외 처리를 활용

 

애플리케이션 성능 개선 방안 (소아프 매입시메)

소스 코드 최적화 기법 적용 – 아키텍처 조정을 통한 성능 개선 – 프로그램 호출 순서 조정 적용 – 메모리 사용 최소화 적용 – 입출력 발생 최소화 적용 – System.out.print()을 사용 제외 – 애플리케이션 성능 현황 관리

반응형