본문 바로가기

Others/정보처리기사

[정보처리기사] 애플리케이션 테스트 관리

1. 애플리케이션 테스트 케이스 설계

소프트웨어 테스트

- 오류 발견 관점, 오류 예방 관점, 품질 향상 관점

- 테스팅은 결함이 존재함을 밝히는 것, 완벽한 테스팅은 불가능, 개발 초기에 테스팅 시작,

결함 집중, 살충제 페러독스, 테스팅은 정황에 의존적, 오류-부재의 궤변

 

화이트박스 테스트

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

- 결정 커버리지: 결정 포인트 내의 전체조건식이 적어도 한 번은 T, F의 결과를 수행하는 커버리지

- 조건 커버리지: 결정 포인트 내의 개별 조건식이 적어도 한 번은 T, F의 결과를 수행하는 커버리지

- 조건/결정 커버리지: 결정 포인트 내의 전체, 개별 조건식이 적어도 한 번은 T, F의 결과를 수행하는 커버리지

- 변경 조건/결정 커버리지: 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 독립적으로 영향을 주도록하는 조건/결정 커버리지

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

- 기본 경로 커버리지: 수행 가능한 모든 경로를 테스트하는 커버리지

- 제어 흐름 테스트: 프로그램 제어 구조를 그래프 형태로 나타내 내부 로직을 테스트

- 데이터 흐름 테스트: 제어 흐름 그래프에 데이터 사용현황을 추가한 테스트

 

블랙박스 테스트

- 동등 분할 테스트: 입력 데이터의 영역을 유사한 도메인별로 그룹핑해 대푯값 테스트 케이스를 도출해 테스트

- 경곗값 분석 테스트: 등가 분할 후 경곗값을 포함한 테스트 케이스를 설계해 테스트

- 결정 테이블 테스트: 요구사항의 논리, 발생 조건을 테이블 형태로 나열해 조건 행위를 조합하여 테스트

- 상태 전이 테스트: 테스트 대상의 상태를 구분하고, 이벤트에 의해 상태 전이되는 경우의 수를 수행하는 테스트

- 유스케이스 테스트: 유스케이스를 기반으로 테스트 케이스를 명시화해 테스트

- 분류 트리 테스트: 일부 또는 전체를 트리 구조로 분석, 표현해 테스트 케이스를 설계해 테스트

- 페어와이즈 테스트: 테스트 데이터값들 간 최소 한번씩 조합해 테스트

- 원인-결과 그래프 테스트: 그래프를 활용해 입력 데이터 간 관계와 출력에 미치는 영향을 분석해 효용성이 높은 테스트 케이스로 테스트

- 비교 테스트: 여러 버전의 프로그램에 동일한 입력값을 넣어 같은 결과값을 내는지 테스트

 

테스트 시각에 따른 분류

- 검증, 확인

 

테스트 목적에 따른 분류

- 회복 테스트, 안전 테스트, 성능 테스트, 구조 테스트, 회귀 테스트, 병행 테스트

- 성능테스트: 부하 테스트, 스트레스 테스트, 스파이크 테스트, 내구성 테스트

 

테스트 종류에 따른 분류

- 명세 기반 테스트(블랙박스 테스트), 구조 기반 테스트(화이트박스 테스트), 경험 기반 테스트(블랙 박스 테스트)

 

정적 테스트

- 리뷰: 관리 리뷰, 기술 리뷰, 인스펙션, 워크 스루, 감사

 

경험 기반 테스트

- 탐색적 테스트, 오류 추정, 체크리스트, 특성테스트

 

테스트 오라클

- 참 오라클, 샘플링 오라클, 휴리스틱 오라클, 일관성 검사 오라클

 

테스트 레벨

- 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트

 

2. 애플리케이션 통합 테스트

목 객체

- 더미 객체, 테스트 스텁, 테스트 드라이버, 테스트 스파이, 가짜 객체

 

통합 테스트

- 하향식 통합(스텁), 상향식 통합(드라이버), 샌드위치 통합

 

테스트 자동화 도구

- 정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구

 

테스트 하네스

- 테스트를 지원하기 위한 코드와 데이터

- 테스트 드라이버, 테르스 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트

 

결함 분석 방법

- 구체화, 고립화, 일반화

 

테스트 커버리지

- 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준

- 기능 기반 커버리지, 라인 커버리지, 코드 커ㅓ리지

 

3. 애플리케이션 성능 개선

애플리케이션 성능 측정 지표

- 처리량, 응답 시간, 경과 시간, 자원 사용률

 

배드 코드

- 외계인 코드, 스파게티 코드, 알 수 없는 변수명, 로직 중복

- 오염, 문서부족, 의미없는 이름, 높은 결합도, 아텍쳐 침식

 

클린 코드

- 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화

- 의미있는 이름, 간결하고 명확한 주석, 보기 좋은 배치, 작은 함수, 읽기 쉬운 제어 흐름,

오류 처리, 클래스 분할 배치, 느슨한 결합 기법, 코딩 형식 기법

 

소스 코드 품질 분석 도구

- 정적 분석 도구, 동적 분석 도구

 

리팩토링

- 유지보수 생산성 향상을 위해 기능을 변경하지 않고, 복잡한 소스코드를 수정, 보완하여 가용성 및 가동성을 높이는 기법

- 소프트웨어 모듈의 외부적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화

- 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질 향상