제품소프트웨어 패키징 - 애플리케이션 배포 도구

제품소프트웨어패키징

애플리케이션 패키징 도구 개념

  • 애플리케이션을 배포하기 위한 패키징 시에 디지털 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공하여, 안전한 유통과 배포를 보장하는 도구이자 솔루션
  • 불법 복제로부터 디지털 콘텐츠의 지적 재산권을 보호해 주는 사용 권한 제어 기술, 패키징 기술, 라이선스 관리, 권한 통제 기술등을 포함

패키징 도구 활용 시 고려 사항

  • 반드시 암호화/보안 고려
    • 패키징 시 사용자에게 배포되는 소프트웨어임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안을 고려
  • 추가로 다양한 이기종 연동 고려
    • 패키징 도구를 활용하여 여러 가지 이기종 콘텐츠 및 단말기 간 DRM 연동을 고려
  • 사용자 편의성을 위한 복잡성 및 비효율성 문제 고려
    • 사용자 입장에서 불편해질 수 있는 문제를 고려하여, 최대한 효율적으로 적용
  • 애플리케이션 종류에 적합한 암호화 알고리즘 적용
    • 애플리케이션의 종류에 맞는 알고리즘을 선택하여 배포 시 범용성에 지장이 없도록 고려

DRM; Digital Rights Management

  • 디지털 콘텐츠의 무단 사용을 막아, 제공자의 권리와 이익을 보호해 주는 기술과 서비스
  • 불법 복제와 변조를 방지

디지털 저작권 관리의 특징

  • 저작권자와 콘텐츠 유통업자 사이의 거래구조 투명성을 제공
  • 사용가능 횟수, 유효기간, 사용환경 등의 사용 규칙을 제공
  • 이메일, 디지털미디어, 네트워크 등을 통한 자유로운 상거래 제공

저작권 관리 흐름

  • 콘텐츠 제공자, 분재자, 소비자 간의 패키징 배포 및 관리의 주제를 중앙의 클리어링 하우스에서 키 관리 및 라이선스 발급 관리
    저작권관리흐름도

저작권 관리 구성 요소

구성요소 설명
콘텐츠 제공자 콘텐츠를 제공하는 저작권자
콘텐츠 분배자 쇼핑몰 등으로써 암호화된 콘텐츠 제공
패키지 콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능
보안 컨테이너 원본을 안전하게 유통하기 위한 전자적 보안 장치
DRM 컨트롤러 배포된 콘텐츠의 이용 권한을 통제
클리어링 하우스 키 관리 및 라이선스 발급 관리

암호화/보안 기능 중심의 패키징 도구 구성 요소

구성요소 설명
암호화(Encryption) 콘텐츠및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
키 관리(Key Management) 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
암호화 파일 생성(Packager) 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
식별 기술(Identification) 콘텐츠에 대한 식별 체계 표현 기술
저작권 표현(Right Expression) 라이선스의 내용 표현 기술
정책 관리(Policy Management ) 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
크랙 방지(Tamper Resistance) 크랙에 의한 콘텐츠 사용 방지 기술
인증(Authentication) 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

제품소프트웨어 패키징 - 애플리케이션 패키징

제품소프트웨어패키징

  • 신규 개발, 변경, 개선된 제품 소프트웨어의 소스들로부터 모듈들을 빌드하고 고객의 편의성을 고려하여 패키징
  • 이전 릴리즈 이후의 변경, 개선 사항을 포함하여 신규 패키징한 제품 소프트에어에 대한 릴리즈 노트 작성
  • 저작권 보호를 위해 암호화/보안 기능을 제공하는 패키징 도구를 활용하여, 제품 소프트웨어의 설치, 배포 파일을 생성

애플리케이션 패키징 개념

  • 개발이 완료된 소프트웨어를 고객에게 전달하기 위한 형태로 패키징
  • 설치와 사용에 필요한 제번 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성
  • 소프트웨어에 대한 패치 개발과 업그레이드를 위하여 버전 관리를 수행

애플리케이션 패키징 특징

  • 애플리케이션 패키징은 개발자가 아닌 사용자 중심으로 진행
  • 신규 및 변경 개발 소스를 식별하고 이를 모듈화하여 상용 제품으로 패키징
  • 고객의 편의성을 위해 신규/변경 이력을 확인하고, 이를 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리
  • 사용자의 실행 환경을 이해하고 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징 진행

사용자 실행 환경 이해

  • 고객 편의성을 위해 사용자 실행 환경을 우선 고려하여 패키지 진행
  • 사용자 환경은 OS부터 시작하여 실행환경, 시스템 사양 및 고객의 사용 방법까지 상세 분류하여 실행 환경을 사전 정의
  • 여러 가지 실행 환경이 나오게 된다면 해당 경우에 맞는 배포본을 분류하여 패키징 작업을 여러 번 수행할 수도 있음

사용자 관점의 애플리케이션 패키징 고려사항

  • 사용자 시스템 수행 최소 환경 정의
  • 사용자가 직관적으로 확인할 수 있는 UI를 제공하고, 매뉴얼과 일치시켜 패키징 작업
  • 애플리케이션은 하드에어와 함께 통합 적용될 수 있도록, 패키징은 Managed Service 형태로 제공
  • 애플리케이션은 고객 편의성을 위해 안정적 배포가 가장 중요하고, 다양한 사용자 군의 요구사항을 반영하기 위해 패키징의 변경 및 관리를 고려하여 패키징 배포

애플리케이션 패키징 순서

  1. 기능 식별
    • 신규 개발 소스의 목적 및 기능을 식별
    • 입출력 데이터, 전체적인 기능 정의 및 데이터 흐름을 식별
  2. 모듈화
    • 모듈 단위 분류 및 모듈화를 순서에 맞게 진행
    • 수행을 위한 기능 단위 및 서비스 분류와 패키징 개념에서의 기능의 공유와 재활용 단위를 분류
  3. 빌드 진행
    • 애플리케이션빌드 도구를 활용한 빌드를 단위별로 진행
    • 신규 개발 소스 및 컴파일 결과물 준비
    • 정상 기능 단위 및 서비스 분류, 빌드 도구 확인 및 빌드 수행
  4. 사용자 환경 분석
    • 고객 편의성을 위한 사용자의 요구 사항 및 사용 환경을 사전 분석
    • 최소 사용자 환경 사전 정의
    • 모듈 단위의 여러 가지 기능별 사용자 환경테스트
  5. 패키징 적용 시험
    • 최종 패키징에 대해서 사용자 입장에서의 불편한 점 체크
    • 사용자 환경과 똑같은 상황으로 패키징을 적용하여 SW태스팅 수행
    • UI 및 시스템 상의 편의성 체크
  6. 패키징 변경 개선
    • 사용자 입장을 반영하여 패키징에서 변경 및 개선 진행
    • 패키징 적용 시 변견점 도출
    • 최소 사용자 환경에서 서비스 가능한 수준의 개선
    • 모듈 및 빌드 수정을 통한 개선 버전의 재배포를 실습

애플리케이션 릴리즈 노트 개념

  • 최종 사용자에게 전달되는 제품에 대한 정보 공유
  • 제품의 수정, 변경 또는 개선하는 정보가 포함
  • 릴리즈 정보들은 철저하게 테스트를 진행하고, 개발 팀에서 제공하는 사양에 대해 최종적으로 승인된 후 문서를 통해 배포

릴리즈 노트 작성 순서

  1. 모듈 식별
  2. 릴리즈 정보 확인
  3. 릴리즈 노트 개요 작성
  4. 영향도 체크
  5. 정식 릴리즈 노트 작성
  6. 추가 개선 항목 식별

릴리즈 노트 작성 항목

릴리즈 노트 작성 항목

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

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

1. 알고리즘

  • 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것
  • 정렬
    • 선택 정렬
    • 삽입 정렬
    • 버블 정렬
  • 그래프
    • 깊이우선탐색 DFS
    • 너비우선탐색 BFS
  • 탐색
    • 선형 탐색
    • 이진 탐색

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

  • 소스코드 최적화는 읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것
  • 클린코드의 작성원칙과 소스코드 최적화 기법
  • 소스코드 품질분석 도구의 이해
  • 정적분석
    • Pmd
    • cppcheck
    • SonarQube
    • Checkstyle
  • 동적분석
    • Avalanche
    • valgrind

애플리케이션테스트케이스설계 - 애플리케이션 성능 개선

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

소스코드 최적화 이해

  • 읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것으로, 소스 코드 품질을 위해 기본적으로 지킬 원칙과 기준을 정의

나쁜 코드

  • 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
  • 대표적인 사례로 처리 로직의제어가 정제되지 않고 서로 얽혀 잇는 스파게티 코드, 변수나 메소드에 대한 이름 정의를 알 수 없는 코드, 동일한 처리 로직이 중복되게 작성된 코드
  • 문제점
    • 스파게티 코드의 경우 잦은 오류가 발생할 가능성이 있음
    • 소스 코드 이해가 안 되어 계속 덧 붙이기 할 경우 코드 복잡도 증가

클린 코드 Clean

  • 잘 작성되어 가독성이 높고 단순하며 의존성을 줄이고, 종복을 최소하하여 깔끔하게 잘 정리된 코드
  • 효과성
    • 중복 코드 제거로 애플리케이션의 설계 개선
    • 가독성이 높으므로 애플리케이션의 기능에 대해 쉽게 이해 가능
    • 버그를 찾기 쉬워지며, 프로그래밍 속도가 빨라짐

클린 코드 작성 원칙

  • 가독성
    • 이해하기 쉬운 용어
    • 들여쓰기 기능
  • 단순성
    • 한번에 한 가지 처리 수행
    • 클래스 / 메소드 / 함수를 최소 단위로 분리
  • 의존성
    • 영향도를 최소화
    • 코드의 변경이 다른 부분에 영향이 없게 작성
  • 중복성
    • 중복된 코드를 제거
    • 공통된 코드를 제거
  • 추상화
    • 클래스 / 메소드 / 함수에 대해 동일한 수준으로 추상화
    • 상세 내용은 하위 클래스 / 메소드 / 함수에서 구현

소스코드 최적화 기법

  1. 클래스 분할 배치 기법
    • 클래스는 하나의 역할, 책임만 수행할 수 있도록 응집도를 높이고 크기를 작게 작성
  2. 느슨한 결합 기법
    • 클래스의 자료구조, 메소드를 추상화 할 수 있는 인터페이스 클래스를 이용하여 클래스 간의 의존성을 최소화
  3. 코딩 형식 기법
    • 줄바꿈으로 개념을 구분하고 종속함수를 사용
    • 호출하는 함수를 먼저 배치하고 호출되는 함수는 나중에 배치
    • 변수 선언 위치를 지역 변수는 각 함수 맨 처음에 위치
  4. 주석문 사용을 습관화

소스코드 품질분석 도구의 개념

  • 소스 코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도, 코드 내에 존재하는 메모리 누수 현황, 스레드의 결함 등을 발견하기 위하여 사용하는 분석 도구
  • 정적 분석 도구
  • 동적 분석 도구

애플리케이션테스트케이스설계 - 알고리즘

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

  • 정렬
    • 선택 정렬
    • 삽입 정렬
    • 버블 정렬
  • 그래프
    • 깊이우선탐색 DFS
    • 너비우선탐색 BFS
  • 탐색
    • 선형 탐색
    • 이진 탐색

Github Repository
Notion 개념정리

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

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

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

  • 통합 테스트에 대한 개념 이해, 통합 테스트 수행 방법
  • 테스트 자동화 도구와 개념 유형

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

  • 소프트웨어 결함관련 용어, 테스트 완료 조건
  • 테스트 결함 관리 개념과 결함 관리 도구

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

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

소프트웨어 결함

  • 용어
  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. 애플리케이션 테스트 시나리오 작성

  • 테스트 시나리오 개념 및 작성시 유의사항
  • 테스트 환경구축의 개념 및 유의사항
  • 소프트웨어 테스트 관련 국제표준에 의한 테스트 지식 체계

애플리케이션테스트케이스설계 - 애플리케이션테스트시나리오작성

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

테스트 시나리오 개념

  • 테스트 수행을 위한 여러 테스트 케이스의 집합
  • 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서

테스트 시나리오 작성시 유의사항

  • 테스트 항목을 하나의 시나리오에 모두 작성하지 않고, 시스템별, 모듈별, 항목별 테스트 시나리오를 분리하여 작성
  • 고객의 요구사항과 설계 문서 등을 토대로 작성
  • 테스트 항목
    • 식별자 번호
    • 순서 번호
    • 테스트 데이터
    • 테스트 케이스
    • 예상 결과
    • 확인

테스트 환경 구축의 개념

  • 개발된 응용 소프트웨어가 실제 운영 시스템에서 정상적으로 작동하는지 테스트 할 수 있또록 하기 위하여 실제 운영 시스템과 동일 또는 유사한 사양의 하드웨어, 소프트웨어, 네트워크 등의 시설을 구축하는 활동

테스트 환경 구축시 유의점

  1. 테스트 환경의 분리
    • 개발을 위한 환경과 테스를 위한 환경이 물리적으로 분리되는 것이 좋음
  2. 가상 머신 기반의 서버나 클라우드 환경의 이용
    • 별도의 테스트가 어려울시 가상머신 서버나 클라우드 환경을 이용하여 일시적 테스트하는 것도 좋음
  3. 네트워크 분할과 공유디스크 관리
    • 물리적 환경 분리가 불가능하면 VLAN과 같은 소프트웨어를 이용하여 논리적으로 분할
  4. 연동 시스템의 테스트 환경
    • 다른 시스텤과 연동을 위한 시스템의 경우 연동 시스템에 대한 테스트 환경이 별도 구성

소프퉤어 테스트 관련 국제표준

  • IS0/IEC 29119
    테스트 지식 체계 IS0 29119

테스트 지식 체계 개념

  • 전체 시리즈에 대한 가이드를 제공해 주는 부분
  • 소프트웨어 테스팅 개념
  • 조직과 프로젝트 관점에서의 소프트웨어 테스팅
  • 소프트웨어 생명 주기 모델에서의 일반적인 테스팅 프로세스
  • 위험 기반 테스팅
  • 테스트 서브 프로세스

테스트 프로세스

  • 조직, 테스트 관리, 동적 테스트의 3가지 수준의 다계층 프로세스 모델을 설명
  • 다계층 프로세스 모델
  • 조직의 테스트 프로세스
  • 테스트 관리 프로세스
  • 동적 테스트 프로세스

테스트 문서화

  • 테스트 프로세스 단계별 산출문의 견본제시 및 작성방법 설명
  • 조직의 테스트 프로세스 문서
  • 테스트 관리 프로세스 문서
  • 동적 테스트 프로세스 문서

키워드 주도 테스팅

  • 사전 정의된 키워드의 모음으로 테스트 케이스를 만드는 것
  • 테스트 단계에서 자연어 대신 키워드를 사용함으로써 테스트 케이스는 이해하기 쉽고 유지보수가 용이
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

×