chapter4. System test
학습목표
- 기능성 테스트
- 성능 테스트
- 호환성 검증
- 퇴행 테스트
- 알파테스트와 베타테스트
- 테스트 프로세스: 시스템 관리자는 자신이 구축한 서비스나 제품의 기능성과 유용성을 보증하기 위해 다양한 유형의 테스트를 실행하게 된다. 테스트 결과를 평가하고 발생한 문제를 제거하기 위해 조치를 취해야한다. 단위테스트+시스템테스트(호환성 테스트와 부하운용테스트)+퇴행테스트(구성요소의 변경이나 업그레이드가 가해진 시스템이 변경 이전의 시스템 기능과 마찬가지로 제대로 실행되는지 모든 기능에 관해 검증하는 작업)+알파테스트/베타테스트
- 단위테스트: 각각의 기능 단위들이 정상적으로 작동하는지 테스트.
- 소규모의 경우라도 설정 변경이나 단순한 하드웨어의 설치에 따른 결과도 의도한 결과를 낼 수 있는지 확인하기 위해 테스트되어야 한다.
- 시동스크립트와 종료스크립트
- 접근 기록과 에러기록 로깅작업
- 정적 html파일과 이미지의 서비스 제공
- CGI 스크립트나 혹은 Java서블릿과 같은 동적 web페이지의 서비스 제공
- 인터넷으로부터의 접근성
- 보호될 컨텐츠에 대한 접근제어
- 단위테스트 수행: 테스트 목적과 절차 문서화-테스트 파라미터와 절차 정의- 테스트 수행-테스트의 결과 검증과 부작용 조치
- 소규모의 경우라도 설정 변경이나 단순한 하드웨어의 설치에 따른 결과도 의도한 결과를 낼 수 있는지 확인하기 위해 테스트되어야 한다.
- 호환성테스트: 기존 환경의 인프라와 새 구성요소가 잘 맞는지 호환성 테스트를 거쳐야 할 것이다. 상호 연관성을 테스트하는데 있어 가장 효과적인 방법은 변경하려는 구성 요소에 대한 의존성 트리를 생성하여 목록화 한다. 과정(테스트항목결정-수행) 호환성 테스트할 목록: 운영체제의 업그레이드와 패치, app의 업/패, 공유 라이브러리의 변경, 하드웨어, 케이블 교체, 주요 서브시스템 설정 변경
- 부하운용테스트: 생산환경에서 경험할 수 있는 시스템의 최악 조건과 흡사하게 하여 정상적으로 가능하는지, 충족시키지 못하는 점은 무엇인지, 부하가 어떻게 증가하는지를 파악한다. 과정(부하파라미터 결정(지속시간, 부하량, 성능단위, 수용 성능 레벨 범위)- 수행)
- 7초 내에 페이지를 서비스할 수 있는가 또는 5,000개의 동시 접속 세션에서는 서비스가 가능한가? 부하 시뮬레이터 툴: Siege
siege -u http://www -t 30s -d 20 -c 3
- 장래의 결과와 비교할 수 있도록 베이스라인을 설정함으로써 테스트를 시작한다. 사람의 상호 작용성을 시뮬레이션하기 위해 동적 페이지의 최소량을 의뢰하는데, 최소량은 요청 간의 간격은 20초까지의 임의 값이며, 3개의 동시 요청을 30초 동안 하라는 것이다.
- 결과: 확인해야할 중요한 통계 값은 응답시간, 트랜잭션 비율, 동시성이다. 응답시간(Responsetime)이 0.30이면 평균 응답시간은 0.3이며 동시 요청에 대한 평균 트랜잭션 수(concurrency)는 0.68이고 초당 트랜잭션 수(transaction rate)는 2.27(trans/sec)이 된다. siege 문서에서는 동시 트랜잭션 수(concurrency)가 처리할 트랜잭션 총수(transactions)의 절반을 넘지 않도록 권장한다. 절반을 넘지 않을 수 있지만 응답시간이 낮을 수도 있다. 부하테스트 단계에서 물어야만 하는 두번째 질문은 시스템이 요구사항을 충족시키게 되는 때는 언제인가 이다. 이말은 중단 점은 무엇인가 라는 것이다. 이것은 응답시간이나 다른 성능 파라미터가 시스템에 설정된 최소 성능 요구사항에 미치지 못하게 되는 지점을 말한다. 많은 테스트를 진행할 수 없으므로 몇 번의 테스트 결과를 선으로 이어 중단점을 예측한다,
- 7초 내에 페이지를 서비스할 수 있는가 또는 5,000개의 동시 접속 세션에서는 서비스가 가능한가? 부하 시뮬레이터 툴: Siege
- 퇴행테스트: 기존 시스템의 기능과 특성에 대한 베이스라인을 설정함으로써 퇴행테스트가 시작된다. 성능을 측정하는게 아니라 모든 것이 이전처럼 기능하는지 확인하고, 신규 시스템을 구축할때 아무것도 중단되지 않을 것임을 확인하는 것이다. 예를 들면 새버전의 perl을 컴파일할 때 일어난다 perl 배포판은 시스템에서 perl의 표준 연산 기능이 제대로 동작하는지 검증할 수 있는 테스트 프로그램과 같이 배포된다.
- 알파테스트와 베타테스트: 알파테스트는 신규 시스템의 기능성이 완료되기 이전에 고객과 최종 사용자에게 신규 시스템을 테스트하게 하는 것이다. 베타테스트는 제품이 공식적으로 릴리즈되기 이전에 대중에게 기능적으로 완전한 제품을 릴리즈하는 것이다.
- 정리: 테스트는 시스템 관리자나 개발자의 일상 업무에 있어 필수적인 부분이다. 단위 테스트가 좋은 출발점이 될 수 있으며 시스템의 작은 기능들 모두가 올바로 수행되는지 확인해야한다. 그리고 시스템에 호환성 문제가 일어나지 않게 하기 위해 호환성 테스트를 수행한다. 부하 운용 테스트는 전체 시스템에 스트레스를 가하는 것이며 부하 테스트는 중단점을 정확하게 지적하게 되고 시스템이 요구사항을 제대로 수행할 수 있는지 확인하게 해준다. 사용자 테스트로 알파/베타/릴리즈캔디데이트 테스트를 실시하여 시스템에 있는 버그와 기능 문제에 관해 사용자로부터 가치 있는 정보를 얻게 해준다.
- 2019 26
<-- add your code here -->