반응형

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

1 테스트 케이스

1 개념

특정 요구사항을 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합

 

2 작성 절차

  1. 테스트 계획 검토 및 자료 확보
  2. 위험 평가 및 우선순위 결정
  3. 테스트 요구사항 정의
  4. 테스트 구조 설계 및 테스트 방법 결정
  5. 테스트 케이스 정의
  6. 테스트 케이스 타당성 확인 및 유지보수

 

3 테스트 오라클

1 개념

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

 

2 종류

  • 참 오라클: 모든 입력값에 대하여 기대하는 결과 생성
  • 샘플링 오라클: 특정 입력값에 대해서만 기대하는 결과 제공
  • 휴리스틱 오라클: 샘플링 오라클 개선, 나머지 값들에 대해서는 추정하여 처리
  • 일관성 검사 오라클: 애플리케이션 변경이 있을 때, 일관성 확인

 

2 테스트 레벨

1 개념

함께 편성되고 관리되는 테스트 활동의 그룹

각각의 테스트 레벨은 독립적

 

2 종류

  • 단위 테스트
  • 통합 테스트
  • 시스템 테스트
  • 인수 테스트

 

3 테스트 시나리오

1 개념

테스트 케이스 집합

 

2 작성 시 유의점

  • 테스트 시나리오 분리 작성
  • 고객의 요구사항과 설계 문서 등을 토대로 테스트 시나리오 작성

 

4 테스트 지식 체계

1 소프트웨어 테스트 종류

  • 블랙박스 테스트
  • 화이트 박스 테스트
  • 경험 기반 테스트

 

2 소프트웨어 테스트 원리

  • 테스팅은 결함이 존재함을 밝히는 것
  • 완벽한 테스팅은 불가능
  • 개발 초기에 테스팅 시작
  • 결함 집중
  • 살충제 패러독스
  • 테스팅은 정황에 의존적
  • 오류-부재의 궤변

 


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

1 결함 관리 도구

1 개념

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

 

2 결함 관리 프로세스

  1. 에러 발견
  2. 에러 등록
  3. 에러 분석
  4. 결함 확정
  5. 결함 할당
  6. 결함 조치
  7. 결함 조치 검토 및 승인

 

3 결함 추이 분석

1 개념

테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 결함을 추정하는 작업

 

2 유형

  • 결함 분포 분석
  • 결함 추세 분석
  • 결함 에이징 분석

 

4 테스트 커버리지

1 개념

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

 

2 유형

  • 기능 기반 커버리지
  • 라인 커버리지
  • 코드 커버리지

 

3 종류

  • 구문 커버리지
  • 결정 커버리지
  • 조건 커버리지
  • 변경 조건/결정 커버리지

 

5 결함 식별

  • 기획 시 유입되는 결함
  • 설계 시 유입되는 결함
  • 코딩 시 유입되는 결함
  • 테스트 부족으로 유입되는 결함

 

단계별 결함 유입별 분류

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

 

결함 심각도별 분류

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

 

결함 우선순위

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

 

6 결함 관리 항목

  • 결함 내용
  • 결함 ID
  • 결함 유형
  • 발견일
  • 심각도
  • 우선순위
  • 시정 조치 예정일
  • 수정 담당자
  • 재테스트 결화
  • 종료일

 

2 테스트 자동화 도구

1 개념

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 수 있는 방법

 

2 장단점

장점

  • 반복 작업 자동화
  • 사용자 요구 기능의 일관성 검증
  • 객관적인 평가 기준
  • 테스트 결과의 다양한 표시 형태 제공
  • 정밀한 테스트

 

단점

  • 도구 도입 후 도구 사용 방법에 대한 교육 및 학습
  • 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력 필요
  • 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자 필요

 

3 유형

정적 분석 도구

애플리케이션을 실행하지 않고 분석하는 방법

소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용

 

테스트 실행 도구

테스트를 위해 작성된 스크립트를 실행

  • 데이터 주도 접근 방식
  • 키워드 주도 접근 방식

 

성능 테스트 도구

애플리케이션의 가상의 사용자를 생성하여 테스트

 

테스트 통제 도구

  • 테스트 관리 도구: 테스트 계획 및 관리
  • 형상 관리 도구: 테스트 수행에 필요한 데이터와 도구를 관리
  • 결함 추적 / 관리 도구: 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원

 

테스트 장치

개념

애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분

 

구성요소
  • 테스트 드라이버: 상향식 테스트에 필요
  • 테스트 스텁: 하향식 테스트에 필요
  • 테스트 슈트: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
  • 테스트 케이스: 입려값, 실행 조건, 기대 결과 등의 집합
  • 테스트 스크립트: 자동화된 테스트 실행 절차
  • 목 오브젝트: 사용자의 행위를 조건부로 사전에 입력해 두면, 상황에 예정된 행위를 수행

 

테스트 단계별 테스트 자동화 도구

  • 테스트 계획: 요구사항 관리
  • 테스트 분석 / 설계: 테스트 케이스 생성
  • 테스트 수행: 테스트 자동화, 정적 분석, 동적 분석, 성능 테스트, 모니터링
  • 테스트 관리: 커버리지 측정, 형상 관리, 결함 추적 / 관리

 


3 통합 테스트

1 개념

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

단위 테스트가 끝난 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인

 

2 수행 방법의 분류

테스트 방안빅뱅상향식하향식
테스트 수행 방법모든 모듈을 동시에 통합 후 테스트 수행최하위 모듈부터 점진적으로 테스트최상위 모듈부터 통합하면서 테스트
드라이버 / 스텁드라이버 / 스텁 없이 실제 모듈로 테스트테스트 드라이버 필요테스트 스텁 필요
장점단시간 테스트 가능, 작은 시스템에 유리장애 위치 파악 쉬움, 모든 모듈 개발 시간 필요 X장애 위치 파악 쉬움, 중요 모듈의 선테스트 가능, 이른 프로토 타입
단점장애 위치 파악 어려움, 모든 모듈이 개발되어야 가능중요 모듈이 마지막에 테스트, 이른 프로토타입 어려움많은 스텁 가능, 하위 모듈의 불충분한 테스트

* 스텁: 모듈 및 하위 컴포넌트를 대신하여 더미 모듈

* 드라이버: 상위 모듈에서 데이터 입출력을 확인하기 위한 더미 모듈

 


3 애플리케이션 성능 개선

1 알고리즘

1 개념

자료 구조와 함께 프로그램을 구성하는 문제에 대한 답을 찾는 해법

 

2 특성

  • 입력
  • 출력
  • 명확성
  • 유한성
  • 유효성

 

3 기법

  • 분할 정복
  • 동적계획법
  • 탐용법
  • 백트래킹

 

4 시간 복잡도에 따른 알고리즘 분류

  • O(1): 해시 함수
  • O(logn): 이진 탐색
  • O(n): 순차 탐색
  • O(nlogn): 퀵 정렬, 병합 정렬
  • O(n2): 버블 정렬, 삽입 정렬, 선택 정렬

 

2 소스 코드 품질 분석

1 개념

 

2 도구 유형

  • 정적 분석 도구
  • 동적 분석 도구: 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석

 

3 도구

  • 정적 분석 도구: pmd, cppcheck, SonarQube, checkstyle
  • 코드 복잡도: ccm, cobertura
  • 동적 분석 도구: Avalanche, Valgrind

 

3 코드 최적화

1 개념

클린 코드를 작성하는 것

 

2 클린 코드

1 개념

잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드

 

2 특징

  • 중복 코드 제거
  • 가독성
  • 쉬운 버그 찾기, 빠른 프로그래밍 속도

 

3 유형

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

 

3 베드 코드

1. 개념

  • 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
  • 스파게티 코드, 이름 정의를 알 수 없는 코드, 동일한 처리 로직이 중복되게 작성된 코드

 

2 유형

  • 오염
  • 문서 부족
  • 의미 없는 이름
  • 높은 결합도
  • 아키텍처 침식
반응형

+ Recent posts