반응형

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

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

1 소프트웨어 테스트

1 개념

개발된 응용 애플리케이션이나 시스템의 만족도와 결함을 찾는 활동

2 필요성

  • 오류 발견
  • 오류 예방
  • 품질 향상

3 원리

  • 테스팅은 결함이 존재함을 밝히는 것: 없다는 것 증명 불가
  • 완벽한 테스팅은 불가능: 완벽한 테스팅은 불필요
  • 개발 초기에 테스팅 시작: 재작업을 줄여 개발 기간 단축 및 결함 예방
  • 결함 집중: 적은 수의 모듈에서 대다수의 결함이 발견
  • 살충제 패러독스: 동일한 테스트 케이스은 새로운 버그를 찾지 못함
  • 테스팅은 정황에 의존적: 소프트웨어 성격에 맞게 테스트
  • 오류-부재의 궤변: 요구사항 부재 시 오류가 없더라도 낮은 품질

4 절차

  1. 테스트 계획
  2. 테스트 분석 및 디자인
  3. 테스트 케이스 및 시나리오 작성
  4. 테스트 수행
  5. 테스트 결과 평가 및 리포팅

5 산출물

  • 테스트 계획서: 테스트의 목적과 범위 정의
  • 테스트 케이스: 테스트 설계 산출물
  • 테스트 시나리오: 테스트 케이스 집합
  • 테스트 결과서: 테스트 프로세스 리뷰, 테스트 결과 평가

2 소프트웨어 테스트 유형

  • 프로그램 실행 여부에 따른 분류
    • 정적 테스트: 논리적 구조 분석
    • 동적 테스트
  • 테스트 기법에 따른 분류
    • 화이트박스(구조) 테스트: 내부 로직을 보면서 테스트
      • 제어구조 테스트: 논리적 복잡도 측정 후 수행 경로 집합 정의
      • 루프 테스트: 루프 구조에 국한해서 실시
    • 블랙박스(기능) 테스트: 요구사항 명세를 보면서 테스트
      • 동등 분할 테스트: 도메인별 대표값 테스트 케이스를 도출하여 테스트
      • 경계 값 분석 테스트: 등가분할 후, 경계값을 포함하여 테스트
      • 결정 테이블 테스트: 발생 조건과 행위를 조합하여 테스트
      • 상태전이 테스트: 이벤트에 의한 상태 전의 경우의 수를 테스트
      • 유스케이스 테스트: 유스케이스 모델링이 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스 명세화
      • 분류트리 테스트: SW 일부 또는 전체를 트리 구조로 분석
        • 페어와이즈 테스트: 테스트 데이터를 최소 한 번씩 조합하여 테스트
  • 테스트 시각에 따른 분류
    • 검증: 과정
    • 확인: 결과
  • 테스트 목적에 따른 분류
    • 회복: 고의로 실패, 복귀 여부
    • 안전: 보안 결함 여부
    • 강도: 정보량 과부하시 정상 작동 여부
    • 성능: 성능 평가
    • 구조: 내부 논리 경로, 소스코드 복잡도 평가
    • 회귀: 오류를 제거하거나 수정한 시스템에서의 오류를 확인하는 반복 테스트
    • 병행: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력하여 비교
  • 테스트 종류에 따른 분류
    • 명세 기반 테스트: 요구사항 명세서를 기반으로 테스트
    • 구조 기반 테스트: 소프트웨어 내부 논리 흐름에 따라 테스트
    • 경험 기반 테스트: 경험을 토대로한 직관과 기술 능력을 기반으로 테스트

3 테스트 케이스

1 개념

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

2 작성 절차

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

3 필요 항목

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

4 테스트 오라클

1 개념

테스트 결과의 참, 거짓을 판단하기 위해 사전에 정의된 참 값을 입력하여 비교

2 종류

  • 참 오라클: 모두 검사
  • 샘플링 오라클: 일부 검사
  • 휴리스틱 오라클: 샘플링 오라클 개선, 나머지 값에 대해서 휴리스틱(추정) 처리
  • 일관성 검사 오라클: 애플리케이션 변경이 있을 때, 전후 동일 여부 확인

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

1 테스트 레벨

1 개념

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

2 종류

  • 단위 테스트 - 개발: 사용자 요구사항에 대한 단위 모듈, 서브 루틴 등을 테스트
  • 통합 테스트 - 설계: 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계
  • 시스템 테스트 - 기계 명세 분석: 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계
  • 인수 테스트 - 요구사항 분석: 계약 상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계

2 테스트 시나리오

1 개념

테스트 케이스 집합

2 작성 시 유의사항

  • 테스트 시나리오 분리 작성
  • 요구사항 기반 테스트 시나리오 작성
  • 필요 항목 포함

3 테스트 환경 구축

1 개념

테스트를 위하여 실제 운영 환경을 구축하는 활동

2 유형

  • 하드웨어 기반: 서버 장비, 클라이언트 장비, 네트워크 장비 설치
  • 소프트웨어 기반: 응용 소프트웨어 설치, 필요 데이터 구축
  • 가상 시스템 기반: 물리적으로 테스트 환경 구축이 힘든 경우

3 테스트 조건

  • 테스트 시작 조건
  • 테스트 종료 조건
  • 테스트 성공과 실패의 판단 기준

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

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

1 통합 테스트

1 개념

2 수행 방법 분류

  • 비점층적 방식
    • 빅뱅 방식: 모든 컴포넌트를 사전에 통합하여 테스트
  • 점층적 방식
    • 하향식 통합: 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 통합하면서 테스트
      1. 메인 제어 모듈은 아직 작성되지 않은 하위 모듈 제어
      2. 검사 초기에 시스템 구조 파악
      3. 스텁(더미 모듈) 개발
      4. 깊이/너비 우선 방식에 따라 실제 모듈 대체
      5. 각 모듈 통합
      6. 테스트가 완료되면 스텁이 실제 모듈로 작성
    • 상향식 통합: 최하위 레벨의 모듈로부터 위쪽 방향으로 제어의 경로를 따라 구축하면서 테스트
      1. 하위 레벨의 모듈들이 클러스터로 결합
      2. 상위 모듈에서 데이터의 입력과 출력을 확인하기 위한 드라이버(더미 모듈) 작성
      3. 각 통합된 클러스터 단위 테스트
      4. 클러스터는 프로그램의 위쪽으로 결합, 드라이버가 실제 모듈로 대체

2 테스트 자동화 도구

1 개념

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현

2 장단점

  • 장점: 재입력 작업 자동화, 일관성 검증에 유리, 객관적인 평가 기준 제공, 정밀한 테스트 가능
  • 단점: 사용 방법 교육 및 학습 필요, 프로세스 단계별 적용 비용, 도구 비용

3 유형

  • 정적 분석 도구: 소스코드 결함
  • 테스트 실행 도구: 작성된 스크립트 실행
    • 데이터 주도 접근 방식
    • 키워드 주도 접근 방식
  • 성능 테스트 도구: 가상의 사용자를 생성하고 테스트
  • 테스트 통제 도구: 테스트 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구

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

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

3 테스트 하네스

1 개념

모듈을 테스트하는 환경의 일부

2 구성요소

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

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

1 테스트 결과 분석

1 소프트웨어 결합

  • 에러/오류: 결함의 원인
  • 결함/결점/버그: 제거하지 않으면 실패하거나 문제 발생
  • 실패/문제: 결함 실행 시 발견

2 테스트 완료 조건

최적의 완료 조건 계획 필요

3 테스트 리포팅

  • 테스트 결과 정리:
  • 테스트 요약 문서
  • 품질 상태
  • 테스트 결과서
  • 테스트 실행 절차 및 평가

2 결함 관리

1 개념

테스트 수행 결함의 재발 방지와 유사 결함 발견 시 처리 시가나 단축을 위해 결함을 추적하고 관리하는 활동

2 결함 추적 관리 활동

  • 단위 테스트
  • 통합 테스트: 설계 문서 결함 발견 시
  • 시스템 테스트: 요구사항 명세서 결함 발견 시
  • 운영 테스트: 요구사항 명세서 결함 발견 시

3 프로세스

  • 에러 발견
  • 에러 등록
  • 에러 분석
  • 결함 확정
  • 결함 할당
  • 결함 조치
  • 결함 조치 검토 및 승인

3 결함 추이 분석

1 개념

테스트 결함의 관리 측정 지표 분석, 예상 결함 추정

2 유형

  • 결함 분포 분석: 각 모듈의 특정 속성에 대한 결함 수
  • 결함 추세 분석: 테스트 진행 시간의 흐름에 따른 결함의 수
  • 결함 에이징 분석: 등록된 겨함에 대해 특정한 결함 상태의 지속 시간

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

1 테스트 커버리지

1 개념

테스트 범위를 측정하는 테스트 품질 측정 기준

2 유형

  • 기능 기반 커버리지
  • 라인 커버리지: 단위 테스트 척도
  • 코드 커버리지
    • 구문 커버리지
    • 결정 커버리지
    • 조건 커버리지
    • 조건/결정 커버리지
    • 변경 조건/결정 커버리지
    • 다중 조건 커버리지

2 결함의 식별 및 관리

1 단계별 결함 유입의 종류

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

2 결함 심각도별 분류

  • 치명적 결함: 기능이나 제품의 테스트를 완전히 방해
  • 주요 결함: 기능이 기대와 많이 다르게 동작
  • 보통 결함: 프로그램이 특정 기준을 충족하지 못하거나, 일부 기능 부자연스러운 결함
  • 경미한 결함: 불편함 유발
  • 단순 결함: 사소한 버그

3 결함 우선순위

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

4 결함 관리 항목

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

3 애플리케이션 성능 개선

1 애플리케이션 성능 분석

1애플리케이션 성능 점검 개요

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

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

2 유형별 성능 분석 도구

  • 성능/부하/스트레스 점검 도구
    • JMeter
    • LoadUI
    • OpenSTA
  • 모니터링 도구
    • Scouter
    • Zabbix

2 애플리케이션 성능 저하 원인

  • 데이터베이스 관련 성능 저하 원인
    • 데이터베이스 락
    • 불필요한 데이터베이스 패치
    • 연결 누수
    • 부적절한 커넥션 풀 크기
    • 확정 관련
  • 내부 로직으로 인하나 성능 저하 원인
    • 웹 애플리케이션의 인터넷 접속 불량
    • 특정 파일의 업로드, 다운로드로 인한 성능 저하
    • 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
  • 외부 호출로 인한 성능 저하 원인: 임의의 트랜잭션이 수행되는 동안 외부 트랜잭션이 장시간 수행되거나, 타임아웃이 일어나는 경우
  • 잘못된 환경 설정으로 인한 성능 저하: Heap Memory Full
  • 네트워크 장비로 인한 성능 저하

3 애플리케이션 성능 테스트 프로세스

  1. 애플리케이션 성능 테스트 케이스 작성
  2. 애플리케이션 성능 테스트 수행
    1. 성능 테스트 도구 설치
    2. 테스트 환경 설정
    3. 시나리오 생성
    4. 성능 테스트 실행 및 모니터링
  3. 성능 테스트 결과 분석

2 애플리케이션 성능 개선

1 소스코드 최적화 이해

1 나쁜 코드

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

2 클린 코드

높은 가독성, 단순, 의존성 중복 최소화

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

2 소스코드 품질 분석

1 개념

2 도구

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

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

  • 소스코드 최적화 기법 적용
  • 아키텍처 조정을 통한 성능 개선
  • 프로그램 호출 순서 조정 적용
  • 소스코드 품질분석 도구 활용
    • 메모리 사용 최소화
    • 입출력 발생 최소화
    • 로거 사용
  • 애플리케이션 성능 현황 관리
반응형

+ Recent posts