일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 통합 구현
- 정보처리기사실기
- 관평동 고기맛집
- ESB
- EAI
- 정보처리기사공부
- 맛찬들 고기맛집
- Visual Studio Code
- 인터페이스
- 관평동 맛찬들
- 정보처리기사실기공부
- vsC
- 대전 유성 해프닝
- 관평동 칼국수 맛집
- 보쌈전골
- 막창
- 대전 뇨끼맛집
- Nas
- 맛찬들 김치찌개
- 관평동 맛집
- 김치찌개
- 대전 맛집
- 다이소마켓 사기
- HTML
- 보안용어
- 대전 충대근처 해프닝
- 대전 해프닝
- 충대근처 맛집
- 관평동 황해칼국수
- 대전 황해칼국수
- Today
- Total
은팡이의 이것저것
[정보처리기사실기]애플리케이션 테스트 관리2 본문
오늘은 애플리케이션 테스트 관리 두번째 입니다!
오늘도 화이팅해봅시다!😉
1.애플리케이션 테스트 수행(⭐⭐⭐)
1.단위 테스트
1)단위 테스트란?
: 개별적인 모듈을 테스트, 구현 단계에서 각 모듈을 구현한 후 수행, 개별적인 모듈에 대해 컴포넌트 테스트를 수행하려면 도듈을 단독으로 실행 할 수 있는 테스트 베드라는 환경이 필요하다.
2)목 객체 생성 프레임워크
: 객체지향 프로글매에서는 컴포넌트 테스트 수행 시 테스트 되는 메서드는 다른 클래스의 객체에 의존한다. 이런 경우 메서드를 고립화하여 테스트하는 것이 불가능하므로 독립적인 컴포넌트 테스트를 위해서는 스텁의 객체지향 버전인 목 객체가 필요하다.
: 목 객체는 개발자가 수작업으로 만들거나 목 객체 생성 프레임 워크를 활용하여 생성할 수 있다.
: 더미 객체, 테스트 스텁, 테스트 드라이버, 테스트 스파이, 가짜 객체
3)단위 테스트의 원칙
: 빠르게 수행되어야 하고, 다른 컴포넌트에 의존하지 않도록 해야한다.
: 테스트를 몇 번 실행해도 동일한 결과가 나와야 하고, 사람의 개입 없이 테스트가 통과되었는지 알 수 있도록 작성해야 한다.
2.통합 테스트
1)통합 테스트란?
: 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
2)통합 테스트 수행 방법 분류
: 하향식 통합, 상향식 통합, 샌드위치 통합
*하향식 통합 : 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행, 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈을 '깊이-우선' 또는 '너비-우선' 방식으로 통합 *상향식 통합 : 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트 수행 *샌드위치 통합 : 상향식 통합 테스트와 하향식 통합 테스트 방식을 결합한 테스트 방식, 하위 프로젝트가 있는 큰 규모의 통합 테스트에서 사용하는 방식, 병렬 테스트가 가능하고 시간 절약이 가능, 스텁과 드라이버의 필요성이 매우 높은 방식, 비용이 많이 소모 |
3.테스트 자동화 도구
1)테스트 자동화 도구란?
: 테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써, 테스트 기간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 수 있는 방법
2)테스트 자동화 도구의 장단점
*장점 : 반복되는 테스트 데이터 재입력 작업의 자동화 : 사용자 요구 기능의 일관성 검증에 유리 : 테스트 결괏값에 대한 객관적인 평가 기준 제공 : 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공 : UI가 없는 서비스의 경우에도 정밀한 테스트 가능 *단점 : 도구 도입 후 도구 사용 방법에 대한 교육 및 학습 필요 : 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요 : 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자가 필요 |
3)테스트 자동화 도구 유형
: 정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구
*정적 분석 도구 : 만들어진 애플리케이션을 실행하지 않고 분석하는 도구 : 대부분 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용 : 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해를 바탕으로 도구를 이용해서 분석하는 것을 말한다. *테스트 실행 도구 : 테스트를 위해 작성된 스크립트를 실행하고, 작성된 스크립트는 각 스크립트마다 특정 데이터와 테스트 수행 방법을 포함하고 있다. : 데이터 주도 접근 방식, 키워드 주도 접근 방식 *성능 테스트 도구 : 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 도구 *테스트 통제 도구 : 테스트 계획 및 관리를 위한 테스트 관리 도구, 테스트 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구, 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원하기 위한 결함 추적/관리 도구 등이 있다. |
4)테스트 하네스란?
: 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성한다.
: 데스트 하네스 구성요소는 데스트 드라이버, 테스트 스텁, 테슽트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트가 있다.
2.애플리케이션 테스트 결과 분석(⭐)
1.테스트 결과 분석
1)소프트웨어 결함
: 소프트웨어 결함을 말할 때 에러, 결함, 결점, 버그, 실패와 같은 용어가 사용된다.
*에러/오류 : 에러는 결함의 원인이 되는 것으로, 일반적으로 사람에 의해 생성된 실수 *결함/결점/버그 : 에러 또는 오류가 원인이 되어 소프트웨어 제품에 포함되어 있는결함. *실패/문제 : 소프트웨어 제품에 포함된 결함이 실행될 때 발생되는 현상 |
2)테스트 완료 조건
: 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트 등 각 단계별 테스트를 언제 어떤 상황에서 종료할 것인지를 결정하는 기준이다.
:완료 조건은 프로젝트 특성에 따라 일정, 비용, 조직 등에 제약이 있으므로, 최적의 완료 저건을 계획하여야 한다.
3)테스트 리포팅
: 테스트 결과 정리, 테스트 요약 문서, 품질 상태, 테스트 결과서, 테스트 실행 절차 및 평가를 포함한다.
: 테스트 결과 정리, 테스트 요약문서, 품질 상태, 테스트 결과서, 테스트 실행 절차 리뷰 및 평가
2.결함 관리
1)결함 관리란?
: 단계별 테스트 수행 후 발생한 결함의 재발 방지와 유사결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 활동
2)결함 관리 프로세스
: 결함 관리 계획, 결함 기록, 결함 검코, 결함 수정, 결함 재확인, 결함 상태 추적 및 모니터링 활동, 최종 결함 분석 및 보고서 작성
3)결함 분석이란?
: 테스트 케이스를 실행한 후 발견된 결함을 분석하여 테스트 결함 보고서를 작성한다
: 결함의 발생 상황이 구체적으로 명확히 정의되어야만 결함이 개발자에게 통보되었을 때 효율적으로 수정이 가능하다.
: 분석 방법으로 구체화, 고립화, 일반화가 있다
*구체화 : 결함의 원인을 찾기 위해 결함을 발생시킨 입력값, 테스트 절차, 테스트 환경을 명확히 파악하는 방법 *고립화 : 입력값, 테스트 절차, 테스트 환경 중 어떤 요소가 결함 발생에 영향을 미치는지 분석하는 방법 *일반화 : 결함 발생에 영향을 주는 요소를 최대한 일반화 시키는 방법 |
3.애플리케이션 개선 조치사항 작성(⭐⭐)
1.테스트 커버리지
1)테스트 커버리지란?
: 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준, 정확성과 신뢰성을 향상시키는 역할
2)테스트 커버리지 유형
: 기능 기반 커버리지, 라인 커버리지, 코드 커버리지
*기능 기반 커버리지 : 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법 *라인 커버리지 : 애플리케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스코드의 라인 수를 측정하는 방법 *코드 커버리지 : 소프트웨어 테스트 충분성 지표 중 하나, 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트되었는지를 측정하는 방법 |
2.결함의 식별 및 관리
1)결함의 분류
: 시스템 결함, 기능 결함, GUI 결함, 문서 결함
*시스템 결함 : 비정상적인 종료/중단, 응답 시간 지연, 데이터베이스 에러 등 주로 애플리케이션 환경과 데이터베이스 처리에서 발생하는 결함 *기능 결함 : 사용자의 요구사항 미반영/불일치, 부정확한 비즈니스 프로세스, 스크립트 에러, 타 시스템 연동 시 오류 등 기획, 설계, 업무 시나리오 단계에서 발생한 결함 *GUI 결함 : 응용 프로그램의 UI 비일관성, 부정확한 커서/메시지, 데이터 타입으리 표시 오류 등으로 사용자 화면 설계에서 발생한 결함 *문서 결함 : 기획자, 사용자, 개발자 간의 의사소통과 기록이 원활하지 않은 경우에 발생하는 결함 |
2)단계별 결함 유입의 종류
*기획 시 유입되는 결함 : 사용자 요구사항의 표준 미준수로 인해 테스트 불가능, 요구사항 불명확/불완전/불일치, 기타 결함이 발생 *설계 시 유입되는 결함 : 기획 단계에 유입된 결함 또는 설계 표준 미준수로 인해 테스트 불가능, 기능 설계 불명확/불완전/불일치, 기타 결함이 발생 *코딩 시 유입되는 결함 : 설계 단계에 유입된 결함 또는 코딩 표준 미준수로 인해 기능의 불일치/ 불완전, 데이터 결하므 인터페이스 결함, 기타 결함이 발생 *테스트 부족으로 유입되는 결함 : 테스트 수행 시 테스트 완료 기준의 미준수, 테스트 팀과 개발 팀의 의사소통 부족, 개발자의 코딩 실수로 인한 결함이 발생 |
3)결함 심각도별 분류
*치명적 결함 : 기능이나 제품의 테스트를 완전히 방해하거나 못하게 하는 결함 *주요 결함 : 기능이 기대와 많이 다르게 동작하거나 그 기능이 해야하는 것을 못하는 결함 *보통 결함 : 제품이나 프로그램이 특정 기준을 충족하지 못하거나 전체에 영향을 주지 않는 일부 기능이 부자연스러운 결함 *경미한 결함 : 사용상의 불편함을 유발하는 결함 *단순 결함 : 사소한 버그라고 하며, 기능에는 영향이 없지만 수정되어야 하는 결함 |
4.애플리케이션 성능 분석(⭐)
1.애플리케이션 성능 점검 개요
1)애플리케이션 성능 측정 지표
*처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수 *응답 시간 : 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간 *경과 시간 : 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그결과의 출력이 완료할 때까지 걸리는 시간 *자원 사용률 : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량 |
2.애플리케이션 성능 저하 원인
1)데이터베이스 관련 성능 저하 원인
*데이터베이스 락 : 대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생하는 현상 *불필요한 데이터베이스 패치 : 실제 필요한 데이터보다 많은 대량의 데이터 요청이 들어올 경우 응답시간 저하 현상 발생 *연결 누수 : DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생 *부적절한 커넥션 풀 크기 : 너무 작거나 크게 설정한 경우 성능 저하 현상이 발생할 가능성 존재 |
2)내부 로직으로 인한 성능 저하 원인
*웹 애플리케이션의 인터넷 접속 불량 : 웹 애플리케이션의 실행 시 인터넷 접속 불량으로 서버 소켓 쓰기는 지속되나, 클라이언트에서 정상적 읽기가 수행되지 않을 경우 성능 저하 가능성 존재 *특정 파일의 업로드, 다운로드로 인한 성능 저하 : 대량의 파일을 업로드하거나 다운로드할 경우 처리시간이 길어져서 애플리케이션의 성능 저하 가능성 존재 *정상적으로 처리되지 않은 오류 처리로 인한 성능 저하 : 오류 처리 로직과 실제 처리 로직 부분을 분리하지 않고 코딩하거나 예외가 발생할 경우에 제대로 처리되지 않아 행이 걸리는 상황이 발생하여 성능 저하 가능성 존재 |
3)외부 호출(HTTP, 소켓 통신)로 인한 성능 저하 원인
: 임의의 트랜잭션이 수행되는 동안 외부 트랜잭션이 장시간 수행되거나, 타임아웃이 일어나느 경우 성능 저하 현상이 발생할 수 있다.
4)잘못된 환경 설정이나 네트워크 문제로 인한 성능 저하 원인
*환경 설정으로 인한 성능 저하 : 스레드 풀, 힙 메모리의 크기를 너무 작게 설정하면 힙 메모리 풀 현상 발생으로 성능 저하 가능성 존재 *네트워크 장비로 인한 성능 저하 : 라우터, L4 스위치 등 네트워크 관련 장비 간 데이터 전송 실패 또는 전송 지연에 따른 데이터 손실 발생 시 애플리케이션의 성능 저하 또는 장애 발생 가능성 존재 |
3.애플리케이션 성능 테스트 프로세스
1)애플리케이션 성능 테스트 수행 절차
: 성능 테스트 도구 설치 → 테스트 환경 설정 → 시나리오 생성 → 성능 테스트 실행 및 모니터링
*성능 테스트 도구 설치 : 대상 시스템에 선정된 테스트 도구 설치 *테스트 환경 설정 : 해당 시스템의 운영체제, DBMS 버전, 네트워크 상태 등에 대해 설정 *시나리오 생성 : 테스트 목적에 맞는 부하 형태, 파라미터, 사용자 수, Ramp-up load, 수행시간, 모니터링 결과 저장 파일 등의 정보 설정 *성능 테스트 실행 및 모니터링 : 성능 테스트를 수행하면서 테스트 상황을 도구를 통해 모니터링 |
5.애플리케이션 성능 개선(⭐⭐)
1.소스 코드 최적화
1)소스코드 최적화란?
: 일기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것으로, 소스 코드 품질을 위해 기본적으로 준수해야 할 원칙과 기준을 정의하고 있다.
2)베드 코드
: 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
: 베드 코드 사례로는 외계인 코드, 스파게티 코드, 알 수 없는 변수명, 로직 중복이 있다
: 베드 코드 유형으로는 오염, 문서부족, 의미 없는 이름, 높은 결합도, 아키텍처 침식이 있다
[사례] *외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드 *스파게티 코드 : 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유한 표현 *알 수 없는 변수명 : 변수나 메서드에 대한 이름 정의를 알 수 없는 코드 *로직 중복 : 동일한 처리 로직이 중복되게 작성된 코드 [유형] *오염 : 비즈니스 기능을 수행하지 못하는 많은 컴포넌트들이 존재 *문서부족 : 현재 코드와 문서가 일치하지 않고 수정과 변경을 위한 도메인 지식은 크게 증가하지만 개발자의 지식부족 초래 *의미 없는 이름 : 함수, 클래스, 컴포넌트 이름들이 명확한 의미를 갖지 못하거나 실제 작동과 불일치 *높은 결합도 : 클래스와 컴포넌트 간에 데이터와 컨트롤 흐름이 네트워크로 복잡하게 연결 *아키텍처 침식 : 아키텍처가 더 이상 구별되지 않고 여러 솔루션으로 이루어져 아키텍처상 변형들로 인해 시스템 품질이 떨어짐 |
3)클린 코드
: 잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드
*클린 코드 특징 : 중복 코드 제거로 애플리케이션의 설계가 개선된다 : 가독성이 높으므로 애플리케이션의 기능에 대해 쉽게 이해할 수 있다 : 버그를 찾기 쉬워지며, 프로그래밍 속도가 빨라진다 [클린 코드 작성 원칙] *가독성 : 이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능을 이용 *단순성 : 한 번에 한 가지 처리만 수행, 클래스/메서드/함수를 최소 단위로 분리 *의존성 최소 : 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성 *중복성 제거 : 중복된 코드를 제거, 공통된 코드를 사용 *추상화 : 클래스/메서드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스/메서드/함수에서 구현 |
2.소스 코드 품질분석
1)소스 코드 품질 분석이란?
: 소스 코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도, 코드 내에 존재하는 메모리 누수 현황, 스레드의 결함 등을 발견하기 위한 활동
2)소스 코드 품질분석 도구
:정적 분석 도구, 동적 분석 도구
[정적 분석 도구] *pmd : 자바 및 타 언어 소스 코드에 대한 버그, 데드코드 분석 *cppcheck : C/C++ 코드에 대한 메모리 누수, 오버플로우 등 문제 분석 *SomarQube : 소스 코드 품질 통합 플랫폼, 플러그인 확장가능 *checkstyle : 자바 코드에 대한 코딩 표준 검사 도구 *ccm : 다양한 언어의 코드 복잡도 분석 도구, 리눅스, 맥 환경 CLI 형태 지원 *cobertura : jcoverage 기반의 테스트 커버리지 측정 도구 [동적 분석 도구] *Avalanche : Valgrind 프레임워크 및 STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구 *Valgrind : 자동화된 메모리 및 스레드 결함 발견 분석 도구 |
3.애플리케이션 성능 개선 방안
1)소스 코드 최적화 기법 적용
: 애플리케이션 개발 프레임워크의 코딩 표준을 설정하고, 인터페이스 클래스를 이용하여 느슨한 결합 코드를 구현한다.
: 인터페이스를 통해 추상화된 자료 구조를 구현하여 의존성을 최소화한다
2)아키텍처 조정을 통한 성능 개선
: 객체의 생성과 사용을 분리함으로써 소프트웨어의 의존성을 최소화하기 위하여 팩토리 메서드 패턴을 이용하여 성능 개선 방안을 수행한다.
3)프로그램 호출 순서 조정 적용
: 호출하는 함수를 먼저 코딩하고, 호출되는 함수는 나중에 배치하여 애플리케이션의 성능을 개선한다
4)소스 코드 품질분석 도구 활용
: 메모리 사용 최소화, 입출력 발생 최소화, System.out.println()을 사용 제외
5)리팩토링을 통한 성능 개선
: 유지보수 생산성 향상을 목적으로 기능을 변경하지 않고, 복잡한 소스 코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법
: 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질향상을 목적으로 한다.
6)애플리케이션 성능 현황 관리
: 성능 현황판 작성, 성능 현황판 이용 애플리케이션 성능 개선
오늘도 고생하셨습니다~
도움이 되셨다면 공감버튼!💕
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사실기]애플리케이션 테스트 관리1 (0) | 2022.07.23 |
---|---|
[정보처리기사실기]소프트웨어 개발 보안 구축2 (0) | 2022.07.20 |
[정보처리기사실기]소프트웨어 개발 보안 구축1 (0) | 2022.07.20 |
[정보처리기사실기]서버 프로그램 구현2 (0) | 2022.07.17 |
[정보처리기사실기]서버 프로그램 구현1 (0) | 2022.07.16 |