[CSTS 요약] 4 품질 특성과 비기능 테스트
ISO 25010 품질 모델
- 기능 적합성(Functional Suitability): 제품 또는 시스템이 명시적 또는 묵시적 요구를 충족하는 기능 제공
- 성능 효율성(Performance Efficiency): 명시적 조건하에서 사용된 자원의 양에 대한 성능
- 호환성(Compatibility): 다른 제품, 시스템 또는 구성요소와도 정보를 교환하거나 필요한 하드웨어/소프트웨어 환경을 공유하며 필요한 기능을 수행 가능
- 사용성(Usability): 특정한 사용자들이 주어진 사용 환경(특정 사용 컨텍스트)에서 특정 목적 달성 위한 제품 또는 시스템 사용시의 효율성, 효과성 및 만족도
- 신뢰성(Reliability): 특정 조건에서 특정 기간 동안 오동작 없이 요구되는 기능 수행
- 보안성(Security): 시스템의 정보 및 데이터 보호
- 유지보수성(Maintainability): 유지보수의 효율성
- 이식성(Portability): 다양한 플랫폼에서 운영 가능
주특성 | 부특성 | 설명 |
기능 적합성 | 기능 완전성 | 기능 집합의 모든 요구사항 포괄 |
긴응 정확성 | 시스템이 정확한 결과를 제공 | |
기능 적절성 | 목적 달성에 도움 | |
성능 효율성 | 시간 반응성 | 기능 수행 시 응답•처리 시간 및 처리율 |
자원 효율성 | 기능 수행 시 시스템 사용 자원 요구사항 충족 | |
수용성 | 시스템 매개변수의 최대 한계의 요구사항 충족 | |
호환성 | 공존성 | 타 소프트웨어에 나쁜 영향을 미치지 않고 자원 공유하면서 요구되는 기능 효율적으로 수행 |
상호운영성 | 둘 이상의 시스템 또는 구성 요소가 정보 교환하고 교환된 정보를 사용 | |
사용성 | 적합 인식성 | 사용자가 자신의 필요에 시스템이 적합한지 여부 인식 |
학습 용이성 | 사용자가 소프트웨어의 사용법을 배워 명시된 목적 달성 | |
운영 용이성 | 시스템을 쉽게 조작하고 제어할 수 있는 속성 | |
사용자 오류 방지성 | 사용자로 하여금 오류 발생 방지 | |
사용자 인터페이스 심미성 | 사용자 인터페이스의 만족스러움 | |
접근성 | 사용자의 특성이나 능력에 관계없이 시스템 사용 | |
신뢰성 | 성숙성 | 시스템 또는 구성 요소의 신뢰성 |
가용성 | 사용자의 사용 및 접근 가능성 | |
결함 허용성 | 결함 존재함에도 시스템 또는 구성 요소가 의도한 대로 작동 | |
복구성 | 중단 또는 장애 이후 시스템이 영향 받은 데이터를 복구하고 상태 재설정 가능 | |
보안성 | 기밀성 | 접근 권한이 있는 사람만 데이터 액세스 |
무결성 | 컴퓨터 프로그램 또는 데이터 무단 접근 혹은 변경 방지 | |
부인 방지성 | 사건 및 행위 후 행동 및 사건 입증 가능 | |
책임성 | 각 개인을 유일하게 식별하여 행위를 기록하고 필요 시 행위자 추적 | |
인증성 | 사건 및 행동에 대해 실제 행위자임을 증명 | |
유지보수성 | 모듈성 | 하나의 구성 요소 변경이 다른 구성 요소에 최소한의 영향을 미치도록 개별 구성요소로 구성 |
재사용성 | 시스템 자산이 하나 이상의 시스템에서 사용 가능 또는 다른 자산을 구축 가능 | |
분석성 | 변경의 영향이나 결함 또는 결함 원인에 대해 제품 진단하거나 수정 부분 식별 가능 | |
변경 용이성 | 결함이나 품질 저하 없이 효과적이고 효율적으로 수정 가능 | |
테스트 용이성 | 테스트 수행 용이 | |
이식성 | 적응성 | 시스템이 다른 하드웨어/소프트웨어/사용자 환경에 적용 가능 |
설치 용이성 | 특정 환경에서 시스템의 성종적인 설치/제거 가능 | |
대체 용이성 | 시스템이 동일 환경에서 동일 목적을 위해 다른 소프트웨어 제품으로 대체 가능 |
기능 적합성 테스트
사용자의 요구사항을 시스템이 얼마나 만족하는지에 대한 정보 제공
- 기능 완전성:
사용자가 요구하는 기능을 얼마나 제공하는지
요구사항과 테스트 케이스 간에 현재 시스템의 기능 제공 정도로 판단
명세 기반 테스트 - 기능 정확성:
사용자 기대 수준으로 얼마나 정확하게 동작하는지
사용자의 목적 달성 가능하도록 정확하게 동작하는 기능의 수로 판단
명세 기반 혹은 구조 기반 테스트 - 기능 적절성:
사용자의 사용 목적을 달성하는 데 도움을 주는 정도
대상이 되는 목적을 나열하고 각 목적별로 적절성 판단
성능 효율성 테스트
CPU 사이클, 디스크, 주 기억공간과 같은 자원의 사용, 주어진 시간 동안 처리할 수 있는 작업량, 자원 할당받는 태스크 수 등 시스템 특성에 따라 결정되는 요소를 구체적이면서 검증 가능한 형태로 진행
성능 테스팅
- 부하 테스팅: 부하를 계속 증가시키며 시스템의 임계점을 찾음
처리량이 증가하지 않거나 CPU 이용률이나 메모리 사용량이 비정상적으로 증가하는 임계점을 찾아 병목 현상 제거 과정 반복 - 스트레스 테스팅: 시스템 처리 능력 이상의 부하, 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리 확인
- 스파이크 테스팅: 짧은 시간 많은 사용자에 대한 시스템의 반응 측정
- 내구성 테스팅: 오랜 시간 동안 높은 부하 가하여 시스템의 반응 파악
Little`s law
시스템에 오래 머물러 있는 고객의 평균 수치는 오랜 시간 동안 에 걸친 평균 실제 도착률과 시스템에서 고객이 머문 평균 시간을 곱한 값과 동일하다는 것
용어 | 설명 |
동시 사용자 (Concurrent user) |
Active user + Inactive user |
Active user | 요청 후에 응답을 기다리는 사용자 |
Inactive user | 세션 정보를 가지고 있으나, 요청을 보내지 않는 사용자 |
처리량(Thoughput) | 단위 시간 동안 시스템(서버)에서 처리되는 요청 수 보통 TPS(Transaction Per Second)로 나타냄 |
응답 시간(Response time) | 요청을 보낸 후 응답이 처리되어 결과가 사용자에게 전달될 때까지 걸리는 시간 |
씽크 타임(Think time) | 요청을 보낸 후 응답 결과를 수신하고 다음 요청을 보낼 때까지 걸리는 시간 |
요청 간격(Request interval) | 요청을 보낸 후 다음 요청을 보낼 때까지 걸리는 시간 Request interval = Response time + Think time |
호환성 테스트
- 공존성:
다른 소프트웨어와 환경 및 자원을 공유하면서 요구된 기능을 효율적으로 수행할 수 있는지
시스템의 발생이 인명 손실이나 막대한 재산 피해, 또는 치명적인 환경 파괴를 가져올 수 있는 안전성 필수 시스템에서 매우 중요 - 상호운영성:
여러 시스템이 정보를 교환하거나 교환된 정보를 성공적으로 사용할 수 있는 정도
특별히 노력을 기울이지 않아도 시스템 또는 제품이 다른 시스템이나 제품과 함께 동작할 수 있는 능력
사용성 테스트
특정한 사용자들이 주어진 사용 환경에서 특정한 목적을 달성하기 위해 제품이나 시스템을 사용할 때 얻게 되는 효율성, 효과성 및 만족도로 정의
- 효과성:
사용자의 특정 목표 달성 위한 정확성 및 완전성
태스크 성공/실패로 판단 - 효율성:
목표 달성 관련하여 소비되는 자원
태스크 수행에 걸리는 시간으로 평가 - 만족도:
지정된 사용 환경에서 사용자의 불편함에 대한 정도와 제품 사용에 대한 태도, 사용자 요구가 충족되는 정도
각 태스크 수행 후 이용 난이도 수준 파악
사용성 평가 방법
- 휴리스틱 평가(Heuristic Evaluation)
평가 전문가가 제품과 관련된 사용성 원칙 기준으로 체크리스트 통해 사용성에 관한 문제점 도출 - FGI(Focus Group Interview)
그룹 인터뷰 방법
시스템 개발 이전 사용자의 요구사항을 파악하는 데 쓰이는 정성 평가
공통점이 있는 사용자들을 그룹별로 모아 시스템이나 문제점 등 의견 나누고 필요한 정보 수집 방법 - 인지적 워크쓰루(Cognitive Walk-through)
학습 용이성 분석에 중점
실제 사용자 대상 사전설명 또는 안내 없이 제품 사용하여 주어진 과제 달성토록 함
시스템 개발 전 주기에 걸쳐 진행되며, 평가 목적에 따라 방법을 달리함 - 설문(Questionnaire)
신뢰성 테스트
특정 조건에서 특정 기간 동안 시스템이 요구되는 서비스를 오동작 없이 제공
- 성숙성:
시스템 또는 구성 요소가 정상 작동 상태에서 신뢰성 요구 충족시키는지 - 가용성:
사용자가 시스템 또는 구성요소를 사용코자 할 때 사용 및 접근 가능 정도 - 결함 허용성:
하드웨어나 소프트웨어에 결함이 있는데도 시스템 또는 구성 요소가 의도한 대로 작동 - 복구성:
중단 또는 장애 발생한 경우 시스템이 영향 받은 데이터를 복구하고 상태 재설정할 수 있는 정도
가용성, MTTF(Mean Time To Failure) 등의 척도로 정량화
신뢰성 검증 방법: 통계적 테스트
사용자들이 쓰는 패턴인 운영 프로파일(가능한 입력들을 여러 개의 클래스로 분류하고, 분류된 각 클래스의 발생 확률로 구성)을 사용하여 테스트 케이스 생성
신뢰성 추적 위한 운영 프로파일 작성하여, 각 클래스의 발생 확률에 따라 테스트 케이스 생성
오류가 발생한 시간과 오류 발생 후 다음 오류 발생까지 걸리는 동작 시간 기록하여 신뢰성 추적
보안성 테스트
시스템이 정보 및 데이터를 보호하는 정도
- 기밀성:
접근 권한이 있는 사람만 데이터에 액세스 가능 - 무결성:
컴퓨터 프로그램 또는 데이터에 무단 접근 또는 변경 방지 - 부인 방지성:
사건 및 행위 후 부인 못하도록 행동 및 사건에 관해 입증 가능 - 책임성:
각 개인을 유일하게 식별하여 행위 기록하고 필요시 그 행위자 추적 가능 - 인증성:
사건 및 행동에 관해 실제 행위자임을 증명
보안성 검증 방법
침입 테스트: 칩입자(hacker)의 관점에서 소프트웨어 시스템의 취약성을 찾는 방법
침입 테스트로 취약성이 발견되지 않았다 할지라도 수많은 침입 시나리오를 미리 테스트하는 것은 불가능하므로 보안성이 확보되었다고 확신할 수 없음
정적 분석: 보안성 높은 소프트웨어가 준수해야 할 소스 코드 수준에서 코딩 규칙을 정의하고, 정적 분석 도구로 준수 사항 검사
유지보수성 테스트
시스템이 변경 요구를 만족시키는 능력을 테스트
- 기능 개선 및 추가
기능이나 성능 개선하거나 새로운 기능 추가하기 위해 프로그램 수정하는 작업
시스템 변경 작업 중 약 50% 차지 - 변경된 환경에 적응
운영체제나 인프라, 환경 등이 변경되었을 때 변화를 수용하도록 프로그램을 수정하는 작업
시스템 변경 작업 중 약 25% 차지 - 오류 수정
소프트웨어에 오류가 발견되었을 때 수정하는 작업
시스템 변경 작업 중 약 20% 차지 - 예상치 못한 장애 예방
장애 발생 이전 코드를 재구성하거나 문서를 갱신하여 장애가 발생하지 않도록 미리 예방
시스템 변경 작업 중 약 5% 차지
요구사항을 만족하도록 얼마나 쉽게 변경할 수 있는지 테스트하기 때문에 동적 테스트보다는 정적 테스트를 이용
수정 요구사항이 변경에 소요되는 시간이나 비용으로 표현되면 실제 소요 자원과 비교하는 방식으로 동적 테스트도 가능
이식성 테스트
서비스 이용자 단말기의 하드웨어 및 소프트웨어 환경이 달라도 동등한 서비스 제공 여부
운영체제(OS)와 브라우저, 태블릿과 스마트폰 등 애플리케이션 동작하는 운영환경과 사용 환경이 다양해지고 복잡해지며 중요성이 높아지는 추세