원리1 - 테스팅은 결함이 존재함을 밝히는 활동이다.

 

  테스팅은 소프트웨어에 잠재적으로 존재하는 결함을 줄일 수는 있지만, 결함이 전혀 발견되지 않은 경우라도 해당

  소프트웨어에 결함이 없다고 증명할 수는 없다.

 

  즉 테스팅은 결함이 존재함을 밝히는 것이다.

 

원리2 - 완벽한 테스팅은 불가능하다.

 

  모든 가능성(입력과 사전 조건의 모든 조합)을 테스팅하는 것은 지극히 간단한 소프트웨어를 제외하고는 가능하지 않다. 일반적으로 완벽한 테스팅이 불가능한 이유는 다음과 같다.

  - 한 프로그램 내의 내부조건이 무수히 많을 수 있음 (무한 경로)

  - 입력이 가질 수 있는 모든 값의 조합이 무수히 많음 (무한 입력값)

  - GUI 이벤트 발생 순서에 대한 조합도 무수히 많음 (무한 타이밍)

 

따라서 완벽한 테스팅보다는, 테스팅 대상의 리스크 분석을 토대로 테스트 활동의 노력을 차별화하는 것이 옳다.

우주항공, 의료 등 안전이 최우선인 소프트웨어를 개발하고 테스팅 할 때는 테스팅의 완벽함이 요구될 수 있겠지만, 이는 불가능한 목표이므로 일반적인 소프트웨어 테스팅보다 더 많은 노력과 리소스를 투입하여 강도 높게 수행하는 것이지 실제로 완벽한 테스트가 수행되는 것은 아니다.

 

원리3 - 결함 집중

 

 출시 전 대다수의 결함들은 소수의 특정 모듈에 집중되어 발생하는 경향을 보이며, 이러한 결함의 집중은 대부분 운영상의 장애를 초래한다. 일반적으로 결함이 집중될 수 있는 모듈들은 다음과 같다.

  - 자체적으로 복잡한 구조를 가지고 있는 모듈

  - 소프트웨어나 시스템의 다른 부분 또는 다른 모듈과 다량의 복잡한 상호 작용을 하는 모듈

  - 개발 난이도가 높거나 최신 기술을 사용한 모듈

  - 기존에 개발된 것을 재사용하지 않고 새롭게 개발한 모듈

  - 크기가 큰 모듈

  - 경험이 미흡한 개발팀에서 개발한 모듈

 

원리4 - 살충제 패러독스

 

 동일한 테스트케이스로 동일한 테스트를 반복적으로 수행한다면, 나중에는 더 이상 새로운 결함을 찾아내지 못한다. 시스템에 잠재된 보다 많은 결함을 발견하기 위해서는 테스트케이스를 정기적으로 리뷰하고 개선할 필요가 있다.

 

 공식적인 기법을 적용하여 설계된 테스트케이스 역시 반복적으로 수행되면 새로운 결함을 지속적으로 발견할 가능성은 낮아진다. 이런 경우, 해당 기법을 다른 모듈 또는 다른 시각에서 재적용시켜 테스트케이스를 업데이트하는 노력과 탐색적 테스팅, JIT 테스팅 등의 경험기반접근법을 통해 새로운 테스트케이스를 추가하는 것이 필요하다.

 

원리5 - 테스팅은 정황에 의존적이다.

 

 테스팅은 정황에 따라 다르게 진행된다. 예를 들어, 안전-최우선 소프트웨어를 테스트하는 경우, 전자상거래 사이트를 테스트할 때와는 다른 방식으로 진행해야 한다.

 이때, 정황과 도메인(분야)에 따라 다르게 테스팅을 진행해야 하지만 아래와 같이 모든 테스팅에서 변하지 않는 사항도 존재한다.

  - 테스트 주요활동에 대한 테스트 프로젝트 계획

  - 표준적인 기법 적용

  - 독립적 테스트 환경

  - 효율적/효과적 테스트 팀 조직

  - 정식 리포팅 등

 

원리6 - 오류-부재의 궤변

 

 개발된 시스템이 사용자의 필요와 기대에 부응하지 못하고 사용성이 현저히 낮다면 결함을 찾고 수정하는 과정은 아무 소용없다. 사용자 또는 비즈니스의 요구를 충족시켜주지 못한다면, 설사 결함을 모두 발견하여 제거하였다고 하더라도 품질이 높다고 볼 수는 없다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

원리5 - 테스팅은 정황에 의존적이다.

테스트 디자인이란,

테스트 베이시스를 토대로 테스트 활동 전체에 대한 기본 설계를 하는 행위로 볼 수 있습니다.

"테스트를 어떻게 수행할 것인가?" 라는 것이 테스트 디자인의 행동 목적이므로, 이를 위해 테스트 베이시스를 기준으로 검토하여 테스트 설계를 진행

 

 

‘테스트 베이시스’가 무엇인가요? ‘테스트 디자인’은 무엇인가요? 

 

> 테스트 베이시스(Test Basis) 개요

• 테스트 케이스의 기준이 되는 시스템과 컴포넌트의 요구사항을 추론할 수 있는 테스트 케이스의 기반이 되는 모든 문서를 뜻함.
 

> 테스트 베이시스 - 요구사항 명세서

요구사항 명세서는 요구사항 분석 과정이 완료된 후 선별된 기능을 바탕으로 시스템 및 서비스에서 제공하는 특성과 기능을 기록한 문서를 말합니다.
 

 

요구사항 명세서 구성

  • 일반적으로 요구사항 명세서에는 「요구사항 ID, 요구사항 이름, 구분, 유형, 업무 중요도, 요구사항, 관련부서」 등을 기재합니다.

테스터는 요구사항 명세서로 어떤 작업을 하는가?

  • 요구사항 명세서는 고객이 소프트웨어 제품/서비스에 요구하는 필요 사항을 적는 '요구사항'이 자세히 기재되어 있습니다.
  • 그 뿐만 아니라 요구사항을 식별하고 요구사항에 대해 간단하게 설명할 수 있는 '식별 아이디'와 '요구항목 이름' 등 다양한 내용으로 구성되어 있습니다.
  • 테스트 설계 전 요구사항을 확인하고, 향후 요구사항대로 최종 산출물이 개발되었는지 확인이 필요합니다. 또한, 요구 검증에 대한 테스트 결과는 고객에게 제공할 의무가 있습니다.

> 테스트 베이시스 - 아키텍처

아키텍처(소프트웨어 구조)는 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고, 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙을 기록한 문서를 말합니다. 

 

 

아키텍처 패턴의 종류

소프트웨어 아키텍처 패턴이란 시스템에 대한 기본 구성 스키마로써, 하위 시스템의 집근간의 관계를 구성하기 위한 규칙과 지침을 패턴으로 분류한 것 입니다. 이 아키텍처 패턴 또한 소프트웨어 개발 시 테스트 베이시스로 사용합니다. 이번 글에서 설명하고자 하는 바는 아키텍처 패턴도 테스트 베이시스로 사용한다는 점을 설명하는 게 목적이므로, 이번 기회에는 패턴의 종류만 언급하고, 상세 내용은 다루지 않겠습니다. 해당 패턴에 대한 내용은 Architectural Pattern페이지를 참고해 주세요.

 

  • 계층화 패턴 (Layered pattern)
  • 클라이언트-서버 패턴 (Client-server pattern)
  • 마스터-슬레이브 패턴 (Master-slave pattern)
  • 파이프-필터 패턴 (Pipe-filter pattern)
  • 브로커 패턴 (Broker pattern)
  • 피어 투 피어 패턴 (Peer-to-peer pattern)
  • 이벤트-버스 패턴 (Event-bus pattern)
  • MVC 패턴 (Model-view-controller pattern)
  • 블랙보드 패턴 (Blackboard- pattern)
  • 인터프리터 패턴 (Interpreter pattern)

 

테스터는 아키텍처 패턴으로 어떤 작업을 하는가?

  • 테스터들은 이러한 아키텍처의 패턴을 확인함으로써 시스템과 컴포넌트들이 어떤 식으로 연계되고, 어떻게 상호작용 하는 지를 이해할 수 있습니다.
  • 그리고 이를 통해 테스트 설계 시 위험 요소를 미리 식별하거나 테스트 케이스를 작성하여 개발 완료 후 확인이 가능해집니다.
  • 예를 들어, 데이터 간 인터페이스(Interface)에서 주고 받는 파라미터(Parameter) 값의 데이터 타입(Data Type)을 굳이 일일히 테스터에서 알려주지 않아도 되므로, 예외 상황 테스트(Exception Testing)를 훨씬 원활하게 수행할 수 있습니다.

 

> 테스트 베이시스 - 개발 설계 문서

개발 설계 문서란, 요구시힝 분석/설계 단계를 거쳐 식별된 내용을 어떻게 컴포넌트 및 시스템으로 개발할 지에 대해 기술한 문서들을 말합니다.

 

개발 설계 문서의 종류

  • 기획서(화면 설계서 or 스토리보드): 시스템 구성도, 이해관계자 정의, 팀 R&R 정의, 개발 범위 명시
  • 시스템 흐름도
  • 프로세스 정의서
  • 용어 사전
  • ERD
  • 공통코드 정의
  • 네이밍 룰
  • WBS

 

테스터는 개발 설계 문서로 어떤 작업을 하는가?

  • 위 V 모델은 테스터들이 소프트웨어 개발의 각 단계에서 도출한 산출물들로 어떤 테스트를 하는 지에 대해 개괄적으로 설명합니다.
  • 요구사항 항목들은 시스템 개발 완료 후 인수 테스트(Acceptace Testing)으로 진행됩니다.
  • 시스템의 작동 방식에 대한 내용은 시스템 테스트(System Testing)으로 진행됩니다.
  • 시스템의 요구 항목 및 작동 방식은 통합 테스트(Integration Testing)으로 진행됩니다.
  • 각 컴포넌트 및 모듈의 세부 기획 사항은 단위 테스트(Unit Testing)으로 진행됩니다.
  • 그 외에도 각 단계에서 진행할 수 있는 여러 테스팅 활동들이 있습니다.


※ "전체 테스트", "풀(Full) 테스트"라는 말은 콩글리시(Konglish)이며, 국제 표준에서는 인정하지 않는 실무자들의 언어이므로, 가급적 사용을 지양하시기 바랍니다.

 

> 테스트 디자인(Test Design) 개요

디자인(Design)이라는 단어를 들으면 우리는 흔히 그래픽 디자인을 연상하지만, 사실 Design은 '기획'이나 '설계'를 의미합니다. (다음 영한사전, Dictionary 영영사전) 그러므로 우리가 "테스트 디자인"을 말할 때 "테스트 케이스를 도화지에 그림 그리듯 하는 것이다."라고 표현하시는 분들도 계신데 사실 조금은 틀린 표현입니다. 테스트 디자인은 그 용어 자체로 "테스트 활동을 설계한다"라는 의미를 가지고 있기 때문입니다.

 

즉, 테스트 디자인이란, 위 1번에서 설명한 테스트 베이시스를 토대로 테스트 활동 전체에 대한 기본 설계를 하는 행위로 볼 수 있습니다. "테스트를 어떻게 수행할 것인가?"라는 것이 테스트 디자인의 행동 목적이므로, 이를 위해 테스트 베이시스를 기준으로 검토하여 테스트 설계를 진행하게 됩니다.

 

"테스트 활동을 설계한다"는 말과 "테스트를 계획한다"는 말은 다른 의미입니다. 아래 '관련 참고 자료'에서 Test Plan vs Test Design 내용을 참고하여 주세요. 기회가 될 때 필자들이 다시 설명 드릴 수 있도록 하겠습니다.


> '테스트 디자인 과정에서 테스트 베이시스를 검토한다'는 의미는?
 

"테스트 디자인 과정에서 테스트 베이시스를 검토한다." 라는 의미는 결국 2번에서 설명한 테스트 디자인(Test Design) 활동을 하기위한 기본 자료를 검토한다는 의미 입니다.

 

1번에 설명한 테스트 베이시스 예시에 대하여 테스트 베이시스에 대한 리뷰를 진행하게 됩니다. 리뷰와 관련된 내용은 본 다른 필자들이 작성하신 "시스템이나 문서에 대한 엄격한 테스팅"에 대한 의미는 무엇인가요? 의 내용을 참고하세요.


 

 

http://www.qamadness.com/5-test-design-techniques-qa-engineers-should-know/

 

5 Test Design Techniques QA Engineers Should Know - QA Madness

Learn about five commonly-used test design techniques and when to use them in this post. Examples included 😉

www.qamadness.com

 

신규제품 확인서양식.xlsx
0.01MB

'품질 > 품질통제' 카테고리의 다른 글

테스팅의 일반적인 원리  (0) 2021.08.12
테스트 디자인이란  (0) 2021.08.10
결함 심각도 구분 기준  (0) 2021.08.05
품질 & 테스트 용어  (0) 2021.08.03
회귀 케이스 선택 기준  (0) 2020.06.24

심각도를 표현하는 단어를 정확하게 사용하는 것도 중요하지만 먼저 조직 내에서 각 결함 심각도의 구분을 명확한 기준을 가지고 정의해야 한다. 결함 심각도 구분별로 해당하는 내용이 모호할 경우, 결함 리포팅의 신뢰성이 떨어질 수 있고, 특히 결함 심각도를 보는 조직이나 사람마다 다르게 평가하여 논쟁에 불필요한 시간을 반복적으로 낭비할 수 있다.

 

 

결함 심각도 구분 기준

 

치명적 결함 (Critical Defects)

- 하드웨어 또는 소프트웨어 장애, 시스템 중지, 시스템 잠김, 데이터 손실 또는 변조

 

주요 결함 (Major Defects)

- 기능 실, 잘못된 기능, 주요 기능 오작동

 

[ 일반 결함 (Average Defects)

  - 불완전한 기능, 사소한 기능 오작동, 잘못된 인터페이스 ]

 

사소한 결함 (Minor Defects)

- 타이밍 에러, 사용자 불편, 스크린 표준의 위반, 좋지 않은 인터페이스

 

개선 사항 (Enhancement)

- 에러는 아니지만 개선이 필요한 사항

 

* (일반 결함)은 주요 결함과 같이 포함이 되어 치명적 결함, 주요 결함, 사소한 결함 3가지로 결함관리시스템 등록이 됩니다.

 

'품질 > 품질통제' 카테고리의 다른 글

테스트 디자인이란  (0) 2021.08.10
신규제품 버전 확인회귀 (임시)양식.  (0) 2021.08.06
품질 & 테스트 용어  (0) 2021.08.03
회귀 케이스 선택 기준  (0) 2020.06.24
회귀시험 개념도 및 유형  (0) 2020.04.13

[품질 & 테스트 용어]

 

1) 살충제 패러독스 현상 : 동일한 테스트가 계속적으로 반복된다면, 실제적으로 동일한 테스트 케이스의 집합은 더 이상 새로운 버그를 발견하지 못하는 현상

 

- 품질조직에서는 케이스 관리에 있어서 살충제 패러독스 현상을 최소화하기 위해서 케이스를 주기적으로 검토하고, 계속해서 업데이트 필요.

 

2) 오류-부재의 궤변 : 소프트웨어 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없는 것

 

 

4.  테스트 기법
 4.1 정적 테스트
  - 실제로 작동하는 시스템이 아닌 문서와 같이 정적인 것을 가지고 검증을 하는 것
  - 소스코드 설계 문서 , 요구 사항 정의서 ” 와 같은 산출물이 중심
   예) 표준 준수 여부를 체크 산출물 문서는 목록에 맞춰서 제대로 작성이 되어 있는지 내용이나 문서 포맷은 표준에 

        맞는지 등의 표준 준수여부 확인 활동
  - 요구 사항이나 산출물에 대해서 검수를 받는 과정

 4.2 동적 테스트
  - 작동이 가능한 실제 시스템을 기반으로 테스트를 수행
  - Whitebox test :
    프로그램상 허용되는 논리경로파악 , 경로복잡성계산테스트 , 구현 내부 구조를 보고 테스트 (코드 테스트)
  - Blac k box test
    내부를 알수 없는 상태에서 기능 성능 테스트 , 부정확하거나 빠진결함 , 인터페이스결함 성능결함 , 자료구조상
    결함발견을 위한 테스트

 

5. 테스트 유형
 5.1 Retest 재테스트
   - 결함이 발견되고 수정된 후에 소프트웨어는 원래의 결함이 성공적으로 제거되었는지 확인하는 테스트
 5.2 Regression Test 회귀 테스트
   - 결함 수정 이후 변경의 결과로 새롭게 만들어 지거나 , 이전 결함으로 인해 발견되지 않았던 또 다른
     결함을 발견하기 위한 테스트 자료구조상 결함발견을 위한 테스트
   - 자동화 툴 사용 유무과 별개 

 

(기타)

#테스트의 결과값은 
  1. PASS (성공)
  2. FAIL  (실패)
  3. NA  (기능 구현은 됐지만 테스트 할 수 있는 환경이 아닌 상태)
  4. NT  (기능 자체가 구현이 안되어있는 상태)  

'품질 > 품질통제' 카테고리의 다른 글

신규제품 버전 확인회귀 (임시)양식.  (0) 2021.08.06
결함 심각도 구분 기준  (0) 2021.08.05
회귀 케이스 선택 기준  (0) 2020.06.24
회귀시험 개념도 및 유형  (0) 2020.04.13
시각에 따른 테스트  (0) 2020.04.04

회귀 케이스 선택 기준

 

 

 

'품질 > 품질통제' 카테고리의 다른 글

결함 심각도 구분 기준  (0) 2021.08.05
품질 & 테스트 용어  (0) 2021.08.03
회귀시험 개념도 및 유형  (0) 2020.04.13
시각에 따른 테스트  (0) 2020.04.04
[SW품질관리1] SW품질관리  (0) 2020.03.30

코드품질 책 자료

 

'품질 > 코드품질' 카테고리의 다른 글

코드품질개선방안  (0) 2020.04.06

출처: www.solanara.net/solanara/top

실행 및 화면 설명

top을 실행, 종료 q 를 클릭

 

 

 

 

 

  1. 마지막으로 할당된 PID. 따라서 PID에서 가장 큰 값을 의미하지는 않는다. 단지 얼마나 빨리 프로세스가 생성되는지 대략적인 가늠만 할 수 있을 뿐이다. (PID는 순차적으로 할당되지 않는다) root권한으로 top을 실행해야 표시된다. 버전에 따라 표시되지 않는 경우도 있다. (3.8에서는 표시되지 않는다)
  2. 로드 평균(Load Average). 로드란 시스템 스케줄러의 런 큐에 대기하고 있는 쓰레드의 개수로, '부하'라고도 번역된다. 일반적으로 시스템의 부하는 로드 평균값이 높은 것을 의미한다. (항상 그런것은 아니다) 보통 일정한 시간(예를 들어 10밀리초)마다 런 큐의 길이를 재어 평균낸 값이다. 왼쪽부터 차례대로, 1분, 5분, 15분간 평균 로드값을 나타낸다. 시스템과 어플리케이션마다 차이있지만, 스팍 CPU의 경우 [동시에 처리할 수 있는 쓰레드 개수 * 4] 까지는 성능에 이상 없을 것이다. 솔라리스 10부터는 이 값의 측정 방법이 변경되었다. 기존 방법으로는, 측정 주기보다 빨리 소멸한 쓰레드의 경우 측정되지 않았기 때문에 부하가 낮은것으로 출력되었기 때문이다. 솔라리스 10부터는 감가상각 알고리즘을 바탕으로 마이크로코드를 기반으로 측정하고 있어 좀 더 정확한 값이 나온다.
  3. 시스템 가동시간(Uptime)및 현재 시간
  4. 모든 프로세스 상태 개요. 총 개수와 각각의 상태를 가리킨다.
    • On cpu: 현재 CPU에 의해 실행되고 있는 프로세스 개수
    • Running: 실행할 수 있는 프로세스 개수. On CPU와 Running인 프로세스가 많다는 것은 시스템에 부하가 많다는 뜻이다.
    • Sleeping: 외부 이벤트/입력을 기다리고 있는 프로세스 개수
    • Stopped: Ctrl+Z와 같은, 정지 시그널로 정지된 프로세스 개수
    • Swapped: 디스크로 스왑되고 있는 프로세스 개수. 0이어야 한다.
    • Zombie: 종료되었지만, 다른 이유로 정리되지 않고 기다리고 있는 프로세스 개수. 작은값 또는 0이어야 한다.
  5. CPU 상태
    • Idle: 대기 중(실행할 다른 프로세스가 없음)인 CPU 시간
    • User: 유저 프로세스 실행중인 CPU 시간
    • Kernel: 커널 시스템 콜, 페이지 폴트, 인터럽트 수행 중인 CPU 시간
    • IOWait: 대기 중(I/O 가 완료될 때까지, 실행할 다른 프로세스가 없음)인 CPU 시간
    • Stolen: 하이퍼바이저에서 할당해주지 않은 CPU 시간 (이는 솔라리스가 GUEST OS 로 실행될때에 0 이상의 값이 표시됨. CPU Steal Time 이라고도 한다)
    • Swap: 스와핑 또는 페이징하는 중인 CPU 시간
    Idle 과 IOWait는 동일하게 '대기중'이란 의미를 가지며, 실행할 프로세스가 없다는 의미다. 필자는 두 수치를 해석할 때 의미에 크게 차이두지 않는다. 솔라리스 11.4 에 번들되어있는 top 명령에는 IOWait 가 표시되지 않는다.
  6. 메모리 상태
    • phys mem: 프로세스가 사용할 수 있는 물리 메모리 양 (커널에 의해 예약된 영역 제외)
    • free mem: 남은 메모리 양
    • total swap: 사용된 스왑 메모리 양
    • free swap: 남은 스왑 메모리 양
    솔라리스에서 남은 메모리는 커널과 어플리케이션에서 사용한 메모리보다 적을 수 있다. 이는 ZFS 캐시에서 사용하는 것으로, 시스템에서 메모리가 부족하면 즉시 ZFS 캐시에 할당된 메모리를 돌려받아 시스템에 돌려주기 때문에 문제되지 않는다.
  7. 프로세스 상태
    • PID: 프로세스 아이디
    • USERNAME: 프로세스 소유자 이름
    • NLWP/LWP/THR: LWP또는 쓰레드 개수 (Light-Weight Process, SUN은 쓰레드와 LWP는 다르다!고 하지만 유닉스 쓰레드가 LWP를 이용해 구현되기 때문에 비슷한 개념인건 맞다) 개수. 모든 프로세스는 1개 이상의 쓰레드를 가진다. top 버전마다 표시되는 컬럼의 이름은 다르지만, 같은 의미다.
    • PRI: 우선순위. 유저프로세스의 경우 범위는 0~59이다. 사용자가 주는 데이터를 바탕으로 커널에 의해 자동으로 결정된다. 값이 높을 수록 우선순위가 높다. 이 값에 신경쓸필요는 없다. 솔라리스 커널은 똑똑하니 말이다.
    • NICE: 우선순위를 결정하기 위해 커널에서 참고하는 값. 나이스 값이다. 사용자가 설정할 수 있으며 설정하지 않으면 0이다. 이 값이 낮다면 우선순위가 높게 책정될지도 모른다. (이렇게 모호하게 서술한 이유가, 솔라리스 커널에서 우선순위는 NICE값을 고려해 커널 맘대로 설정하기 때문이다) 솔라리스에서는 -20~20까지 설정할 수 있다.
    • SIZE: 프로세스에 할당된 총 메모리의 양이다. 물리메모리 + 가상 메모리 + ... 의 값이다.
    • RES: 프로세스에 의해 사용된 물리 메모리의 양이다. RES는 RESident set size의 약어이다.
    • STATE: 프로세스 상태. CPU, RUN, SLEEP, STOP, SWAP, ZOMB가 있다. 자세한 내용은 [4) 프로세스 상태]를 참고하자.
    • TIME: 프로세스가 사용한 CPU시간이다. 1:00 이라 되어있으면 해당 프로세스는 1분동안 CPU를 100% 소모한것과 같다. 1000분이 넘으면 H(시간)으로 단위가 바뀐다. [127.4H]라면 127시간 + 0.4시간(24분) 이라는 뜻이다.
    • FLTS: TOP이 실행된 이후 생긴 메이저 페이지 폴트 회수. 일반적인 경우 0에 가까워야 한다.
    • CPU: 현재 프로세스의 총 CPU 대비 사용률. TOP는 이를 기준으로 프로세스 목록을 정렬한다. 1개의 CPU가 있는 시스템에서 [30%]라 되어있으면 해당 프로세스는 전체의 30%를 사용하고 있는 것이다. 4개의 CPU가 있는 시스템에서 [25%]라 나왔다면, 해당 프로세스는 CPU 1개를 100% 소비하고 있다고 해석된다.
    • COMMAND: 프로세스를 실행한 커맨드.
  8. 커널 개요 (단위: 초, TOP 3.7이상)
    • ctxsw: 컨텍스트 스위치 회수
    • trap: 트랩1) 회수
    • intr: 인터럽트 호출 회수
    • syscall: 시스템 콜 호출 회수
    • fork: fork, vfork 회수
    • flt: 페이지 폴트 회수
    • pgin: 페이지인 회수
    • pgout: 페이지아웃 회수
    1) 트랩(Trap)은 예외적인 상황이 발생해 동기화된 인터럽트로 생각할 수 있다. 디버깅에서 사용하는 브레이크 포인트가 걸렸거나, 잘못된 메모리 접근으로 인한 폴트가 이에 해당된다.
  9. 터미널 라인 표시. 실행시 이 터미널은 18개의 프로세스만을 표시할 수 있습니다라고 안내해준다.

사용

  • 실행 옵션
    • -C, --color: 컬러 사용 안함
    • -I, --idle-procs: 유휴 프로세스 표시 안함(기본값은 표시)
    • -S, --system-procs: 시스템 프로세스(페이징데몬, 스와핑 데몬등등) 보임(기본값은 표시 안함)
    • -T, --tag-names: 사용 가능한 컬러 태그 목록 보임
    • -a, --all: 모든 포로세스를 보임("-d all all" 과 동일)
    • -b, -n, --batch: 배치모드. 표준 출력이 터미널이 아니거나 더미 터미널인 경우 기본값. 터미널로부터의 모든 입력 무시.(인터럽트 캐릭터 예를 들어 Ctrl+C등은 유효함)
    • -c, --full-commands: 프로세스의 커맨드 라인을 모두 보임(모든 플랫폼에서 지원되지는 않음. 솔라리스에서는 지원됨)
    • -i, --interactive: 인터랙티브 모드 사용. 표준 출력이 터미널인 경우 기본값.
    • -q, --quick: top을 -20으로 renice 한 후 실행. 루트로만 가능.
    • -u, --uids: UID를 사용자이름으로 변경하지 않음.
    • -v, --version: 버전 출력
    • -d count, --displays count: 지정한 회수만큼 출력하고 종료. 터미널에서의 기본값은 'infinity'. 수치 외에 'infinity', 'maximum', 'all' 을 사용할 수 있다.
    • -s time, --delay=time: 갱신 지연 시간(초). 기본값은 5.
    • -o field, --sort-order=field: 정렬 순서. 컬럼명(7))을 소문자로 써주면 된다. (예: cpu, size, res, time)
    • -U username, --user=username: 해당 사용자의 프로세스만 보임
  • 대화형 명령
    • h, ?: 도움말, 버전정보
    • C: 컬러 사용 여부
    • c: 지정한 문자열을 포함하는 커맨드를 가진 프로세스만 표시. 빈 문자열의 경우 모든 프로세스를 표시. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서는 지원됨)
    • d: 지정된 회수만큼 프로세스를 보임. 1이면 한번 보여주고 바로 종료됨. 기본값은 무한대.
    • f: 풀 커맨드 라인을 보일것인지 여부
    • H: 쓰레드를 각각의 라인마다 보여줌. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서도 지원안됨. [prstat -L]사용할것)
    • i, I: 유휴 프로세스를 보일 것인지 여부
    • k: 시그널 전송. k를 누른 후 kill 명령 뒤의 내용을 써준다
    • M: 메모리 사용량을 기준으로 정렬. [o size] 대화형 명령의 약어임
    • m: 또다른 디스플레이 모드를 사용함. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서도 지원안됨)
    • N: PID 기준으로 정렬. [o pid] 대화형 명령의 약어임
    • n, #: 표시할 프로세스의 개수를 지정. n을 누른 후 숫자를 입력한 다음 엔터를 입력한다.
    • o: 정렬 순서를 변경. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서는 지원됨) top 실행시 보이는 컬럼명을 소문자로 입력하고 엔터를 입력한다. 컬럼의 종류는 플랫폼마다 다르지만 cpu, res, size, time 은 보통 존재할것이다. 기본값은 cpu.
    • P: CPU사용량을 기준으로 정렬 [o cpu] 대화형 명령의 약어임
    • q: top 종료
    • r: 프로세스 우선순위를 결정. r을 누른 후 renice 명령 뒤의 내용을 써준다.
    • s: 표시할 시간의 지연시간을 결정. 숫자를 입력한다
    • T: CPU 사용시간을 기준으로 정렬. [o time] 대화형 명령의 약어임
    • U: 사용자명, UID 중 어느것으로 표시할 것인지 여부
    • u: 지정한 사용자가 소유한 프로세스만 표시. [+]인 경우 모든 사용자가 표시됨
  • 컬러 사용
    • 컬러는 환경변수인 TOPCOLORS 에 내용을 세팅하면 top을 실행할때 표시된다.
    • 환경변수의 내용은 "컬럼코드=[최소],[최대]#색상번호[;색상번호...][:컬럼코드=[최소],[최대]#색상번호[;색상번호...] ...]"의 형식이다.
    • 컬럼코드는 [top -T]명령을 통해 알아낼 수 있으며, 색상번호는 ANSI코드와 같다. 이는 color.h에 나와있으며 다음과 같다. 속성 글자 색상 번호 배경 색상 번호 0 초기화 30 검은색 40 검은색 1 밝게 31 붉은색 41 붉은색 2 흐릿하게 32 녹색 42 녹색 4 아랫줄 33 노란색 43 노란색 5 깜빡임 34 파란색 44 파란색 7 반전 35 붉은자주색(Magenta) 45 붉은자주색(Magenta) 8 숨김 36 맑은파란색(Cyan) 46 맑은파란색(Cyan) 37 흰색 47 흰색
    • 최소, 최대값중 로드 평균을 나타내는 값은 원래 값에 100을 곱한 값을 넣어야 한다. (소숫점 2째자리까지 표현하기 위함이다)
    • 예) 1min=500,1000#31 → 1분단위 로드에서 5.00이상 10.00이하면 붉은색으로 표시
    • 예) TOPCOLORS="1min=100,300#32:1min=300,500#33:1min=500,#31:5min=100,300#32:5min=300,500#33:5min=500,#31:15min=100,300#32:15min=300,500#33:15min=500,#31:header=,#36:memory.physmem=,100#31;1"

 

 

 

 

다른 블로그

 

- SOLARIS


# top
 - top 모니터링 툴이 설치되어 있지 않을수 있음.

# prstat
- 솔라리스에 번들로 제공
- 옵션 :
-n [5] 출력 건수
-u [user] 사용자 아이디 별로 추출
-v
-a 상위, 프로세스및 사용자별 정보의 합계


예)
# prstat -n 5 -u oracle,tmax,jeus

-------------------------------------------------------------------------------------

# prstat -a
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
794 oracle 203M 170M sleep 50 0 0:24.52 13% oracle/12
582 oracle 203M 170M sleep 10 0 0:15.00 2.1% oracle/13
686 oracle 201M 166M sleep 34 0 0:02.57 1.0% oracle/1
720 oracle 201M 162M sleep 58 0 1:05.10 0.6% oracle/1
758 oracle 201M 167M cpu0 38 0 0:02.52 0.3% oracle/1
786 oracle 202M 170M sleep 28 0 0:04.14 0.2% oracle/1
774 oracle 203M 170M sleep 18 0 0:04.28 0.2% oracle/1

NPROC USERNAME SIZE RSS MEMORY TIME CPU
166 oracle 32G 26G 100% 4:19.06 18%
1 daemon 2568K 1744K 0.0% 0:00.00 0.0%
37 root 194M 79M 0.3% 0:00.21 0.0%

---------------------------------------------------------------------------------------

- AIX
# topas


- LINUX
# top
# ps -aux

+ Recent posts