티스토리 뷰

 

[Note]

정보처리기사 실기 요약 정리 공유

07. 애플리케이션 테스트 관리

 


 

 

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

파레토 법칙

  • 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상
  • ⇒ 20%의 모듈에서 80%의 결함이 발견되는 것을 말한다.

살충제 패러독스

  • 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함.
  • 테스트 케이스의 정기적 리뷰와 개선 및 다른 시각에서의 접근이 필요.

오류-부재의 궤변

  • 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 불 수는 없음.

소프트웨어 테스트 유형

  1. 정적 테스트
  2. 동적 테스트
    • 프로그램 실행을 요구하는 테스트
    1. 화이트 박스 테스트 (구조 테스트) = 프로그램 내부 로직을 보면서 수행하는 테스트
      • 제어 구조 테스트 : 소프트웨어의 논리적 복잡도 측정 후 수행 경로들의 집합을 정의하는 테스트.
      • 루프 테스트 : 프로그램의 루프 구조에 국한해서 실시하는 테스트
    2. 블랙 박스 테스트 (기능 테스트)
      • 동등 분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유효 값/무효 값을 그룹핑하여 대표 값 테스트 케이스를 도출하여 테스트하는 기법
      • 경계값 분석 테스트 : 등기분할 후 경계 값 부분에서 오류 발생 확률이 높기에 경계 값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법
      • 결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트하는 기법.
      • 상태전이 테스트 : 테스트 대상/시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법
      • 유스케이스 테스트 : 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법.
      • 분류 트리 테스트 : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법.
      • 페어와이즈 테스트 : Test data 값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법.
  1.  

                  = 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트

 

테스트 목적에 따른 분류 (회안강성 구회병)

  1. 회복 테스트
    • 시스템에 고의로 실패를 유도하고, 시스템의 정상적 복귀 여부를 테스트하는 기법
  2. 안전 테스트
    • 불법적인 소프트웨어가 접근하여 시스템을 파괴하지 못하도록 소스 코드 내의 보안적인 결함을 미리 점검하는 테스트 기법
  3. 강도 테스트
    • 시스템에 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지를 검증하는 테스트 기법
  4. 성능 테스트
    • 사용지의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법
  5. 구조 테스트
    • 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법
  6. 회귀 테스트
    • 회귀 테스트는 기능 추가나 오류를 제거/수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
    • 이전에 실행 테스트를 재실행하여 이전에 고쳐 졌던 오류가 재현되는지 검사하는 방법
  7. 병행 테스트
    • 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법

 

테스트 종류에 따른 분류 (명구경)

  1. 명세 기반 테스트
    • 프로그램의 요구사항 명세서를 기반으로 테스트 케이스를 선정하여 테스트하는 기법
  2. 구조 기반 테스트
    • 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 기법
  3. 경험 기반 테스트
    • 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한, 직관과 기술 능력을 기반으로 수행하는 테스트 기법
    테스트 케이스 (Test Case)
    • 명세 기반 테스트의 설계 산출물로 설계된 입력값, 실행조건, 기대결과로 구성된 테스트 항목의 명세서

 

테스트 레벨 종류 (단통시인)

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

 

가상머신 (Virtual Machine)

  • 컴퓨터상의 가상으로 컴퓨터를 구동시키는 것으로, 물리적인 하드웨어를 가상화하여, 하나의 물리적 하드웨어 상에서 여러 컴퓨터가 구동되는 것처럼 에뮬레이션 하는 것이다.

VLAN

  • 논리적으로 분할된 스위치 네트워크나 가상 기능을 가진 LAN 스위치 또는 ATM 스위치를 사용해서 물리적인 배선에 구애받지 않고 브로드캐스트 패킷이 전달되는 범위를 임의로 나누는 네트워크 기술.

알파 테스트

  • 새로운 하드웨어와 소프트웨어의 프로토타입이 운영되는 과정에서 상품으로 출시하기 전 개발 인력이 성능을 확인하는 테스트

베타 테스트

  • 선발된 잠재 고객으로 하여금 일정 기간 무료로 사용하게 한 후에 나타난 여러 가지 오류를 수정, 보완하는 테스트

브룩스의 법칙

  • 추가적인 인력투입은 오히려 프로젝트 기간을 연장시킨다.

 

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

하향식 통합

  • 메인 제어 모듈(프로그램)로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며, 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 '깊이-우선' 또는 '너비-우선'방식으로 통합된다.
  • 더미 모듈인 스텁 사용

💡 스텁 (Stub)

  • 모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈이다.
  • 스텁은 하위 모듈의 반환값만 전달하면 된다.

상향식 통합

  • 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행한다.
  • 더미 모듈인 드라이버 사용

💡 드라이버 (Driver)

  • 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈이다.
  • 드라이버는 상위 모듈 흐름을 작성해야 하기 때문에 스텁이 개발하기 쉽다.

 

통합 테스트 수행 방법 간 비교

  1. 빅뱅 테스트
    • 모든 모듈을 동시에 통합 후 테스트 수행
    • 드라이버/스텁 없이 실제 모듈로 테스트
    • 단시간 테스트 가능
    • 장애 위치 파악이 어려움
  2. 상향식 테스트
    • 최하위 모듈부터 점진적으로 상위 모듈과 함께 테스트
    • 테스트 드라이버 필요
    • 장애 위치 파악 쉬움
    • 이른 프로토타입이 어려움
  3. 하향식 테스트
    • 최상위 모듈부터 하위 모듈들을 통합하면서 테스트
    • 테스트 스텁 필요
    • 장애 위치 파악 쉬움
    • 이른 프로토타입 가능
    • 많은 스텁이 필요하다는 단점

테스트 하네스

  • 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성한다.
  • 구성요소 : 테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트

테스트 커버리지

  • 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준이며, 테스트의 정확성과 신뢰성을 향상시키는 역할을 한다.
  1. 유형
    • 구문 커버리지
      • 조건문 결과와 관계없이 구문 실행 개수로 계산
      • 프로그램 내의 모든 명령문을 적어도 한번 수행하는 커버리지
    • 결정 커버리지
      • 프로그램 내의 전체 결정문이 적어도 한 번은 참과 거짓의 결과를 수행하는 커버리지
    • 조건 커버리지
      • 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지
    • 조건/결정 커버리지
      • 전체 조건식 뿐만아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 커버리지
    • 변경 조건/결정 커버리지
      • 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지
    • 다중 조건 커버리지
      • 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

 

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

애플리케이션 성능 측정 지표 (처응경자)

  1. 처리량
    • 애플리케이션이 주어진 시간에 처리할 수 있는 트렌젝션의 수
    • 웹 애플리케이션의 경우 시간당 페이지 수로 표현
  2. 응답 시간
    • 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
    • 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
  3. 경과 시간
    • 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
  4. 자원 사용률
    • 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

LDAP (Lightweight Directory Access Protocol)

  • TCP/IP 위에서 조직화되고 비슷한 특성을 가진 객체들의 모임인 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜

 

 

 


틀린 내용이 있거나 문제가 있을시 알려주세요. 같이 공부해요 😊

이 글이 도움이 되셨다면 공감, 댓글 부탁드려요 👍🏻

댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday
공지사항
최근에 올라온 글