본문 바로가기

CSTS

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

기능 적합성 : 제품 또는 시스템이 명시적 또는 묵시적 요구를 충족시키는 기능을 제공하는 정도

  • 기능 완전성 : 기능 집합이 모든 명시된 요구사항을 포괄하는 정도
  • 기능 정확성 : 시스템이 정의된 정밀도로 정확한 결과를 제공하는 정도
  • 기능 적절성 : 기능이 목적 달성에 도움을 주는 정도

성능 효율성 : 명시된 조건 하에서 사용된 자원의 양에 대한 성능의 정도

  • 시간 반응성 : 기능 수행 시 시스템의 응답, 처리 시간 및 처리율이 요구사항을 충족시키는 정도
  • 자원 효율성 : 기능 수행 시 시스템이 사용하는 자원이 요구 사항을 충족시키는 정도
  • 수용성 : 시스템 매개 변수(동시 사용자, 통신 대역폭, 트랜잭션 처리량)의 최대 한계가 요구사항을 충족시키는 정도

호환성 : 제품, 시스템 또는 구성 요소가 다른 제품, 시스템 또는 구성 요소와 정보를 교환하거나 필요한 하드웨어 또는 소프트웨어 환경을 공유하면서 필요한 기능을 수행할 수 있는 정도

  • 공존성 : 다른 소프트웨어에 나쁜 영향을 미치지 않고 자원을 공유하면서 기능을 효율적으로 수행할 수 있는 정도
  • 상호운용성 : 둘 이상의 시스템 또는 구성 요소가 정보를 교환하고 그 정보를 사용할 수 있는 정도

사용성 : 특정한 사용자들이 주어진 사용 환경(특정 사용 컨텍스트)에서 특정한 목적을 달성하기 위해 제품이나 시스템을 사용할 때의 효율성, 효과성 및 만족도에 대한 정도

  • 적합 인식성 : 사용자가 자신의 필요에 시스템이 적합한지 여부를 인식할 수 있는 정도
  • 학습 용이성 : 사용자가 소프트웨어의 사용법을 배워 명시된 목적을 달성할 수 있는 정도
  • 운영 용이성 : 시스템이 쉽게 조작하고 제어할 수 있는 속성을 갖는 정도
  • 사용자 오류 방지성 : 시스템이 사용자로 하여금 오류를 범하지 않게 하는 정도
  • 사용자 인터페이스 심미성 : 사용자 인터페이스가 사용자에게 만족스러움을 주는 정도
  • 접근성 : 사용자의 특성이나 능력에 관계없이 시스템을 사용할 수 있는 정도
  •  

신뢰성 : 특정 조건에서 특정 기간 동안 오동작 없이 요구되는 기능을 수행하는 정도

  • 성숙성 : 시스템 또는 구성 요소가 정상 작동 상태에서 신뢰성 요구를 충족시키는 정도
  • 가용성 : 사용자가 시스템 또는 구성요소를 사용하고자 할 때 사용 및 접근이 가능한 정도
  • 결함 허용성 : 하드웨어나 소프트에어 결함에도 불구하고 시스템 또는 구성요소가 의도한 대로 작동하는 정도
  • 복구성 : 중단 또는 장애가 발생한 경우 시스템이 영향을 받은 데이터를 복구하고 재설정할 수 있는 정도

보안성 : 시스템이 정보 및 데이터를 보호하는 정도

  • 기밀성 : 접근 권한이 있는 사람에게만 데이터에 엑세스할 수 있도록 하는 정도
  • 무결성 : 시스템 똔느 구성 요소가 컴퓨터 프로그램 또는 데이터에 무단으로 접근하거나 이의 변경을 방지하는 정도
  • 부인 방지성 : 사건 및 행위 후에 부인하지 못하도록 행동 및 사건을 입증할 수 있는 정도
  • 책임성 : 각 개인을 유일하게 식별하여 행위를 기록하고 필요 시 그 행위자를 추적할 수 있는 능력
  • 인증성 : 사건 및 행동에 대해 실제 행위자임을 증명할 수 있는 정도

유지보수성 : 제품 똔느 시스템이 요지보수 될 수 있는 효율성의 정도

  • 모듈성 : 하나의 구성 요소 변경이 다른 구성요소에 미치는 영향이 최소화되도록 개별 구성요소로 구성된 정도
  • 재사용성 : 시스템 자산이 하나 이상의 시스템에서 사용될 수 있는 정도, 또는 다른 자산을 구축할 수 있는 정도
  • 분석성 : 부분 변경이 전체에 미치는 영향을 평가/결함에 대해 진단/ 수정될 부분을 식별할 수 있는 정도
  • 변경 용이성 : 결함이나 품질 저하 없이 효과적이고 효율적으로 수정될 수 있는 정도
  • 테스트 용이성 : 테스트 수행을 용이하게 하는 정도

이식성 : 다양한 플랫폼에서 운영될 수 있는 소프트웨어의 능력

  • 적응성 : 시스템이 다른 하드웨어, 소프트웨어 혹은 기타 사용 환경에 효과적이고 효율적으로 적용될 수 있는 정도
  • 설치 용이성 : 특정 환경에서 시스템을 성공적으로 설치 및 제거할 수 있는 정도
  • 대체 용이성 : 시스템이 동일한 환경에서 동일한 목적을 위해 다른 소프트웨어 제품으로 대체될 수 있는 정도

기능 적합성 테스트


사용자의 요구사항을 시스템이 얼마나 만족하는지에 대한 정보를 제공

 

기능 완전성 테스트

  • 기능 완전성은 사용자가 요구하는 기능을 얼마나 제공하는지 보는 것
  • 명세 기반 테스트 방법으로 테스트
  • 테스트 케이스 추출, 요구사항과 테스트 케이스 간의 추적성 정보 유지,
    현재 시스템이 얼마만큼 기능을 제공하는지 파악

기능 정확성 테스트

  • 기능 정확성은 시스템이 사용자가 기대하는 수준으로 얼마나 정확하게 동작하는 지 의미
  • 전체 소프트웨어 기능 중 사용자 의도된 목적을 달성할 수 있을 정도로 정확하게 동작하는 기능의 수로 정확성 판단
  • 명세 기반이나 구조 기반 테스트 방법 모두 사용

기능 적절성 테스트

  • 기능 적절성은 사용자의 사용 목적을 달성하는 데 도움을 주는 정도를 의미
  • 테스트의 대상이 되는 목적을 나열하고 각 목적별로 적절성을 테스트
  • 필요한 기능이 누락되지 않았는지, 올바르게 구현됐는지 테스트

성능 효율성 테스트


성능 평가 시 CPU 사이클, 디스크, 주 기억공간과 같은 자원의 사용, 주어진 시간 동안 처리할 수 있는 작업량, 자원이 할당되기를 기다리는 테스크의 수 등을 고려, 주로 시스템 특성에 따라 결정

 

성능 테스팅

  • 부하 테스팅 : 부하를 계속 증가시키면서 시스템의 임계점을 찾음
    임계점은 처리량이 더는 증가하지 않거나 CPU 이용률이나 메모리 사용량이 비정상적으로 증가하는 지점을 의미
    이 테스팅으로 병목 지점을 찾고 병목 현상을 제거하는 과정을 반복
  • 스트레스 테스팅 : 시스템 처리 능력 이상의 부하, 임계점 이상의 부하를 가하여 비정상적 처리를 테스트
  • 스파이크 테스팅 : 짧은 시간에 사용자가 몰릴 때 시스템의 반응을 측정 (티켓팅)
  • 내구성 테스팅 : 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템의 반응을 파악

 

리틀의 법칙

시스템에 오랜 시간 동안 머물러 있는 고객의 평균 수치는 오랜 시간 동안에 걸친 평균 실제 도착률과 시스템에서 고객이 머문 평균 시간을 곱한 값과 동일하다는 것

  • 동시 사용자 : active user + inactive user
  • Active user : 요청 후에 응답을 기다리는 사용자
  • Inactive user : 세션 정보를 가지고 있지만 요청을 보내지 않는 사용자
  • 처리량 : 단위 시간 동안 시스템에서 처리되는 요청 수. TPS로 나타냄.
  • 응답 시간 : 요청을 보낸 후 응답이 처리되어 결과가 사용자에게 전달될 때까지 걸리는 시간
  • 씽크 타임 : 요청을 보낸 후 응답 결과를 수신하고 다음 요청을 보낼 때까지 걸리는 시간
  • 요청 간격 : 요청을 보낸 후 다음 요청을 보낼 때까지 걸리는 시간
    Request interval = Response time + Think time

Current user = TPS * Request interval = TPS * (Response time + Think time)

Active user = TPS * Response time

Inactive user = TPS * Think time


호환성 테스트


공존성 : 다른 소프트웨어와 환경 및 자원을 공유하면서 요구된 기능을 효율적으로 수행하는 정도

상호운영성 : 여러 시스템이 정보를 교환하거나 교환된 정보를 성공적으로 사용할 수 있는 정도

 

공존성

  • 시스템의 장애 발생이 인명 손실이나 막대한 재산 피해, 치명적인 환경 파괴를 가져올 수 있는 안전성 필수 시스템에서 중요
  • 여러 곳에서 다운 받아 설치할 때 기존 애플리케이션이 정상적으로 동작되지 않을 가능성이 있음

상호운영성

  • 특별하게 노력을 기울이지 않아도 시스템 또는 제품이 다른 시스템이나 제품과 함게 잘 동작할 수있는 능력
  • IoT나 국방정보시스템 구축 시 매우 중요
  • 한국군에서는 LISI 모델을 바탕으로 상호운영성 측정

사용성 테스트


사용성은 특정한 사용자들이 주어진 사용 환경에서 특정한 목적을 달성하기 위해 제품이나 시스템을 사용하게 될때 얻는 효율성, 효과성 및 만족도로 정의

 

  • 효과성 : 사용자가 특정 목표를 달성하는 정확성 및 완전성
  • 효율성 : 사용자가 목표를 달성하는 정확성 및 완전성과 관련하여 소비되는 자원
  • 만족도 : 지정된 사용 환경에서 사용자가 불편함이 없는 정도, 제품 사용에 대한 태도, 지정된 사용 환경에서 사용될 때 사용자 요구가 충족되는 정도

 

  • 적합 인식성 : 사용자가 자신의 필요에 시스템이 적합한지를 인식할 수 있는 정도
  • 학습 용이성 : 사용자가 소프트웨어 사용법을 배워 명시된 목적을 달성할 수 있는 정도
  • 운영 용이성 : 시스템이 쉽게 조작하고 제어할 수 있는 속성을 갖는 정도
  • 사용자 오류 방지성 : 시스템이 사용자로 하여금 오류를 범하지 않게 하는 정도
  • 사용자 인터페이스 심미성 : 사용자 인터페이스가 사용자에게 만족스러움을 주는 정도
  • 접근성 : 사용자의 특성이나 능력에 관계없이 시스템을 사용할 수 있는 정도

 

휴리스틱 평가

  • 사용성 원칙을 기준으로 체크리스트를 통해 사용성에 관한 문제점을 도출하는 방법
  • 3~5명 정도 되는 적은 이원의 전문가를 활용하여 비교적 쉽게 실시할 수 있음
  • 중요한 사용성 문제를 많이 도출할 수 있고, 효율적이고 빠르게 수행할 수 있다는 장점

FGI

  • 그룹 인터뷰 방법
  • 시스템 개발 이전에 사용자의 요구사항을 파악하는 데 많이 사용되는 정성적인 평가 방법
  • 공통점이 있는 사용자들을 그룹별로 모아서 의견을 나누고 필요한 정보 수집

인지적 워크쓰루

  • 학습 용이성 분석에 중점을 둔 방법
  • 실제 사용자를 대상으로 사전 설명 또는 안내 없이 제품을 사용하게 하여 주어진 과제를 달성하도록 함

신뢰성 테스트


  • 성숙성 : 시스템 또는 구성 요소가 정상 작동 상태에서 신뢰성 요구를 충족시키는 정도
  • 가용성 : 사용자가 시스템 또는 구성 요소를 사용하고자 할 때 사용 및 접근이 가능한 정도
  • 결함 허용성 : 하드웨어나 소프트웨어에 결함이 있는데도 시스템 또는 구성 요소가 의도한 대로 작동하는 정도
  • 복구성 : 중단 또는 장애가 발생한 경우 시스템이 영향을 받은 데이터를 복구하고 상태를 재설정할 수 있는 정도

신뢰성은 가용성, MTTF(Mean Time To Failure) 등의 척도로 정량화

가용성 : 시스템이 주어진 기간 동안 서비스를 실제로 제공할 수 있는지 나타내는 속성

MTTF : 시스템이 운영된 후 오류가 발생할 때까지 걸리는 평균 동작 시간

 

통계적 테스트

  • 시스템이 실제로 사용자들이 쓰는 패턴인 운영 프로파일을 사용하여 테스트 케이스를 생성
  • 운영 프로파일은 가능한 입력들을 여러개의 클래스로 분류하고, 분류된 각 클래스의 발생 확률로 구성
  • 신뢰성 추정을 위해 일단 운영 프로파일을 작성
  • 각 클래스의 발생 확률에 따라 테스트 케이스를 생성
  • 오류가 발생하기까지 걸리는 시스템 동작 시간이 중요하므로 오류가 발생한 시간과 오류 발생 후 다음 오류가 발생할 때까지 걸리는 동작 시간을 기록

보안성 테스트


시스템이 정보 및 데이터를 보호하는 정도

  • 기밀성 : 접근 권한이 있는 사람에게만 데이터에 엑세스할 수 있도록 하는 정도
  • 무결성 : 시스템, 구성 요소가 컴퓨터 프로그램 또는 데이터에 무단으로 접근 또는 변경되는 것을 방지하는 정도
  • 부인 방지성 : 사건 및 행위 후에 부인하지 못하도록 행동 및 사건에 관해 입증할 수 있는 정도
  • 책임성 : 각 개인을 유일하게 식별하여 행위를 기록하고 필요시 그 행위자를 추적할 수 있는 능력
  • 인증성 : 사건 및 행동에 관해 실제 행위자임을 증명할 수 있는 정도

침입 테스트

  • 침입자 관점에서 소프트웨어 시스템의 취약성을 찾는 테스트 방법

정적 분석

  • 보안성 높은 소프트웨어가 준수해야 할 소스 코드 수준에서 코딩 규칙을 정의
  • 코딩 규칙을 준수하는지 정적 분석 도구로 검사
  • CWE Common Weakness Enumeration : 소스코드에 존재할 수 있는 신뢰성 및 보안성 관련 코딩 규칙 목록 정의

유지보수성 테스트


유지보수성 : 시스템이 변경 요구를 만족시키는 능력

 

  • 기능 개선 및 추가 : 기능이나 성능을 개선하거나 새로운 기능을 추가하기 위해 프로그램을 수정하는 작업
    시스템 변경 작업 중에서 약 50% 차지
  • 변경된 환경에 적응 : 운영체제나 인프라, 환경 등이 변경되었을 때 이 변화를 수용하도록 프로그램 수정
    시스템 변경 작업 중에서 약 25% 차지
  • 오류 수정 : 소프트웨어에 오류가 발견되었을 때 이를 수정하는 작업
    시스템 변경 작업 중에서 약 20% 차지
  • 예상치 못한 장애 예방 : 장애가 발생하기 전에 코드를 재구성하거나 문서를 갱신하여 장애가 발생하지 않도록 예방
    시스템 변경 작업 중에서 약 5% 차지

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

시간이나 비용을 계산하여 요구사항과 비교하는 방식으로 동적 테스트해야 할 수도 있음

 

모듈화는 시스템을 여러 부분으로 분할해서 각 부분이 정의된 기능을 잘 수행하도록 하는 설계 기법

모듈화를 측정하는 척도로 fan-in과 fan-out이 있음

fan-in은 얼마나 많은 모듈이 주어진 모듈을 호출하는가를 나타냄

fan-out은 주어진 모듈이 호출하는 모듈 수를 나타냄

 

모듈 간의 결합도는 낮게 설계되어야 함

결합도가 높으면 모듈이 의존하는 모듈들이 변경될 때 영향을 받을 가능성이 크다는 것을 의미

 

모듈의 응집도는 높을수록 좋음

개개의 모듈을 구성하는 요소들이 얼마나 서로 관련되어 있는가를 나타냄

재사용성이 좋으며 변경이나 오류를 국부화할 수 있음

 

객체지향 프로그램에서 클래스의 응집도를 나타낸 척도가 LCOM

이 척도는 클래스 내의 메소드들이 얼마나 서로 연관되어 있는지를 나타내고, 여러 버전이 있음.

 

모듈의 복잡도도 유지보수성에 영향을 미침

모듈의 복잡도를 측정하는 대표적인 척도가 순환 복잡도 RIAC

 

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

이식성 테스트


이식성 테스트는 서비스 이용자 단말기의 하드웨어 및 소프트웨어 환경이 달라도 동등한 서비스를 제공하는지 테스트

 

구분 진단지표 진단기준 진단방법
웹표준 문법 준수 표준 (X)HTML 문법 준수 여부 W3C Markup Validator에서 출력된 오류 개수에 따라 감정 W3C Markup Validator
표준 CSS 문법 준수 여부 W3C CSS Validator에서 출력된 오류 개수에 따라 감정 W3C CSS Validator
웹 호환성 확보 기능 호환성 확보 여부 - 브라우저 부가 기능을 이용해서 해당 페이지 내에 사용된 Javascript 오류 및 DOM 경고 발생 시 감점 브라우저 부가 기능
- Javascript가 의도한 기능이 정상적으로 동작하는지 점검하여 비정상적 동작에 대해 감점 크로스 브라우징 테스트 준용
화면표시 호환성 확보 여부 다양한 웹 브라우저에서 화면표시가 동등하게 구현되었는지 여부 확인 크로스 브라우징 테스트 준용
비표준 기술제거 비표준 기술제거 여부 웹 사이트에서 비표준기술 수동 평가
최신 웹 표준 기술 사용 여부 최신 웹 표준 기술 HTML5 사용 여부 점검 수동 평가
  • 크로스 브라우징 테스트는 다양한 브라우저 또는 버전이 다른 동일한 브라우저에서 애플리케이션이 동일하게 동작하는지 테스트하는 것을 의미
  • 상이한 운영체제에서 동작하거나 브라우저에서 채택하는 렌더링 엔진이 다르기 때문에 동일한 애플리케이션이 동작하더라도 브라우저마다 다르게 보일 수 있으므로 크로스 브라우징 테스트를 수행하는 작업은 매우 중요
  • Selenium Grid, QTP, RFP와 같은 도구를 사용