ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정보처리기사 실기 요약[애플리케이션 테스트 관리 - Chapter7](정처기)
    정보처리기사 2021. 6. 2. 21:09
    반응형

    정보처리기사 실기 정리는 제가 직접 수기로 작성하여 요약한 내용이기 때문에 조금의 오타가 있을 수 있습니다.

    Chapter10 - 프로그래밍 언어 활용

    Chapter11 - 응용 SW 기초 기술 활용

    Chapter2 - 데이터 입출력 구현

    본 3파트는 학교 OS, DB 수업과 코딩 테스트를 준비하면서 다른 과목들의 암기 시간을 늘리기 위해 정리(암기)하지 않고 갔습니다.

    하지만 양이 많고, 가장 중요하면서 최소 4문제 이상 나오는 파트이기 때문에 준비를 잘해야하는 파트입니다.

    시간이 된다면 추후에 추가하겠습니다.

     

    애플리케이션 테스트 관리

    Chapter7

    응용 소프트웨어
    시스템 소프트웨어 : 응용 소프트웨어 실행하기 위한 플랫폼제공, HW동작, 사용자가 시스템을 조작하도록 설계된 SW
    미들웨어 : 분산 환경에서 타기종 간 환경을 연결하여 원만한 통신을 이루어질 수 있게 도와주는 SW
    응용 소프트웨어 : OS 기반에서 작동하는 다양한 기능을 제공하는 SW

    SW 테스트
    SW 개발 단계에서 사용자 요구사항에 만족하는지 SW결함을 찾는 활동

    3가지 관점
    품질, 오류, 오류 예방

    소프트웨어 테스트 원리
    테스팅은 결함은 존재함을 밝히는 활동
    완벽한 테스팅은 불가
    테스팅은 개발 초기에 해야함
    결함 집중(파레토 법칙) : 2대8 법칙, 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상, 결함 대부분이 특정한 모듈에 집중되어 발생
    살충제 패러톡스 : 같은 테스트 케이스로 반복 실행하면 결함을 발견할 수 없으므로 주기적으로 테스트 케이스 검토, 개선
    테스팅은 정황에 의존
    오류-부재 궤변 : 사용자 요구사항을 만족하지 못하는 오류를 발견하고 그 오류를 제거해도, 해당 어플리케이션의 품질이 높다고 말할 수 없음

    소프트웨어 테스트 프로세스
    테스트 계획, 테스트 분석, 테스트 케이스 및 시나리오 작성, 테스트 수행, 테스트 결과 평가 및 리포팅

    소프트웨어 테스트 산출물
    테스트 계획서 : 테스트 목적, 범위를 정의한 문서
    테스트 케이스 : 테스트를 위한 설계 산출물, 응용 SW가 사용자 요구사항을 만족하는지 확인하기 위해 입력값, 실행조건, 기대 결과로 구성된 테스트 항목을 기술한 명세서
    테스트 시나리오 : 테스트 수행을 위한 여러 개의 테스트 케이스 집합
    테스트 결과서

    테스트 케이스
    구현된 애플리케이션이 초기 요구사항을 만족하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과로 구형된 항목의 명세스를 이용하는 명세 기반 테스트(사용자 요구사항을 만족하는지 명세함) 설계 산출물

    테스트 오라클
    참 오라클 : 모든 입력값에 적합한 결과를 생성해 발생한 오류를 모두 검출
    일관성 검사 오라클 : 애플리케이션 변경이 있을때, 수행 전후 결과값이 같은지 확인
    샘플링 오라클 : 임의로 선정한 몇개의 입력값에 대해서만 기대결과를 제공
    휴리스틱 오라클 : 임의의 입력값에 대해 옳은 결과 제공, 나머지는 휴리스틱(추정)

    테스트 시나리오
    여러 테스트 케이스 집합, 테스트 케이스의 동작 순서를 기술한 문서
    시스템별, 모듈별, 항목별로 분리해서 테스트 시나리오 작성

    테스트 환경 구축
    하드웨어 기반, 소프트웨어 기반, 가상 시스템 기반

    V-모델
    애플리케이션 개발 단계에 따라 단위, 통합, 시스템, 인수, 설치 테스트로 분류
    애플리케이션을 총체적으로 관리하기 위한 테스트 활동 묶음

    검증 : 제품이 명세서대로 완성되었는지 확인하는 단계
    확인 : 사용자의 요구사항을 잘 수행하고 있는지 사용자의 시각에서 생산된 제품의 결과를 테스트하는 것

    단위테스트
    개발자가 원시 코드 대상으로 다른 부분과 연계되는 부분은 고려X, 각각 단위 자체에만 집중하여 테스트
    통합테스트
    SW/HW 컴포넌트 간 인터페이스 및 연동 기능을 구조적으로 접근해 테스트
    시스템 테스트
    시스템 성능과 관련된 요구사항이 완벽히 수행되는지 테스트
    인수 테스트
    실사용자 환경에서 테스팅하여 수행하는 주체는 사용자

    프로그램 실행 여부에 따른 테스트
    동적 테스트 : 애플리케이션을 직접 실행해 오류를 찾음, 소프트웨어 모든 단계에서 테스트.
      종류
      블랙박스 테스트(기능 테스트)
      소프트웨어가 수행할 특정 기능을 알리기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트
      - 동치 분할 검사 : 입력 조건에 타당한 입력 자료와 그렇지 않은 자료의 개수를 균등하게 나눠 테스트 케이스 작성
      - 경계값 분석 : 입력 조건 경계값에서 오류 발생할 확률이 크다는 것을 활용해 경계값을 테스트 케이스로 선정
      - 원인-효과 그래프 검사 : 입력 데이터간 관계와 출력에 영향을 미치는 상황을 체계적으로 분석
      - 오류 예측 검사 : 다른 테스트 기법으로는 찾기 어려운 오류를 찾아내는 보충적 검사(과거 경험이나 감각으로 테스트)
      - 비교 검사 : 여러 버전의 프로그램에 입력해 결과가 같은지

      화이트박스 테스트
      모든 원시코드를 오픈시킨 상태에서 코드의 논리적 모든 경로를 테스트
      - 기초 경로 검사 :  Tom McCabe가 제시, 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정 
      - 제어 구조 검사 : 
         조건 검사(프로그램 모듈 내에 논리적 조건을 테스트하는 테스트 케이스 설게 기법)
         루프 검사(프로그램의 반복구조에 초점을 맞춰 실시한느 테스트 케이스 설계 기법)
         데이터 흐름 검사(프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시)
      검증 기준
      문장, 분기, 조건, 분기/조건

    정적 테스트 : 애플리케이션 실행하지 않고, 명세서나 소스코드 대상으로 분석하는 테스트
      종류
      코드 워크쓰루 : 코드 작성한 프로그래머가 4~5명 정도의 프로그래머에게 어떤 형식으로 발표하는 것, 검토자들이 회의에서 피드백을 함
      인스펙션 : 개발팀에서 작성한 소스코드를 분석해 개발 표준 위배, 잘못 작성된 부분을 수정하는 작업

    테스트 목적에 따른 테스트
    성능, 회복, 구조, 회귀, 안전, 강도, 병행

    테스트 기반 테스트
    구조기반, 명세 기반, 경험 기반

    단위 모듈
    소프트웨어 구현에 필요한 다양한 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
    모듈화 원리
    분할과 지배 : 복잡한 문제를 분해해 모듈 단위로 해결
    정보 은폐 : 어렵거나 변동 가능석 있는 모듈은 타 모듈로 부터 은폐
    자료 추상화 : 함수 내 자료 구조의 표현 명세를 은폐, 자료와 자료에 적용 가능한 오퍼레이션 함께 정의
    모듈의 독립성 : 낮은 결합도, 높은 응집도

    단위 모듈테스트
    프로그램 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증
    종류 : 블랙박스,화이트박스 테스트

    테스트 커버리지
    기능기반 : 테스트 대상 애플리케이션의 전체 기능을 모수로 하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법
    라인 : 애플리케이션 전체 소스코드의 Line수를 모수로 테스트 시나리오가 수행한 소스코드의 Line 수를 측정하는 방법
    코드 : 프로그램의 소스코드의 테스트 수행 정도를 표시

    코드 커버리지
    프로그램 소스코드의 테스트 수행 정도를 표시
    종류
    구문 : 코드 구조 내 모든 구문에 대해 한번 이상 수행하는 테스트 커버리지
    조건 :  결정 포인트 내의 모든 개별 조건식에 대해 수행하는 테스트 커버리지
    결정 : 결정 포인트 내의 모든 분기문에 대해 수행하는 테스트 커버리지
    변경/조건 : 결정 포인트 내 다른 개별 조건식 결과에 상관 없이 독립적으로 전체 조건의 결과에 영향을 주는 커버리지
    다중 조건 :모든 개별 조건식의 True, False 조합 중 테스트에 실행된 조합을 측정

    테스트 자동화 도구
    고려사항
    그때그때 맞는 적절한 도구 선택, 프로젝트 일정 계획시 자동화 도구 고려, 테스트 엔지니어 투입 시기 계획(초기에)
    유형
    정적 : 실행 안하고 소스코드 분석으로 결함을 발견하는 도구
    테스트 실행 : 스크립트 언어를 사용해 테스트 실행하는 방법(데이터 주도 방식, 키워드 주도 방식)
    성능 테스트 : 가상의 사용자를 만들어 테스트 수행
    테스트 통제 : 테스트 계획 및 관리, 수행, 결함 관리 수행
    테스트 하네스 도구 : 소프트웨어 컴포넌트 테스트 할 수 있게하거나, 프로그램 입력을 받거나, 빠진 컴포넌트 기능을 대신하거나, 실행 결과와 예상 결과를 비교하기위해 동원하는 SW도구
      구성요소
         테스트 드라이버 - 상향식 테스트 시 하위 모듈 구동시 자료 입출력을 제어하기 위한 제어 모듈 
         테스트 스텁 - 하향식 테스트시 임시 제공되는 모듈
         테스트 슈트 - 일정한 순서에 의해 수행될 개별 테스트 집합 혹은 패키지
         테스트 케이스 - 요구에 맞게 개발되었는지 확인하기위해 입력과 예상 결과를 정의한것
         테스트 스크립트 - 테스트 케이스 수행 결과를 보고할 목적으로 명령어, 이벤트 중심의 스크립트 언어로 작성한 파일
         목 오브젝트 - 테스트를 위해 사용자 행위를 미리 조건부로 입력하고 그 상황에 마즌 행위를 수행하는 객체

    통합 테스트
    각 모듈을 결합해 시스템을 완성하는 과정에서 모듈 간 인터페이스 or 통합된 컴포넌트 간에 상호작용 오류 및 결함을 찾아 해결하기 위한 테스트 기법
    비점진적 통합 방식
    모든 모듈이 결합된 프로그램 전체가 대상, 규모가 작은 SW에 적합, 오류 발견이나 장애위치 파악어려움
    종류 : 빅뱅(시스템을 구성하는 모듈을 각각 따로 구현하고 전체 시스템의 시험을 한번에 진행함, Driver, Stub없음, 실제모듈로 테스트)

    점진적 통합 방식
    단계적으로 통합하며 테스트, 오류 수정 쉬움, 인터페이스 관련 오류 테스트
    종류 : 상향식 테스트, 하향식 테스트

    샌드위치 테스트
    하위 프로젝트가 있는 대규모 프로젝트에 사용하는 방식
    상향식 + 하향식 테스트, Stub과 Driver의 필요성이 매우 높은 방식이며 비용이 많이 들어감 

    회귀 시험
    새로운 코드 변경사항이 기존 기능에 부작용이 없어야 함을 확인하기 위해 수행
    Retest All : 기존에 축적된 테스트 케이스 및 데이터 전부 재사용 
    Selective : 변경 대상 위주로 영향 범위를 결정하여 테스트
    Priority : 시스템의 핵심 기능을 위주로 우선순위를 정해 테스트

    결함 관리
    에러, 결함(결점, 버그), 실패

    결함 심각도 : 치명 - 주요 - 보통 - 가벼운 - 단순

    결함 관리 도구
    Mantis : 소프트웨어 설계 시 단위별 작업 내용을 기록할 수 있어 결함 및 이슈 관리, 추적을 지원하는 도구
    Trac : 결함 추적 및 통합 관리르 지원하는 오픈소스도구
    Bugzilla : 결함을 지속해서 관리하고 심각도와 우선순위를 지정할 수 있는 오픈소스 도구
    Redmine : .프로젝트 관리 및 결함 추적 도구
    JIRA : 아틀라시안에서 제작한 PHP로 개발된 결함 상태 관리 도구

    결함 추적 순서
    결함 등록 - 결함 검토 - 결함 할당 - 결함 수정 - 결함 조치 보류 - 결함 해제

    애플리케이션의 성능을 측정하기 위한 지표
    처리량, 자원 사용률, 응답 시간, 경과 시간

    애플리케이션 성능 저하 원인
    1. DB연결 및 쿼리 실행 시 발생되는 성능 저하 원인(DB Link, 불필요한 DB Fetch, 연결 누수와 부적절한 커넥션 풀 크기)
    2. 내부 로직을 인한 성능 저하(인터넷 접속 불량, 특정 파일 다운로드 업로드 등으로)
    3. 외부 호출로 인한 성능 저하(트랜잭션 수행중 외부 트랜잭션 장시간 요청, 타임아웃발생시)
    4. 잘못된 환경 설정이나 네트워크 문제

    오픈소스 성능 테스트 도구 : JMeter, LoadUI, OpenSTA
    오픈소스 성능 모니터링 도구 : Scouter(통합/실시간 모니터링 및 튜닝에 최적화), Zabbix(웹 기반 서버, 서비스, 애플리케이션 모니터링 툴)

    소스코드 최적화 유형
    클래스 분할 배치, 좋은 이름 사용, 코딩 형식 준수, 느슨한 결함, 주석 사용

    소스코드 품질 분석
    정적 분석 도구
    소스코드상의 잠재적 실행오 류나 코딩 표준 위배 사항등 보안 약점 검출
    검출된 약점을 수정 보완해 소프트웨어 안전성을 강화, 향후 발생하는 오류 수정 비용을 줄임
    기법 : 소스코드 검증, 코드 리뷰, 리버스 엔지니어링(시스템의 기술적 원리를 구조 분석을 통해 발견하는 방법)
    종류 
    pmd : 미사용 변수, 최적화 되지 않은 코드 등 결함 유발 가능 코드 검사 
    cppcheck : C/C++ 코드에 대한 메모리 누수, 오버풀로 분석
    SonarQube : 중복 코드, 복잡도, 코딩 설계 등을 분석하는 소스 분석 통합 플랫폼
    checkstyle : Java 코드에 대해 소스코드 표준을 따르고 있는가를 분석

    동적 분석 도구
    소프트웨어가 실행 중인 환경에서 입/출력 데이터의 변화 및 사용자 상호작용에 따른 변화를 점검한느 분석 기법
    기법 : 디버깅, 스트레스 테스트, 모의 해킹, 리버스 엔지니어링
    종류
    Avalanche : 프로그램 내 존재하는 메모리 및 스레드 결함을 분석
    Valgrind : 프로그램 내에 존재하는 메모리 및 스레드 결함 분석 도구

    정적분석과 동적 분석 비교
    정적분석 : 소스코드를 대상, 오염분석과 패턴 비교로 평가, 애플리케이션 개발단계에서 진행
    동적 분석 : 실제 프로그램 대상, 애플리케이션 실제 실행으로 평가, 애플리케이션 개발 완료 단계에서 진행

    반응형
Designed by Tistory.