본문 바로가기
CSTS (일반등급)

CSTS 4장 품질 특성과 비기능 테스트

by record2840 2025. 5. 22.

ISO 25010 품질 특성 (외우기)

주특성 부특성 설명
기능 적합성
(완정적)
기능 완전성 기능 집합이 모든 명시된 요구사항을 포괄하는 정도
사용자가 요구하는 기능을 얼마나 제공하는지
사용자의 요구사항을 시스템이 얼마나 만족하는지에 대한 정보 제공
명세 기반 테스트
기능 정확성 시스템이 정의된 정밀도 정확한 결과를 제공하는 정도
시스템이 사용자가 기대하는 수준으로 얼마나 정확하게 제공하는지
명세 기반이나 구조 기반 테스트 방법 모두 사용
기능 적절성 기능이 목적 달성에 도움을 주는 정도
테스트이 대상이 되는 목적을 나열하고 각 목적별로 적절성을 테스트한다.
성능 효율성 시간 반응성 기능 수행 시 시스템의 응답,처리 시간 및 처리율이 요구사항을 충족시키는 정도
자원 효율성 기능 수행 시 시스템이 사용하는 자원이 요구 사항을 충족시키는 정도
수용성 시스템 매개 변수(동시 사용자 수, 통신 대역폭, 트랜잭션 처리량 등)의 최대 한계가 요구사항을 충족시키는 정도
호환성
(호공상)
공존성 다른 소프트웨어에 나쁜 영향을 미치지 않고 자원을 공유하면서 요구되는 기능을 효율적으로 수행할 수 있는 정도
시스템의 장애 발생이 인명 손실이나 막대한 재산 피해, 치명적인 환경 파괴를 가져올 수 있는 안전성 필수 시스템에서 중요하다
상호운영성 둘 이상의 시스템 또는 구성 요소가 정보를 교환하고 교환된 정보를 사용할 수 있는 정도
시스템 또는 제품이 다른 시스템이나 제품과 함께 잘 동작할 수 있는 능력
사물인터넷(IoT) 국방정보시스템
사용성 적합 인식성 사용자가 자신의 필요에 시스템이 적합한지 여부를 인식할 수 있는 정도
학습 용이성 사용자가 소프트웨어의 사용법을 배워 명시된 목적을 달성할 수 있는 정도
운영 용이성 시스템이 쉽게 조작하고 제어할 수 있는 속성을 갖는 정도
사용자 오류 방지성 시스템이 사용자로 하여금 오류를 범하지 않게 하는 정도
사용자 인터페이스 심미성 사용자 인터페이스가 사용자에게 만족스러움을 주는 정도
접근성 사용자의 특성이나 능력(연령과 장애)에 관계없이 시스템을 사용할 수 있는 정도
신뢰성
(신성가장회)
성숙성 시스템 또는 구성 요소가 정상 작동 상태에서 신뢰성 요구를 충족시키는 정도
가용성 사용자가 시스템 또는 구성요소를 사용하고자 할 때 사용 및 접근이 가능한 정도
장애 허용성 (결함 허용성) 하드웨어나 소프트웨어 결함이 있음에도 불구하고 시스템 또는 구성 요소가 의도한 대로 작동하는 정도
복구성 (회복 가능성) 중단 또는 장애가 발생한 경우 시스템이 영향을 받은 데이터를 복구하고 상태를 재설정할 수 있는 정도
보안성
(보기무부책인)
기밀성 접근 권한이 있는 사람에게만 데이터에 액세스할 수 있도록 하는 정도
암호화 및 복호화가 정확히 구현된 비율 등으로 측정
무결성 시스템 또는 구성 요소가 컴퓨터 프로그램 또는 데이터에 무단으로 접근하거나 이의 변경을 방지하는 정도
부인방지 사건 및 행위 후에 부인하지 못하도록 행동 및 사건을 입증할 수 있는 정도
책임성 각 개인을 유일하게 식별하여 행위를 기록하고 필요 시 그 행위자를 추적할 수 있는 능력
인증성 (진본성) 사건 및 행동에 대해 실제 행위자임을 증명할 수 있는 정도
유지보수성
(유모재분변테)
모듈성 하나의 구성요소에 대한 변경이 다른 구성 요소에 미치는 영향이 최소화되도록 시스템 또는 컴퓨터 프로그램이 개별 구성요소로 구성된 정도
재사용성 시스템 자산이 하나 이상의 시스템에서 사용될 수 있는 정도
다른 자산을 구축할 수 있는 정도
분석성, 부분에 의도된 변경이 전체 시스템에 미치는 영향을 평가하거나 결함 또는 결함 원인에 대해 제품을 진단하거나 수정될 부분을 식별할 수 있는 정도
변경 용이성 결함이나 품질 저하 없이 효과적이고 효율적으로 수정될 수 있는 정도
테스트 용이성 테스트 수행을 용이하게 하는 정도
이식성
(이적설대)
적응성 시스템이 하드웨어, 소프트웨어 혹은 기타 사용 환경에 효과적이고 효율적으로 적용될 수 있는 정도
설치 용이성 특정 환경에서 시스템을 성공적으로 설치 및 제거할 수 있는 정도
대체 용이성 시스템이 동일한 환경에서 동일한 목적을 위해 다른 지정된 소프트웨어 제품으로 대체될 수 있는 정도

외우는 게 처음에는 부담스러워서 쪼개서 외우고  나중에 전체적으로 써 보면 좋습니다. 

 

벤치마크 테스트
실존하는 비교 대상을 두고 하드웨어나 소프트웨어의 성능을 비교 시험 평가 하는 것
한 개 또는 여러 개의 대표적인 비교 대상과 비교 시험을 반복하여 성능을 평가하는 방법이다.

 

사용성 -------------------

성능 테스팅 종류 (외우기)

종류 설명
부하 테스팅 부하를 계속 증가시키면서 시스템의 임계점을 찾는다. 병목지점을 찾고 병목 현상을 제거하는 과정을 반복한다.
스트레스 테스팅 임계점 이상의 부하를 가하며 비정상적인 상황에서의 처리를 테스트한다.
스파이크 테스팅 짧은 시간에 사용자가 몰릴 때 시스템의 반응을 측정한다.
내구성 테스팅 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템의 반응을 파악한다.

 ☞ 책에 나오는 그림을 보고 어느 것인이 알아야 합니다. 

 

사용성 테스트 → 사용성 평가 품질특성

품질 특성 설명
효과성 사용자가 특정 목표를 달성하는 정확성 및 완전성
효율성 사용자가 목표를 달성하는 정확성 및 완전성과 관련하여 소비되는 자원
만족도 지정된 사용 환경에서 사용자가 불편함이 없는 정도와 제품 사용에 대한 태도

 

사용성 평가를 위한 방법 (3가지)
┌ 휴리스틱 평가(Heuristic Evalution): 사용성 평가 전문가가 제품과 관련된 사용성 원칙을 기준으로 체크리스트를 통해 사용성에 관한 문제점을 도출
├ FGI(Focus Group Interview)
는 그룹 인터뷰 방법. 시스템 개발 이전에 사용자의 요구사항을 파악하는 데 많이 사용되는 정성적인 평가방법. 공통점이 있는 사용자들을 그룹(7~8)으로 모아 시스템이나 문제점 등에 관해 의견을 나누고 필요한 정보를 수집하는 방법

└ 인지적 워크쓰루(Cognitive walk-through): 학습 용이성 분석에 중점을 둔 방법. 실제 사용자를 대상으로 사전설명 또는 안내 없이 제품을 사용하여 주어진 과제를 달성.

신뢰성
à MTTF(Mean Time To Failure) : 시스템이 운영된 후 오류가 발생할 때까지 걸리는 평균 동작 시간
) MMTF 100
à 100시간 단위마다 1개의 오류가 발생할 수 있다.

 

보안성 ---------------------------

보안성 검증1 →  침입테스트 사례
침입자의 관점에서 소프트웨어 시스템의 취약성을 찾는다.
침입 테스트는 시스템 안전성에 관해 경험과 지식이 많은 사람이 행하는 것이 보통이다.
가능한 한 많은 시나리오(과거에 사용되었던)을 이용하여 소프트웨어 취약성을 찾고 해결책을 제시한다.
침입 테스트로 소프트웨어의 취약성이 발견되지 않았다 할지라도 시스템의 보안성이 확보되었다고는 확신할 수 없다.
보안성 검증2
정적 분석 →  코딩규칙 정의, 준수하는지를 정적 분석 도구로 검사
보안성은 일반적인 테스팅 기법으로 검출할 수 없으므로 침투 시험을 수행하여 보안의 취약점을 확인한다.

 

유지보수성------

유지보수성 테스트 4가지
①기능 개선 및 추가:
②변경된 환경에 적응: 운영체제, 인프라, 환경 등이 변경되었을 때
③오류 수정
④예상치 못한 장애 예방 : 코드를 재구성, 문서 갱신 등 장애 예방 작업

요구사항을 만족하도록 얼마나 쉽게 변경할 수 있는지 테스트하기 때문에 동적 테스트보다는 정적 테스트.

 

모듈성, 분석성, 재사용성, 변경 용이성을 테스트하기 위해서는 다음과 같은 특성들을 검토

모듈화 정도, 모듈간 결합도, 모듈 응집도, 모듈 복잡도
모듈화: 시스템을 여러 부분으로 분할하여 각 부분이 정의된 기능을 잘 수행하도록 하는 설계 기법
  
척도: fan-in : 얼마나 많은 모듈이 주어진 모듈을 호출하는가
           fan-out :
주어진 모듈이 호출하는 모듈 수

모듈간의 결합도는 낮게 설계되어야 한다.
모듈의 응집도는 개개의 모듈을 구성하는 요소들이 얼마나 서로 관련되어 있는가를 나타낸다.

 

응집도는 높을수록 좋다. 응집도가 높은 모듈은 다른 모듈에 의존 관계가 낮아 재사용성이 좋으며 변경이나 오류를 국부화할 수 있다. (=줄일 수 있다.)
LCOM(Lack of Cohesion in Methods) :
클래스의 응집도는 나타내는 척도

모듈의 복잡도는 유지보수성에 영향을 미친다.
순환복잡도 : 모듈의 복잡도를 측정하는 척도

 

테스트 용이성을 높이기 위한 특성 : 프로그램을 얼마나 쉽게 테스트할 수 있는가 (표 항목 외우기)

항목 설명
제어 용이성 프로그램의 실행을 제어하기 용이하도록 설계한다. 제어 용이성이 높아지면 테스트를 자동화할 수 있는 부분이 많아지고 최적화할 수 있다.
관찰 가능성 프로그램 내부 상태가 현재 어떤 상태인지 쉽게 파악할 수 있는 기능을 갖추도록 설계
단순성 시스템 구조를 단순하게 설계한다. 코딩 표준에 따라 프로그램을 작성하여 쉽게 이해되도록 하거나, 프로그램 구조를 단순화하여 결함이 발생하였을 때 다른 곳으로 쉽게 전이되지 않도록 설계한다.
분할 용이성 테스트 할 대상 영역을 제어함으로써 문제가 발생된 곳을 고립시켜 독립적으로 모듈에 테스트를 수행할 수 있도록 설계한다. 가능한 한 시스템 모듈 간의 의존성을 줄인다.
운영 용이성 프로그램에 결함이 발생하여도 테스트 작업을 계속할 수 있도록 설계한다.
안정성 테스트하는 동안 소프트웨어에 변경이 자주 발생하지 않도록 설계한다.
이해 용이성 소프트웨어 설계 정보가 잘 조직화되어 쉽게 접근 가능하도록 하여 소프트웨어를 더욱 잘 이해할 수 있도록 설계한다.

 

외울 때... 

용이성 4가지 + 나머지 3가지 
제어용이성, 분할용이성, 운영용이성, 이해용이성

나머지 관찰가능성, 단순성, 안정성

 

이식성 테스트 -------------------
서비스 이용자 단말기의 하드웨어 및 소프트웨어 환경이 달라도 동등한 서비스를 제공하는지 테스트하는 것
) 전자정부 서비스: 다양한 브라우저, 단말기에도 동작하도록 서비스 호환성 지침을 제정 →
크로스 브라우징
크로스 브라우징 테스트 도구 : Selenium, Grid, QTP, RFP

반응형