애플리케이션 테스트 관리

뿌엑·2022년 4월 24일
0

정보처리기사

목록 보기
16/20

소프트웨어 테스트 유형

  • 정적 테스트
    • 테스트 대상을 실행하지 않고, 구조를 분석하여 논리성을 검증하는 테스트
    • 리뷰, 정적 분석
  • 동적 테스트
    • 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함 검출
    • 화이트박스 테스트, 블랙박스 테스트, 경험기반 테스트

정적 테스트

  • 리뷰(Review)
    • 소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행 상황을 점검하기 위한 활동으로 전문가가 수행한다.

    유형

    • 관리 리뷰(Management Review)
      • 프로젝트 진행 상황에 대한 전반적 검토를 바탕으로 범위, 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰
    • 기술 리뷰(Technical Review)
      • 정의된 계획 및 명세를 준수하는지에 대한 검토를 수행하는 리뷰
      • 변경 사항이 적절히 구현됐는지 평가하고 여러 대안을 추천하거나 검토
    • 인스펙션(Inspection)
      • 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외 다른 전문가 혹은 팀이 검사하여 문제를 식별하고 문제에 대한 올바른 해결을 찾아내는 형식적 검토 기법
    • 워크스루(Walk Throughs)
      • 검토 자료를 회의 전 배포하여 사전검토한 후 짧은 시간 회의하는 형태로 리뷰를 통해 문제 식별, 대안 조사, 개선 활동, 학습 기회를 제공하는 가장 비형식적인 검토 기법

동적 테스트

  • 화이트박스 테스트
    • 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트 기법

    유형

    • 구문 커버리지(문장 커버리지)
      • 프로그램 내 모든 명령문을 한 번 이상 수행하는 테스트 커버리지
    • 결정 커버리지
      • 각 분기의 결정 포인트 내 전체 조건식이 한 번 이상 참/거짓으로 수행하는 테스트 커버리지
    • 조건 커버리지
      • 각 분기 결정 포인트 내 개별 조건식이 한 번 이상 참과 거짓의 결과가 도출되도록 수행하는 테스트 커버리지
    • 조건/결정 커버리지
      • 전체 조건식 뿐 아니라 개별 조건식도 참 한번, 거짓 한번이 도출되도록 수행하는 테스트 커버리지
  • 블랙박스 테스트
    • 프로그램 사용자의 요구사항 명세를 보며 수행하는 테스트(기능 테스트) 기법

    유형

    • 동등분할 테스트
      • 입력 데이터의 영역을 유사한 도메인별로 유/무효값을 묶어 대푯값 테스트 케이스를 도출하여 테스트
    • 경곗값 분석 테스트
      • 테스트케이스를 등가분할한 후 경곗값 주변에서 오류가 나타날 가능성이 높기에 경곗값을 포함하여 테스트를 설계하여 테스트하는 기법
    • 결정 테이블 테스트
      • 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트하는 기법
    • 상태 전이 테스트
      • 테스트 대상, 시스템이나 객체의 상태를 구분하고 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 테스트하는 기법
  • 경험기반 테스트
    • 유사 소프트웨어나 유사 기술평가에서 테스터가 지닌 경험에 근거한 직관과 기술능력을 바탕으로 수행하는 테스트 기법

    유형

    • 탐색적 테스트(Exploratory Test)
      • 테스트 스크립트 또는 테스트 케이스를 문서로 작성하지 않고 경험에 바탕을 두고 탐색적으로 기능을 수행하며 테스트하는 기법
    • 오류 추정(Error Guessing)
      • 개발자가 범할 수 있는 실수를 추정하고, 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법
    • 체크리스트(Checklist)
      • 테스트하고 평가할 내용과 경험을 분류하여 나열한 뒤, 하나씩 확인하는 테스트 기법
    • 특성테스트(Characteristics Test)
      • 국제표준인 ISO/IEC 9126 등의 품질모델에 있는 품질 특성을 염두하여 경험적으로 테스트 케이스를 설계하고 테스트하는 기법

테스트 목적에 따른 분류

  • 회복 테스트(Recovery Testing)
    • 시스템에 고의로 실패를 유도하고 시스템의 정상복귀 여부를 테스트하는 기법
  • 안전 테스트(Security Testing)
    • 불법적 소프트웨어가 접근하여 시스템을 파괴하지 못하도록 소스 코드 내 보안결함을 테스트하는 기법
  • 성능 테스트(Performance Testing)
    • 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법
  • 구조 테스트(Structure Testing)
    • 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법
  • 회귀 테스트(Regression Testing)
    • 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로 발생한 오류가 없는지 확인하는 테스트 기법

성능 테스트 상세 유형

  • 부하 테스트(Load Testing)
    • 시스템 부하를 증가시키며 임계점을 찾는 테스트
  • 스파이크 테스트(Spike Testing)
    • 단시간에 사용자가 집중될 때 시스템의 반응을 확인하는 테스트
  • 내구성 테스트(Endurance Testing)
    • 장시간 시스템에 높은 부하를 가하며 시스템의 반응을 테스트하는 방식

테스트 시나리오 작성

  • 테스트 레벨(Test Level)
    • 테스트 레벨은 함께 편성되고 관리되는 테스트 활동의 그룹이다.

    종류

    • 단위 테스트
      • 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계
        • 자료구조 테스트, 실행경로 테스트, 오류처리 테스트, 인터페이스 테스트
    • 통합 테스트
      • 단위 테스트를 통과한 모듈 사이 인터페이스, 통합된 컴포넌트 간 상호작용을 검증하는 테스트 단계
        • 빅뱅 테스트, 샌드위치 테스트, 상향식 테스트, 하향식 테스트
    • 시스템 테스트
      • 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지 검증하는 테스트 단계
        • 기능·비기능 요구사항 테스트
    • 인수 테스트
      • 계약상 요구사항이 만족되었는지 확인하기 위한 테스트 단계
        • 계약 인수, 규정 인수, 사용자 인수, 운영상 인수, 알파·베타 테스트

애플리케이션 성능 분석

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

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

애플리케이션 성능 개선

  • 소스 코드 최적화
    • 소스코드 최적화는 읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것이다.
  1. 배드 코드(Bad Code)
  • 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
    • 외계인 코드(Alien Code)
      • 오래되거나 참고문서 혹은 개발자가 없어 유지보수 작업이 어려운 코드
    • 스파게티 코드(Spaghetti Code)
      • 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면에 비유한 표현
      • 정상 작동은 하나 이해하기 어려운 코드임
    • 알 수 없는 변수명
      • 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
    • 로직 중복
      • 동일한 로직을 중복하여 작성한 코드
  1. 클린 코드(Clean Code)
  • 잘 작성되어 가독성이 높고 단순하며, 의존성이 적고 중복을 최소화한 코드

    클린코드의 특징

    • 중복코드 제거로 애플리케이션의 설계가 개선된다.
    • 가독성이 높아 애플리케이션의 기능에 대해 쉽게 이해할 수 있다.
    • 버그를 찾기 쉬우며 개발 속도가 빨라진다.

0개의 댓글