요구사항의 통합적인 테스트, 시스템 테스트(System Test)
- 정보처리기술사/소프트웨어공학
- 2019. 12. 31.
시스템 테스트는 통합한 모듈들이 요구사항에 잘 맞게 작동이 되는지를 판단하게 되며 작동 시간, 처리 능력, 부하, 복구 등과 같은 비기능적인 요소들도 점검한다. 시스템 테스트는 White Box 레벨이 아닌 Black Box 레벨에서 주로 수행하게 되어서 블랙박스 테스트 분류에 속하며, 해당 시스템에 대한 지식이 없어도 테스트를 수행할 수 있다.
단위 테스트와 통합 테스트는 동일한 환경을 맞춰서 수행을 하지 않는다. 단위 테스트야 개발자가 만든 Dummy 객체 등을 이용해서 테스트를 수행할 수 있으며 컴포넌트 혹은 모듈이 정상적으로 돌아가는지 개별적으로 테스트하는 것에 목적을 두고 있으며, 통합 테스트는 각 모듈들이 잘 연결되는지 테스트하며 이를 위해 Test Driver나 Test Stub과 같은 마찬가지로 Dummy를 생성하게 된다.
시스템 테스트의 테스트 대상(ex: 작동 시간, 처리 능력 등)을 보면 알겠지만, 개발자 개별이 진행할 수 없는 환경특성 장애(Environment-Specific Failure) 리스크를 최소화하기 위해 최대한 실환경과 유사하게 만들어서 테스트를 수행하게 된다.
요구사항의 통합적인 테스트, 시스템 테스트
시스템 테스트(System Test)의 개념
- 시스템 기능 및 성능과 관련된 고객의 요구사항이 완벽하게 수행되는지 모든 시스템 구성요소를 통합한 후 평가하는 테스트
- 개발 프로젝트 차원(범위)에서 정의된 전체 시스템 또는 제품의 동작에 대해 테스트하는 활동
시스템 테스트의 목적
- 요구사항 확인 : 다양한 업무 처리가 흐름대로 구현되었는지 확인
- 시스템 연동 확인 : 시스템과 I/F가 제대로 동작하는지 확인
- 성능 확인 : 작업별 시스템 성능이 기준에 부합하는지 확인
- 처리량 확인 : 대규모 데이터를 지정된 시간 내에 처리 가능한지 확인
- 보안성 확인 : 보안 요구 사항이 제대로 동작하는지 확인
- 기능적/비기능적 테스트 수행
시스템 테스트의 상세 절차
절차 |
상세 절차 |
산출물 |
계획 수립 |
- 시스템 테스트를 위한 일정 계획 점검, 보완 - 시스템 테스트를 위한 팀을 구성, TC별 담당자 지정 |
테스트 계획서 |
테스트 환경 구축 |
- HW, NW, SW, DB, 테스트 도구 등 테스트 환경 사전 구축 - 성능 및 보안 요구사항이 테스트될 수 있도록 운영 환경과 유사하게 테스트 환경 구축 |
테스트 환경 |
테스트 케이스 작성 |
- 요구사항과 설계 내용대로 동작하는 지 검증하도록 작성 - 서브 시스템과의 연계가 제대로 이루어 지는지를 테스트 하는 것이 가능하도록 작성 - 타 시스템과의 연계가 제대로 이루어 지는지 테스트 하는 것이 가능하도록 작성 - 시스템의 성능, 대규모 데이터 처리, 보안에 대한 요구 사항을 테스트하는 것이 가능하도록 작성 - 시스템 테스트 케이스에서 정의된 데이터는 실제 운영 환경에서 사용되는 데이터나 그와 유사한 데이터를 사용 |
테스트 케이스 |
시스템 테스트 수행 |
- 담당자에 의해 시행된 테스트 결과를 결과서에 기입 - 실제 사용자의 패턴과 일치 시켜 테스트 수행 |
테스트 수행 결과서 |
테스트 결과 반영 및 보고 |
- 테스트 수행 결과가 합격기준에 부합되는지를 측정하여, 통과되지 못한 경우, 오류를 수정하고 재테스트 수행 - 통합 테스트 수행 보고서에 기록된 문제점에 대해 설계문서, 프로그램, 사용자 문서에 변경이 있어야 한다면 규정된 변경관리 절차에 따라 변경 수행 |
테스트 완료 보고서 |
- 테스트 진행시 사용자 / 시스템 의도에 맞는 테스트 위주 실행
시스템 테스트의 종류
구분 |
세부구성 요소 및 설명 |
외부 기능테스트 (Functional Test) |
- 사용자나 다른 시스템 시각으로 요구분석 단계에서 정의된 외부 명세서의 충족 여부 테스트 |
내부기능 테스트 (Facility Test) |
- 사용자 지침서와 요구명세서를 비교, 요구사항서에 기술된 기능의 만족여부 판정, 체크 리스트 사용 |
볼륨테스트 (부피테스트) |
- 프로그램이 대용량 데이터를 처리할 수 있는지 테스트 - 대량의 리소스가 소요되므로 꼭 필요한 부분을 선정하여 수행 |
강도테스트 (Stress 테스트) |
- 정해진 시간 내에 과중한 양을 처리할 수 있는지를 테스트 - 시간적인 요소 포함 |
사용 용이성 테스트 (Usability Test) |
- 애플리케이션을 얼마나 쉽게 사용하는지와 제어들을 처리하는 융통성(flexibility), 그것들의 객체를 충족시키기 위한 시스템 능력에 주로 초점 |
보안테스트 |
- SW 자체의 보안 체계를 점검하는 테스트(불법적인 SW 사용 금지, 외부 불법 침입 대응) - 각종 보안 지침, 법규 및 기법에 근거하여 테스트 |
성능테스트 |
- 프로그램이 설정한 성능 목표를 만족할 수 있는지를 테스트 - 응답속도, 처리량, 처리속도 등 - 스모크 테스트, 부하 테스트, 스파이크 테스트, 안정성 테스트 |
구성테스트 (Configuration Test) |
- 시스템이 지원하는 HW, SW의 구성에 대한 테스트 |
호환성 테스트 (Compatibility Test) |
- 기존 시스템과의 호환성, 변환성 테스트 |
신뢰성 테스트 (Reliability Test) |
- SW의 신뢰성 목표-오류나 고장 발생 빈도 테스트 - 시스템 가동 요구사항 별 년간 운영시간 측정 |
복구테스트 (Recovery Test) |
- 소프트웨어 솔루션이 믿을 수있고, 신뢰할 수 있으며 가능한 충돌들로부터 성공적으로 회복시킬 수 있다는 것을 입증하기 위해 수행 - 프로그램 오류, 하드웨어 실패, 데이터 오류 극복 - 평균 회복시간 최소화(MTTR:Mean Time To Recovery), 평균회복 시간에 대한 서비스 레벨 합 도출 |
- 시스템 테스팅은 50가지 이상 유형 존재
성공적인 시스템 테스트을 위한 고려사항
- 기능/비기능 요구사항 모두 테스트를 위해 테스트 케이스 정의 필요
- 통합시험에서 사용한 회귀테스트 케이스, 도구 산출물을 활용하여 테스트
- 제 3자(ex: 전문적인 테스터)에 의한 테스트 수행 권장
참고자료
https://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C_%EA%B2%80%EC%82%AC
https://sites.google.com/site/knowingmoresoftware/software-testing/what-is-system-testing
(도서) 개발자도 알아야할 소프트웨어 테스팅 실무
연관자료
'정보처리기술사 > 소프트웨어공학' 카테고리의 다른 글
설치 테스트(Installation Test) (0) | 2020.01.01 |
---|---|
고객이 확인하는, 인수 테스트(Acceptance Test) (1) | 2020.01.01 |
통합테스트(Integration Test) (0) | 2019.12.30 |
단위 테스트(Unit Test, Component Test) (0) | 2019.12.30 |
SW 테스트(Test) (0) | 2019.12.26 |