애플리케이션테스트케이스설계 - 애플리케이션 테스트 결과 분석

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

소프트웨어 결함

  • 용어
  1. 에러 Error / 오류
    • 결함 Defect 의 원인
    • 사람에 의해 생성된 실수
  2. 결함 / 결점 / 버그 Bug
    • 에러 또는 오류가 원인
    • 소프트웨어 제품에 포함되어 있는 결함
    • 제거하지 않을 시 제품 실패 또는 문제가 발생
  3. 실패 / 문제
    • 소프트웨어 제품에 포함된 결함이 실행 될 때 발생

테스트 완료 조건

  • 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트 등 각 단계별 테스트를 언제 어떤 상황에서 종료할 것인지 결정
  • 완료 조건은 일정, 비용, 조직등에 제약이 있으므로 최적의 완료조건을 계획

테스트 결함 관리

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

결함 추적 관리 활동

결함 추적 관리 활동

결함 관리 도구 유형

  • 오픈소스
    • Bugzilla
    • Trac
    • Mantis
  • 상용도구
    • QC
    • Clear Quest
    • JIRA

결함 관리 도구 도입 시 고려사항

  • 웹 클라이언트 지원을 하는지 확인이 필요
  • 윈도우, 유닉스 환경 등 이기종 플랫폼의 웹 서버를 지원하는지 확인
  • 프로세스 및 워크플로우 변경이 가능 해야함
  • 결함 간에 연관 관계 정보를 제공
  • 결함 등록 및 상태 변경 시 담당자에게 이벤트 통보 기능 필요
  • 각종 레포트, 차트, 쿼리 구성 및 저장이 가능
  • 결함 상태 변경에 대한 추적 기능
  • 다국어 지원이 가능
  • 다중 프로젝트 지원이 가능

애플리케이션테스트케이스설계 - 애플리케이션 통합 테스트 수행

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

  • 개발자 통합 테스트 계획에 따라 통합 모듈 및 인터페이스가 요구 사항을 충족하는지에 대한 테스트를 수행
  • 개발자 통합 테스트 수행 결과 발견된 결함에 대한 추이 분석을 통하여 잔존 결함을 추정
  • 테스트의 충분석 여부를 검증하고 발견된 결함에 대한 개선 조치사항을 작성

통합 테스트의 개념

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

통합 테스트 수행 방법의 분류

  • 일반적으로 점증적인 방법과 비점증적인 방식으로 나뉨
  • 비점증적 방법
    • 모든 컴포넌트를 사전에 통합하여 전체 프로그램을 한꺼번에 테스트
  • 점증적 방법
    • 상향식 통합
    • 하향식 통합

하향식 통합 Top Down

  • 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행
  • 메인 제어 모듈은 작성된 프로그램을 사용하고, 아직 작성되지 않은 하위 제어 모듈 및 모든 하위 컴포넌트를 대신하여 더미 모듈인 스텁을 개발
  • 깊이 우선 방식 또는 너비 우선 방식에 따라 하위 모듈인 스텁이 한 번에 하나씩 실제 모듈로 대체
    하향식 통합

상향식 통합 Bottom Up

  • 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트 시작
  • 최하위 레벨의 모듈 또는 컴포넌트들이 하위 모듈의 기능을 수행하는 클러스터로 결합
  • 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈 인 드라이버를 작성
  • 각 통합된 클러스터 단위를 테스트
  • 테스트가 완료되면 각 클러스터들은 프로그램의 위쪽으로 결합되며, 드라이버는 실제 모듈 또는 컴포넌트로 대체
    상향식 통합

회귀 테스팅 Regression Testing

  • 통합 테스트 과정에서 오류를 제거하거나 수정한 프로그램이 새로운 형태의 오작동이나 오류를 일으킬 수 있음
  • 회귀 테스트는 모듈이나 컴포넌트의 변화로 인해 의도하지 않은 오류가 생기지 않았음을 보증하기 위해 반복 테스트하는 것
  • 회귀 테스트 케이스 선정 방법
    • 모든 애플리케이션의 기능을 수행할 테스트 케이스의 대표적인 샘플을 도출
    • 변경에 의한 영향도가 가장 높은 애플리케이션 기능에 집중한 추가적인 테스트 케이스를 도출
    • 실제 수정이 발생한 모듈 또는 컴포넌트에서부터 시행하는 테스트 케이스를 도출

테스트 자동화의 개념

  • 테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현
  • 테스트 시간 단축과 인력 투입 비용을 최소하
  • 운영중인 시스템의 모니터링 또는 UI가 없는 서비스의 경우에도 정밀한 테스트 수행

테스트 자동화의 장점과 단점

  • 장점
    • 반복되는 테스트 데이터 재입력 작업의 자동화
    • 사용자 요구 기능의 일관성 검증에 유리
    • 테스트 결과 값에 대한 객관적인 평가 기준 제공
    • 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
    • UI가 없는 서비스의 경우에도 정밀한 테스트 가능
  • 단점
    • 도구 도입 후 도구 사용 방법에 대한 교육 및 학습이 필요
    • 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
    • 사용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자 필요

정적 분석 도구 Static Analysis Tools

  • 프로그램을 실제로 실행해 보지 않고 분석하는 방법
  • 대부분의 경우 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용
  • 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해를 기반한 자동화된 도구 활용한 분석 수행

테스트 실행 도구 Test Execution Tools

  • 테스트를 위해 작성된 스크립트를 실행
  • 데이터 주도 접근
    • 테스트 데이터를 스프레드 시트에 저장하고, 이 데이터를 읽고 실행할 수 있도록 함
    • 다양한 테스트 데이터를 이용하여 동일한 테스트 케이스르 반복 실행
    • 스크립트 언어에 익숙하지 않은 테스터도 미리 작성된 스크립트에 테스트 데이터만 추가하여 쉽게 테스트를 수행
  • 키워드 주도 접근 방식
    • 스프레드시트에 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 저장
    • 키워드를 이용하여 테스트 수행 동작을 정의
    • 테스트 대상 애플리케이션의 특성에 맞추어 키워드에 대해 테일러링을 수행

성능 테스트 도구 Performance Test Tools

  • 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 도구

테스트 통제 도구 Test Control Tools

  • 테스트 계획 및 관리를 위한 테스트 관리 도구
  • 테스트 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구
  • 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원하기 위한 결함 추적/관리 도구
  • 조직의 요구사항에 최적화된 형태의 정보를 생성, 관리하기 위하여 <u트스프레드시트 등 다른 도구들과 연계하여 사용

테스트 장치 Test Harness

  • 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성
  • 구성요소
    • 테스트 드라이버
      • 상향식 테스트에 필요
    • 테스트 스텁
      • 하향식 테스트에 필요
    • 테스트 슈트
      • 대상 모듈, 테스트 케이스 집합
    • 테스트 케이스
      • 입력 값, 실행조건, 기대 결과
    • 테스트 스크립트
      • 자동화된 스크립트 실행 절차
    • 목 Mock 오브젝트
      • 행위를 조건부로 사전에 입력

테스트 자동화 도구

자동화도구

소프트웨어 테스트 관리 지원 도구

  • 실행된 테스트와 테스트 활동 관리를 지원하며 테스트 실행 도구나 결함 추적 도구, 요구사항 관리 도구와의 인터페이스 역할
  • 결함이 발견, 분배, 수정, 확인, 종료되는 결함의 생명주기 관리
  • 테스트 진행 상황에 대한 리포트 생성, 발견된 결함의 정량적인 분석을 지원
  • 오픈 소스
    • 결함관리
      • Mantis, Bugzilla
    • 테스트 케이스 관리 도구
      • Testlink
    • 형상 관리 도구
      • CVS, SVN, Git, Bazar
    • 커뮤니케이션 도구
      • MediaWiki, Dokuwiki
    • 통합프로젝트 지원 도구
      • Trac, nForge, Gforge
  • 상용 소스
    • 버그 추적
      • JIRA, TPMS, Test Director
    • 형상 관리
      • Visual Sourcesafe, IBM, Clear Case
    • 커뮤니케이션
      • Confluence

소프트웨어 정적 분석 지원 도구

  • 리뷰 프로세스에 관한 정보를 저장, 리뷰 코멘트를 저장
  • 정적 분석 도구는 동적 테스트를 하기 전에 결함을 발견할 수 있도록 지원
  • 코딩 표준을 지킬 것을 강제하고 구조와 의존 관계를 분석
  • 소스 코드의 복잡도를 측정
  • 오픈소스
    • PMD
    • Valgrind
    • Find Bugs
    • CPPCheck
    • Corbetrua
  • 상용 소스
    • Coverity
    • IBM Rtional Software
    • PloySpace

소프트웨어 테스트 실행 및 로깅 지원 도구

  • 스크립트 언어의 도움으로 저장된 입력 값과 예상 결과를 이용하여 테스트를 실행하고 결과와 비교
  • 테스트 대상이 실행되는 환경을 시뮬레이션, 테스트 Harness 도구
  • 오픈 소스
    • 테스트 프레임워크
      • xUnit, TestNG, FIT
      • Jmock, Easymock, Googlemock
    • 지속적인 통합
      • CruiseControl, hudson, jenkinson
    • 빌드자동화
      • Ant, Maven, Make
    • 실행자동화
      • STAF/STAX, Selenium
  • 상용 소스
    • WinRunner
    • Jtest
    • CodeScroll

소프트웨어 성능 및 모니터링 도구

  • 소프트웨어가 실행도중에만 발생하는 시간 의존성과 메모리 누수와 같은 결함 발견에 활용
  • 소프트웨어 성능/부하/스트레스를 테슽
  • 특정 시스템 리소스의 사용량을 지속적으로 분석하고 확인
  • 오픈 소스
    • Jmeter
    • OpenSTA
    • allomon
  • 상용 소스
    • E-load
    • LoadRunner
    • Webload
    • Robot

애플리케이션테스트케이스설계 - 핵심정리

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

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

  • 테스트에 대한 기본 개념 및 테스트의 기법을 파악하고 테스트 케이스 작성 기법
  • 소프트웨어 테스트 기법 분류에서는 소프트웨어 내부 구조 참조 여부에 따른 분류, 테스트 설계의 근원에 따른 분류
  • 테스트 케이스 작성 방법

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

  • 테스트 시나리오 개념 및 작성시 유의사항
  • 테스트 환경구축의 개념 및 유의사항
  • 소프트웨어 테스트 관련 국제표준에 의한 테스트 지식 체계
API API오용 Anaconda Beacon Bluetooth CRUD분석 Camera ChatBot DB관련신기술 DB관리기능 DB서버 DB표준화 ER다이어그램 ER모델 ETL Flask HW관련신기술 IDE도구 IP IoT Machine_Translation NLP배경 ORM프레임워크 Package Recurrent Neural Network SDLC SW개발방법론 SW개발방법론선정 SW개발보안정책 SW개발표준 SW관련신기술 Sequence_Tagging ShellScript TCP_UDP Vector WordCloud c 자료형 class embedding konlpy python python 자료형 가설검증 개발환경구축 객체지향프로그래밍언어 관계데이터베이스모델 관계데이터언어 국제표준제품품질특성 네트워크7계층 네트워크관련신기술 네트워크장비 네트워크침해공격용어 논리데이터모델개요 논리데이터모델품질검증 논리적데이터모델링 논문 단위모듈구현 단위모듈테스트 데이터검증 데이터모델개념 데이터베이스무결성 데이터베이스백업 데이터베이스암호화 데이터베이스용량설계 데이터베이스이중화구성 데이터베이스정규화 데이터분석 데이터분석 - 순열 - 조합 데이터분석 - 정규분포 데이터분석 - 통계기초 데이터사이언스개념 데이터입출력 데이터전환수행계획 데이터정제 데이터조작프로시저작성 데이터조작프로시저최적화 데이터조작프로시저테스트 데이터지역화 데이터타입 데이터표준확인 데이터품질분석 라이브러리 로그분석 메모리관리 모델화 몬테카를로 물리데이터모델설계 물리데이터모델품질기준 물리데이터저장소구성 물리요소조사분석 반정규화 배치프로그램 변수 보안기능 보안솔루션 보안아키텍처 보안취약성식별 분산데이터베이스 분산분석 비용산정모델 빌드자동화도구 사용자정의함수 상관분석 서버개발프레임워크 서버인증 서버장비운영 서버접근통제 서비스공격유형 선언형언어 세션통제 소스코드인스펙션 소프트스킬 소프트웨어개발프레임워크 소프트웨어버전관리도구 소프트웨어연계테스트 슈퍼디엠지 스크립트언어 시스템카탈로그와뷰 암호알고리즘 애플리케이션모니터링도구 애플리케이션배포도구 애플리케이션성능개선 애플리케이션테스트결과분석 애플리케이션테스트시나리오작성 애플리케이션테스트케이스작성 애플리케이션통합테스트수행 애플리케이션패키징 연산자 예외처리 오답노트 오류데이터측정 오류처리 오류처리확인및보고서작성 요구공학방법론 운영체제 웹서버 이벤트 인터넷구성의개념 인터페이스구현검증 인터페이스기능확인 인터페이스보안 입력데이터검증및표현 자료구조 자연어처리 재사용 절차적프로그래밍언어 정보보안침해공격용어 정보처리기사 제품소프트웨어매뉴얼작성 집계성DCL작성 체크리스트 초기데이터구축 취약점분석 칼럼속성 캡슐화 코드오류 클러스터링 키종류 테일러링기준 트랜잭션인터페이스 트리거 파일처리기술 파티셔닝 패키지 포트포워딩 프로세스스케줄링 프로토타입 한국어임베딩 핵심정리 현업도구 형상관리도구 환경변수 회귀분석
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×