5 분 소요

X 애플리케이션 테스트 관리


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

1. 애플리케이션 테스트 케이스 작성

(1) 소프트웨어 테스트의 이해

2. 소프트웨어 테스트 필요성

  • 오류 발견 관점
  • 오류 예방 관점: 동료 검토, 워크 스루, 인스펙션
  • 품질 향상 관점: 신뢰도 향상

3. 소프트웨어 테스트 기본 원칙

1) 소프트웨어 테스트 원리

  • 결함 존재 증명: 존재 밝히는 것
  • 완벽 테스팅은 불가능: 완벽은 시간 낭비, 무한 불가능
  • 초기 집중: 조기 테스트 좋음, 요르돈의 법칙
  • 결함 집중: 오류 80%는 모듈 20%에서 발견, 파레토 법칙
  • 살충제 패러독스: 반복적 테스트는 효율x
  • 정황 의존성: 정황과 도메인에 따라 테스트
  • 오류-부재의 궤변: 요구사항 없으면 품질↓

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

  • 테스트 계획: 목적과 범위 정의, 구조 파악, 일정, 비용 산정
  • 테스트 분석 및 디자인: 목적과 원칙 검토, 요구사항 분석, 우선순위, 테스트 데이터 준비
  • 테스트 케이스 및 시나리오 작성: 테스트 케이스, 스크립트, 시나리오
  • 테스트 수행: 데이터 로딩, 결함 리포팅
  • 테스트 결과 평가 및 리포팅: 결과 정리, 리뷰

3) 소프트웨어 테스트 산출물

  • 테스트 계획서: 목적과 범위 정의
  • 테스트 베이시스: 논리적인 케이스
  • 테스트 케이스: 설계 산출물(입력값, 실행 조건, 기대 결과)
  • 테스트 슈트: 케이스 집합(시나리오x)
  • 테스트 시나리오: 테스트 케이스와 일 대 다
  • 테스트 스크립트: 케이스 실행 순서
  • 테스트 결과서: 결과 평가, 리포팅

(2) 소프트웨어 테스트 유형

1. 프로그램 실행 여부에 따른 분류

  • 정적 테스트: 구조 분석(리뷰, 정적 분석)
  • 동적 테스트: 실행 후 결함 검출(화이트박스 테스트, 블랙박스 테스트, 경험기반 테스트)

2. 테스트 기법에 따른 분류

1) 화이트박스 테스트

  • 구문 커버리지: 명령문 모두 수행, 구문 실행 개수
  • 결정 커버리지: 전체 조건식 참과 거짓 수행, 구문 포함
  • 조건 커버리지: 개별 조건식 참과 거짓 수행, 구문 포함
  • 조건/결정 커버리지: 전체+개별 조건식
  • 변경 조건/결정 커버리지: 개별 조건식이 영향 안 받게
  • 다중 조건 커버리지: 개별 조건식 조합 100% 보장
  • 기본 경로 커버리지: 모든 경로 테스트, 맥케이브 순환복잡도
  • 제어 흐름 테스트: 그래프 형태
  • 데이터 흐름 테스트: 그래프+데이터
  • 루프 테스트: 반복 구조

2) 블랙박스 테스트

  • 동등분할 테스트: 그룹핑, 대푯값
  • 경곗값 분석 테스트: 경곗값
  • 결정 테이블 테스트: 요구사항 논리, 발생조건 테이블로
  • 상태 전이 테스트: 이벤트로 상태 전이
  • 유스케이스 테스트: 유스케이스로 모델링
  • 분류 트리 테스트: 트리 구조
  • 페어와이즈 테스트: 한 번씩 조합
  • 원인-결과 그래프 테스트: 입력-출력 영향
  • 비교 테스트: 같은 입력값 넣고 비교
  • 오류 추정 테스트: 실수 추정

3. 테스트 시각에 따른 분류

  • 검증: 개발 과정
  • 확인: 결과

4. 테스트 목적에 따른 분류

  • 회복 테스트: 고의로 실패, 정상적 복귀
  • 안전 테스트: 보안적인 결함 점검
  • 성능 테스트
    • 부하 테스트: 부하 증가, 임계점, 병목 현상 제거
    • 강도 테스트: 임계점 이상의 부하
    • 스파이크 테스트: 사용자 몰릴 때
    • 내구성 테스트: 오랜 시간 높은 부하
  • 구조 테스트: 논리 경로, 코드 복잡도
  • 회귀 테스트: 수정에 의한 새로운 오류 확인
  • 병행 테스트: 변경-기존 같은 데이터 입력 후 결과 비교

5. 테스트 종류에 따른 분류

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

(3) 정적 테스트

1. 리뷰: 수작업

  • 동료 검토: 2~3명
  • 인스펙션: 전문가 or 팀, 개발 초기 검사
  • 워크 스루: 회의

2. 정적 분석: 도구

(4) 동적 테스트

1. 화이트박스

2) 테스트 커버리지 유형

  • 기능 기반 커버리지: 전체 기능 모수, 화면 수 모수
  • 라인 커버리지: 라인 수
  • 코드 커버리지: 일반적인 테스트 커버리지

3) 테스트 커버리지 구성

  • 구문: 명령문 다 수행
  • 결정: 전체 조건식 수행
  • 조건: 개별 조건식 수행
  • 결정 포인트

2. 블랙박스

3. 경험 기반 테스트

  • 탐색적 테스트: 경험
  • 오류 추정: 실수 추정

(5) 테스트 케이스

3. 테스트 케이스 필요 항목

  • 공통 작성 항목 요소
    • 테스트 단계명, 작성자, 승인자, 작성 일자, 문서 버전
    • 대상 시스템
    • 변경 여부
    • 테스트 범위
    • 테스트 조직
  • 개별 테스트 케이스 항목 요소
    • 테스트 ID
    • 테스트 목적
    • 테스트할 기능
    • 테스트 데이터
    • 예상 결과
    • 테스트 환경
    • 테스트 조건
    • 성공/실패 기준
    • 기타 요소

(6) 테스트 오라클

1. 개념
결과가 참인지 거짓인지 판단하기 위해 참값 입력하여 비교

2. 종류

  • 참 오라클: 모든 입력값
  • 샘플링 오라클: 특정 입력값
  • 휴리스틱 오라클: 특정 입력값 → 올바른 결과, 나머지 → 휴리스틱
  • 일관성 검사 오라클: 변경 후 동일한지 확인

2. 애플리케이션 테스트 시나리오 작성

(1) 테스트 레벨

2. 테스트 레벨 종류

  • 단위 테스트: 단위 모듈, 서브루틴(명세 기반, 구조 기반)
  • 통합 테스트: 인터페이스, 상호 작용
  • 시스템 테스트: 정상적으로 수행
  • 인수 테스트: 계약 요구사항(알파, 베타)

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

1. 애플리케이션 테스트 수행

(1) 단위 테스트

1. 단위 테스트 수행 도구

  • 테스트 드라이버: 수행 후 결과 도출, 상위 모듈
  • 테스트 스텁: 조건 수행, 하위 모듈

(2) 통합 테스트

1. 점증적인 방식

  • 하향식 통합: 깊이 우선, 너비 우선, 스텁
  • 상향식 통합: 아래에서 위로, 드라이버, 클러스터
  • 샌드위치 통합: 상향+하향, 드라이버/스텁

2. 비점증적인 방식

  • 빅뱅 테스트

(3) 테스트 자동화 도구

3. 테스트 자동화 도구 유형

1) 정적 분석 도구: 코드 이해

2) 테스트 실행 도구

  • 데이터 주도 접근 방식: 데이터를 저장
  • 키워드 주도 접근 방식: 키워드와 데이터 저장

3) 성능 테스트 도구: 성능 목표 확인

4) 테스트 통제 도구: 형상 관리 도구


4. 테스트 하네스

  • 테스트 드라이버: 상향식 테스트
  • 테스트 스텁: 하향식 테스트
  • 테스트 케이스: 입력값, 실행 조건, 기대 결과
  • 테스트 슈트: 테스트 케이스 집합
  • 테스트 시나리오: 상황
  • 테스트 스크립트: 자동화 테스트 실행 절차
  • 목 오브젝트: 입력하면 수행하는 객체

2. 애플리케이션 테스트 결과 분석

(1) 테스트 결과 분석

1. 소프트웨어 결함

  • 오류: 결함의 원인, 실수
  • 결점: 고장 일으킴
  • 버그: 프로그램 오류
  • 고장/문제: 결함이 실행될 때

(2) 결함 관리

2. 결함 관리 프로세스

  • 결함 관리 계획: 계획 수립
  • 결함 기록: DB에 기록
  • 결함 검토: 검토 후 개발자에게 전달
  • 결함 수정: 개발자가 수정
  • 결함 재확인: 다시 테스트
  • 결함 상태 추적 및 모니터링 활동: 게시판 서비스
  • 최종 결함 분석 및 보고서 작성: 보고서 작성

3. 결함 생명주기

  • 결함 등록: 결함 보고서에 기록
  • 결함 검토: 처리 방안 검토
  • 결함 할당: 개발자 결정
  • 결함 수정: 개발자가 수정
  • 결함 확인: 처리 정확한지 검증
  • 결함 종료: 수정 완료 후 종료
  • 결함 재등록: 다시 수정
  • 결합 조치 보류: 해결 연기

3. 애플리케이션 개선 조치사항 작성

(1) 테스트 커버리지

1. 개념

  • 테스트 품질 측정 기준
  • 정확성, 신뢰성 향상

2. 유형

  • 기능 기반 커버리지: 전체 기능 모수
  • 라인 커버리지: 라인 수
  • 코드 커버리지: 구조 코드(일반적)

(2) 결함의 식별 및 관리

1. 결함 심각도별 분류

  • 치명적 결함: 완전히 방해(데이터 손실, 시스템 충돌)
  • 주요 결함: 기능 수행 이상(기능 장애)
  • 보통 결함: 특정 기준 부자연(사소한 기능 오작동)
  • 경미한 결함: 불편함(UI 잘림)
  • 단순 결함: 사소한 버그

03 애플리케이션 성능 개선

1. 애플리케이션 성능 분석

(1) 애플리케이션 성능 분석

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

  • 처리량: 처리할 수 있는 트랜잭션 수
  • 응답 시간: 입력이 끝난 후
  • 경과 시간: 입력한 시점부터
  • 자원 사용률: 사용량

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

(1) 소스 코드 최적화의 이해

1. 배드 코드

  • 외계인 코드: 아주 오래됨
  • 스파게티 코드: 복잡하게 얽힘
  • 알 수 없는 변수명: 이름 모르겠음
  • 로직 중복: 로직 중복됨

2. 클린 코드: 깔끔하게 잘 정리된 코드

(3) 애플리케이션 성능 개선 방안

5. 리팩토링

1) 개념

  • 유지보수 생산성 향상
  • 기능 변경x
  • 소스 코드 수정, 보완
  • 가용성, 가독성 높임

2) 목적

  • 유지보수성 향상: 코드 단순화, 가독성↑
  • 유연한 시스템: 유연한 대응
  • 생산성 향상: 소스 재사용
  • 품질 향상: 오류발견 용이, 품질 향상

카테고리:

업데이트:

댓글남기기