소프트웨어 개발 ( 애플리케이션 테스트 관리 )

Codren·2021년 3월 13일
0

소프트웨어 개발

목록 보기
4/5

정보처리기사 2과목 소프트웨어 개발 (애플리케이션 테스트 )


Section 1. 소프트웨어 테스트

1. 소프트웨어 테스트

노출되지 않은 결함(= 오류)을 찾기 위해 소프트웨어를 작동시키는 행위 또는 절차


2. 테스트 절차

    ① 계획과 통제
    ② 분석과 설계
    ③ 테스트 구현 및 실행
    ④ 테스트 완료 조건의 평가와 리포팅
    ⑤ 테스트 마감



3. 테스트의 기본 원리

  • 테스트는 결함(오류)을 밝히는 활동 (개발 초기부터 수행)

  • 모든 소프트웨어는 결함(오류) 존재 (= 결함이 발견되지 않았다고 해서 결함이 없는 소프트웨어가 아님)

  • 살충제 패러독스 - 동일한 테스트 반복 수행하면 결함을 찾을 수 없다 -> 테스트를 리뷰하고 개선

  • 파레토(Pareto) 법칙 - 소프트웨어의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다.



4. 테스트 케이스란 ?

프로그램의 특정 일부분이 잘 수행되는가, 요구사항을 준시하는가를 확인하기 위해 입력 값, 실행조건, 기대결과 등으로 구성된 테스트 항목의 명세서



5. 테스트 시나리오란 ?

테스트 케이스의 집합, 테스트 케이스의 동작 순서를 기술한 문서 (절차 명세 문서)

  •  테스트 항목을 하나의 시나리오에 모두 작성하지 않고, 시스템별, 모듈별, 항복별로 테스트 시나리오 분리



6. 테스트 오라클이란 ?

테스트 수행 결과가 참인지 거짓인지 판단하기 위해 미리 정의된 참 값을 대입하여 비교하는 방법

    ① 오라클 - 모든 입력값의 기대한 결과값 확인
    ② 플링 오라클 - 특정 몇몇 입력 값들에 대해
    ③ 리스틱 오라클 - 샘플링 오라클 + 나머지는 경험에 의한 처리
    ④ 관성 검사 오라클 - 이전 수행결과와 현재 수행결과를 비교 검증
        * 참샘휴일



7. 테스트 레벨(단계) = V 모델

SW 개발 주기에 대응되는 테스트항목을 표시한 V자형 모델

  • 인수 테스트 (= Validation)
    - 알파 테스트 : 개발자가 제공하는 환경에서 사용자와 개발자 함께 테스트
    - 베타 테스트 : 제한되지 않은 환경에서 다수의 사용자가 사용 후 개발자에게 통보



8. 테스트 기법

  • 분석기법 - 동적 분석 , 정적 분석
  • 설계 기법 - 구조 기반, 명세 기반, 경험 기반
  • 자동화 기법 - 설계 , 실행/모니터링, 관리
  • 실행 기법 - 화이트 박스, 블랙 박스



9. 테스트 실행 기법     중요 !!

  • 화이트 박스
    - 개발자 관점에서 소스코드(원시코드) 내부를 오픈한 상태로 논리적인 모든 경로 검사
    - 기본 경로 테스팅, 데이터 흐름 테스팅, 루프 테스팅, 조건 테스팅
  • 블랙 박스
    - 사용자 관점에서 입출력 기준으로 수행하여 기능을 검사
    - 동등 분할 테스팅, 경계값 분석 테스팅 (입력 값을 경계값으로 설정), 비교, 원인 효과 그래픽 등등



Section 2. 통합 테스트

1. 통합 테스트란 ?

단위 테스트가 완료된 모듈들을 통합해서 테스트하는 활동


2. 통합 테스트 접근 전략

  • 빅뱅 방식 - 모든 컴포넌트를 사전에 통합하여 한 번에 테스트하는 방식 ( 잘 쓰이지 않음 )
  • 점증적인 방식 - 일부를 테스트하고 점차적(점증적)으로 컴포넌트를 늘려가면서 테스트하는 방식



3. 하향식 통합 / 상향식 통합

  • 하향식 통합 (Top Down)
    - 메인 제어 모듈부터 경로를 따라 하향식으로 통합, 아직 구현되지 않은 하위 모듈은 Stub을 이용

  • 상향식 통합 (Bottom Up)
    - 최하위 레벨 모듈부터 클러스터로 결합해 상향식으로 통합, 아직 구현되지 않은 상위 모듈은 Drive 이용



4. 테스트 자동화 도구

  • 결함 관리 도구 - Mantis, Bugzilla, JIRA, CVS/SVN/Git
  • 정적 분석 지원 도구 - PMD, Find Bug, Checkstyle, Cppcheck, Corbetura 등등
  • 동적 분석 지원 도구 - Valgrind, Avalanche
  • 성능 및 모니터링 지원 도구 - Jmeter, openSTA, allmon, EclipseTPTP 등등



Section 3. 애플리케이션 성능 개선

1. 알고리즘이란 ?

문제 해결을 위한 절차나 방법을 공식화한 형태로 표현한 것


2. 알고리즘 기술 방법

  • 순서도 (Flow chart), 자연어, 의사코드 (Pseudo code), 프로그래밍 언어 등


3. 순서도 (Flow chart)


4. 알고리즘 성능 표현 방법

  • 시간적 복잡도 - 입력 크기에 따라 알고리즘 수행에 필요한 시간의 양을 측정
  • 점근적 복잡도 - 입력의 크기가 무한에 가까워 졌을 때 꼭 필요한 부분의 시간적 복잡도 측정
  • 빅오 표기법 𝛰(n) 최악의 경우
  • 오메가 표기법 𝛀(n) 최선의 경우
  • 세타 표기법 𝚹(n) 빅오 + 오메가



5. 알고리즘 기법

    ① 분할과 정복 (Divide and Conquer) - 문제를 나누어 해결한 다음 다시 병합하여 답을 얻음
    ② 동적 계획법 (Dynamic Programming) - 과거에 구한 해를 활용하는 방식
    ③ 탐욕법 (Greedy) - 그 순간에 가장 좋다고 생각되는 것을 해답으로 활용
    ④ 백트랙킹 (Backtracking)



6. 정렬 알고리즘     중요 !!

  • 선택 정렬 - 제일 작은 값을 선택하여 맨 왼쪽으로 이동 (오름차순)

  • 버블 정렬 - 인접한 두 키를 비교하면서 제일 큰 값을 맨 오른쪽으로 이동 (오름차순)

  • 삽입 정렬 - 왼쪽(앞)의 키들과 비교하여 삽입할 위치를 지정한 후에 자료를 삽입 (나머지 값들 이동)

  • 병합 정렬 - 반으로 나누어 분할과 정복

  • 퀵 정렬 - '피벗'이라는 기준을 중심으로 왼쪽에는 작은 값 오른쪽에는 큰 값들로 나누어 분할과 정복

  • 힙 정렬 - 최대 힙, 최소 힙 트리를 구성하는 알고리즘으로 루트를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽

    * 선택 / 버블 / 삽입 정렬은 𝛰(n^2)     퀵 / 병합 / 정렬은 𝛰(nlogn)
    * 이미 정렬된 경우 가장 효율 좋은 정렬은 삽입, 가장 효율 안 좋은 정렬은


7. 리팩토링이란 ?

기능은 변경하지 않고 소스 코드를 수정 및 보완하여 가용성, 가독성, 성능을 높이는 기법

  • Move, Extract, Rename 사용
  • 문제 있는 코드(버그 등)를 찾아내어 향상 방법을 제공

0개의 댓글