• [2020 정보처리기사 실기] Section 07. 애플리케이션 테스트 관리(4/4)

    2020. 4. 27. 21:59

    by. 위지원

    이전글

    2020/04/26 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기] Section 07. 애플리케이션 테스트 관리(3/4)

     

    결함 관리

     

    1. 결함이란

    소프트웨어가 개발자가 설계한것과 다르게 동작하거나 다른 결과를 발생시키는 것

     

    2. 결함 관리 프로세스

    결함 관리 프로세스 흐름도

    3. 결함 관리 측정 지표

    • 결함 분포 : 모듈/컴포넌트의 특정 속성에 해당하는 결함 수 측정
    • 결함 에이징 : 특정 결함 상태로 지속되는 시간 측정
    • 결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석

    4. 결함 추적 순서

     

    5. 결함 분류

    • 시스템
    • 기능
    • GUI
    • 문서

     

    6. 결함 심각도

    • High : 프로세스를 진행할 수 없도록 만드는 결함
    • Medium : 시스템 흐름에 영향을 미침
    • Low : 시스템 흐름엔 영향을 미치지 않음

    또는

    • Critical
    • Major
    • Normal
    • Minor
    • Simple

    7.결함 관리 도구

    • Mantis : 단위별 작업 내용을 기록할 수 있음

    • Trac : 결함을 통합하여 관리 가능

    • Redmine : 프로젝트 관리 및 결함 추적 가능

    • Bugzila : 결함을 지속적으로 관리 가능

     

    애플리케이션 성능 분석

    1. 성능 측정 지표

    • 처리량
    • 응답 시간 : 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간
    • 경과 시간 : 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
    • 자원 사용률

    2. 성능 테스트 도구

    • JMeter : HTTP,FTP등 다양한 프로토콜 지원, Cross-Platform

    • LoadUI : 사용자편리성이 강화됨, HTTP,JDBC등 다양한 프로토콜 지원, Cross-Platform

    • OpenSTA : HTTP,HTTPS 프로토콜에 대한 부하 테스트 및 생산품 모니터링 도구, Windows

    3. 시스템 모니터링 도구(둘다 Crossplatform)

    • Scouter : 단일 뷰 통합/실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구

    • Zabbix : 웹기반 서버, 서비스, 애플리케이션 등의 모니터링 도구

    4. 성능 저하 현상을 발생시키는 주요 요인

    • DB에 필요이상의 많은 데이터 요청
    • DB Lock이 해제되기를 기다리면서 애플리케이션 대기/타임아웃
    • Connection Pool의 크기를 너무 작거나 크게 설정
    • JDBC/ODBC 같은 미들웨어를 사용한 후 종료하지  않아 Connection Leak 발생
    • 트랜잭션 Commit되지 않고 Connection Pool에 반환되거나 잘못된 코드로 인해 불필요한 Commit 자주 발생
    • 인터넷 접속 불량으로 Server SOcket에 쓰기는 지속되나 클라이언트에서 정상 읽기 수행이 불가
    • 대량의 파일 업로드 및 다운로드로 처리시간 지연
    • 트랜잭션 처리 중 외부 호출이 장시간 수행/타임아웃
    • 네트워크 관련 장비 간 데이터 전송이 실패/전송 지연으로 데이터 손실

     

    5. 성능 분석 절차 (키워드만)

    1. 성능 테스트 도구, 시스템 모니터링 도구 유형 파악 및 특징 정리
    2. 성능 점검 계획서 작성
    3. 테스트 케이스 작성
    4. 테스트 수행
    5. 테스트 결과 분석
    6. 성능 저하 요인 분석

    애플리케이션 성능 개선

    1. 소스 코드 최적화

    최적화는 Bad Code를 배제하고, Clean Code로 작성하는 것으로 Clean 코드의 작성 원칙은 다음과 같음

    • 가독성
    • 단순성
    • 의존성 배제
    • 중복성 최소화
    • 추상화 : 상위 클래스/메서드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위클래스/메서드/함수에서 구현

    2. 소스 코드 최적화 유형

    • 클래스 분할 배치 : 클래스의 응집도를 높이고 크기를 작게 작성
    • Loosely Coupled : 클래스간 의존성 최소화
    • 코딩 형식 준수
      • 줄 바꿈 사용
      • 개념적 유사성이 높은 종속 함수 사용
      • 호출하는 함수는 선배치, 호출되는 함수는 후배치
      • 지역 변수는 각 함수의 맨 처음에
    • 좋은 이름 사용
    • 적절한 주석문

    3. 소스 코드 품질 분석도구

    • 정적 분석 도구
      • pmd,cppcheck,SonarQube,ccm 등
    • 동적 분석 도구
      • Abalanche, Balgrind 등

    4. 소스 코드 품질 분석 도구의 종류

    • pmd(Linux, Windows): 결함을 유발할 수 있는 코드 검사

    • cppcheck(Windows) : C/C++ 코드에 대한 메모리 누수, 오버플로우 등 분석

    • SonarQube(CrossPlatform) : 소스 분석 통합 플랫폼

    • Checkstyle(CrossPlatform) : Java코드에 대해 소스 코드 표준을 따르고 있는가?, 다양한개발도구에 통합하여 사용 가능

    • ccm(CrossPlatform) : 다양한 언어의 코드 복잡도 검사
    • cobertura(CrossPlatform) : java의 소스코드 복잡도 분석 및 테스트 커버리지를 측정
    • Avalanche(Linux,Android) : Valgrind 프레임워크 및 STP 기반 구현

    • Valgrind(CrossPlatform) : 프로그램 내에 존재하는 메모리 및 쓰레드 결함 분석

    5. 애플리케이션 성능 개선 방법

    • 소스 코드 최적화 기법 사용
      • 개발 프레임워크의 코딩 표준 설정
      • 추상화 된 자료구조 작성, Loosely Coupled의 코드 작성
    • 아킥텍처 조정을 통해 성능 개선
      • Factory Method Patthern을 이용하여 객체의 생성과 사용을 분리해 의존성 최소화 
    • 프로그램 호출 순서 조정을 통한 성능 개선
      • 서로 관련된 내용은 세로로 가깝게 작성해 밀집도를 높임
      • 유사성이 높은 함수나 코드 가깝게 배치
      • 호출하는 함수 선코딩, 호출되는 함수 후배치 
    • 소스코드 품질 분석 도구를 활용
      • 메모리 사용 최소화를 통한 성능 개선
        • String > StringBuffer,StringBuilder으로 수정
        • 반복 루프내 불 필요한 메서드의 호출이 반복되지 않도록
      • 입/출력 발생 최소화를 통한 성능 개선
    • System.out.println()사용하지 말것. > Log4j 사용

    다음글

    2020/04/28 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기] Section 08. SQL 응용(DDL)

     

    대화의 장 💬