SMALL
1. 애플리케이션 성능 측정 지표 (처응경자)
- 처리량 (Throughput)
- 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
- 웹 애플리케이션의 경우 시간당 페이지 수로 표현
- 응답 시간 (Response Time)
- 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
- 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
- 경과시간 (Turnaround Time)
- 애플리케이션이 사용자가 요구를 입력한 시점부터 트랜잭션을처리 후 그 결과를 출력이 완료할 때까지 걸리는 시간
- 자원 사용률 (Resource Usage)
- 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량
2. 데이터베이스 관련 성능 저하 원인 (락페릭사커)
- 데이터베이스 락(DB Lock)
- 대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생하는 현상
- 요청한 작업은 Lock의 해제 시까지 대기하거나 타임 아웃됨
- 불필요한 데이터베이스 패치 (DB Fetch)
- 실제 필요한 데이터보다 많으 ㄴ대량의 데이터 요청이 들어올 경우 응답 시간 저하 현상 발생
- 결과 세트에서 마지막 위치로 커서를 옮기는 작업이 빈번한 경우 응답 시간 저하 현상 발생
- 연결 누수 (Connection Leak)
- DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생
- 부적절한 커넥션 풀 크기 (Connection Pool Size)
- 너무 작거나 크게 설정한 경우 성능 저하 현상 발생할 가능성 존재
- 확정 (Commit) 관련
- 트랜잭션이 확정되지 않고 커넥션 풀에 반환될 때 성능 저하 가능성 존재
- 잘못 작성된 코드로 인해 불필요한 확정이 자주 발생하는 경우 성능저하 가능성 존재
3. 애플리케이션 성능 테스트 수행 절차 (도환시성)
- 성능테스트 도구 설치
- 테스트 환경 설정
- 시나리오 생성
- 성능 테스트 실행 및 모니터링
4. 베드 코드
- 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
- 스파게티 코드 : 처리 로직의 제어가 정제되지 않고 서로 얽혀 있는 코드
- 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
- 동일한 처리 로직이 중복되게 작성된 코드
- 외계인 코드 : 아주 오래되거나 참고 문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드
- 로직 중복 : 동일한 처리 로직이 중복되게 작성된 코드
5. 베드 코드 유형 (오문이 결침)
- 오염
- 문서부족
- 의미 없는 이름
- 높은 결합도
- 아키텍처 침식
6. 클린 코드
- 잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드
- 중복 코드 제거로 애플리케이션의 설계가 개선됨
- 가독성이 높으므로 애플리케이션의 기능에 대해 쉽게 이해할 수 있음
- 버그를 찾기 쉽고 프로그래밍 속도가 빨라짐
7. 클린코드 작성 원칙 (가단의 중추)
- 가독성 : 이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능 사용
- 단순성 : 한 번에 한가지 처리만 수행, 클래스 / 메서드 / 함수를 최소 단위로 분리
- 의존성 최소 : 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게작성
- 중복성 제거 : 중복된 코드 제거, 공통된 코드 사용
- 추상화 : 클래스 / 메서드 / 함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스 / 메서드 / 함수에서 구현
8. 클린 코드 유형
- 의미 있는 이름
- 간결하고 명확한 주석
- 보기 좋은 배치
- 작은 함수
- 읽기 쉬운 제어 흐름
- 오류 처리
- 클래스 분할 배치
- 느슨한 결합(Loosely Coupled)기법 적용
- 코딩 형식 기법 적용
9. 소스 코드 품질 분석 도구
- 정적 분석 도구
- pmd : 자바 및 타 언어 소스 코드에 대한 버그, 데드 코드 분석
- cppcheck : C / C++ 코드에 대한 메모리 누수, 오버플로우 등 문제 분석
- SonarQube : 소스 코드 품질 통합 플랫폼, 플러그인 확장 가능
- checksytle : 자바 코드에 대한 코딩 표준 검사 도구
- ccm : 다양한 언어의 코드 복잡도 분석 도구, 리눅수, 맥 환경 CLI 형태 지원
- cobertura : jcoverage 기반의 테스트 커버리지 측정 도구
- 동적 분석 도구
- Avalanche : Valgrind 프레임워크 및 STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구
- Valgrind : 자동화된 메모리 및 스레드 결함 발견 분석 도구
10. 리팩토링 (Refactoring)
- 유지보수 생산성 향상을 목적으로 기능을 변경하지 않고, 복잡한 소스 코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법
- 소프트웨어 모듈의 외부적 기능은 수정하지 않고 내부적 구조, 관계 등을 단순화하여 소프트웨어의 유지보수성을 향상시키는 기법
11. 리팩토링 목적
- 유지보수성 향상
- 유연한 시스템
- 생산성 향상
- 품질 향상
728x90
LIST
'정보처리기사 > 10. 애플리케이션 테스트 관리' 카테고리의 다른 글
Chapter 02. 애플리케이션 통합 테스트 (0) | 2021.09.28 |
---|---|
Chapter 01. 애플리케이션 테스트 케이스 설계 (0) | 2021.09.28 |
댓글