자격증

CSTS 일반등급 요약 제 4장, 5장, 6장

영우는여전히 2025. 2. 23. 10:19

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

기능 테스트

: 요구사항 측면의 결함 검출 및 충족 여부 확인, 모든 테스트 수준(컴통시인)에서 진행

*컴통시인 : 컴포넌트, 통합, 시스템, 인수 

비기능 테스트

: 품질 요구사항 측면에서 결함 검출 및 충족 확인, 일반적으로 (시,인) 수준에서 진행
*시인 : 시스템, 인수

 

품질특성 (주특성과 부특성): 기사신호이성보유

좀 복잡한 거 같은데 외우긴 해야한다. 의미는 보다보면 대충 보이고, 주특성 부특성은 암기
외우는 방법은 좀 웃긴거 같아도 나름 도움 됐다.

주특성 부특성  
기능적합성 기능전성 모든 요구사항 정도
  기능확성 기대 수준을 정확 달성 정도
(완정적) 기능절성 사용목적 달성 정도
     
성능효율성 원효율성 자원 효율
  용성 시스템이 많은 사용자와 데이터를 동시처리 할 수 있는지
(시스템 매개변수의)최대 한계가 요구사항 충족하는가
성(자수시) 간반응성 응답, 처리 시간 충족
     
호환성 존성 다른 SW에게 환경 등 공유할 때 악영향 없는가
호(공상) 호운영성 여러 시스템정보 교환,사용 원활한가? (IoT)
     
사용성 류방지성 사용자 오류 방지 되는가
  근성 남녀노소 아무나 사용하기(접근하기) 쉬운지
  사용자
인터페이스미성
사용자 UI 만족하게
  식성 사용자 스스로 시스템이 적합한지 인식하게
  영용이성 쉽게 조작 제어 가능한지
사(오접심인운학) 습용이성 사용법 배워 사용 목적을 잘 달성하는지
     
신뢰성 숙성 정상 작동 상태에서의 신뢰성 있는가?
  구성 중단, 장애 시 Data 복구 재설정 정도
  결함용성 결함에도 작동하는 정도
신(성복허가) 용성 사용 및 접근 가능한 정도
     
보안성 부인방지성 사건 및 행위 부인 못 하도록 입증할 수 있는 정도
  증성 실제 행위자 임을 증명
  결성 시스템, 구성 요소가 데이터에 무단접근/변경 방지
  밀성 접근 권한 있는 사람에게만 액세스
보(부인무기책) 임성 개인유일하게 식별 행위자 추적
     
유지보수성 석성 부분 변경했을 때 시스템에 미치는 영향을 평가 /
수정할 부분을 식별할 수 있는 정도 / 결함에 대해 진단
  경용이성 결함이나 품질 저하 없이 수정 가능 정도
  스트용이성 용이한 테스트 정도
  사용성 하나 이상의 시스템에서 사용, 또는 다른 자산 구축
유(분변테재모) 듈성 모듈 간에 결합도 낮게, 한 모듈 응집도 높게
(구성요소 변경이 미치는 영향 적게)
     
이식성 응성 다른 환경에 적용 가능
  체용이성 다른 제품으로 대체 가능
이(적대설) 치용이성 특정 환경에 설치 및 제거 가능

1. 기능 적합성 테스트 [기(완정적)]

제품 또는 시스템이 요구 충족하는가? 기능 완전, 정확, 적절성


2. 성능 효율성 테스트 [성(자수시)

수용성, 시간반응성, 자원효율성(활용성)

  • 성능테스팅 종류
    • 부하 테스팅 : 부하를 계속 증가시키며 시스템의 임계점을 찾는다.
    • 스트레스 테스팅 : 임계점 이상의 부하를 가한다.
    • 스파이크 테스팅 : 짧은 시간에 사용자가 몰릴때 시스템의 반응을 측정한다.(여러번도O)
    • 내구성 테스팅 : 오랜 시간 동안 시스템에 높은 부하를 가한다.
    • 벤치마크 테스트 : 실제로 비교 대상과 성능을 비교 시험, 평가

3. 호환성 테스트 [호(공상)]

공존성, 상호 운영성 → 다른 프로그램과 호환 잘되는가

  • LISI 능력 모델 (격리, 불완전, 연결, 기능적, 도메인, 전군적)
    -> 중요한 건지 모르겠습니다. 딱히 필요 없는 것도 같습니다.

4. 사용성 테스트 [사(오접심인운학)]

사용자 류 방지성, 근성, 사용자 인터페이스(UI) 미성, 적합 식성, 영 용이성, 습 용이성

특정 사용환경, 시스템 제품 사용의 효율, 효과, 만족도

  • 사용성 평가 방법
    • 휴리스틱 평가 (heuristic : 경험적인, 스스로 발견하게 하는) : 사용성 평가 전문가 체크리스트로 사용성에 관한 문제점 도출
    • FGI (focus group interview) : 공통점이 있는 사용자들이 그룹 별로 모여 의견을 나눈다.
    • 인지적 워크쓰루 (walk through : SW 설계서의 오류를 검토 과정에서 발견하기 위한 회의**)** : 사전 설명/안내 없이 제품을 사용하여 주어진 과제를 달성하도록 한다.
  • = 회의 평가 도출 그룹 의견 나누는 = 휴리스틱, FGI, 워크 쓰루 = 사용성 테스트
  • 이거 3개는 외울 것

5. 신뢰성 테스트 [신(성복허가)]

숙성, 구성, 결함 용성, 용성

특정 조건, 기간 동안 오동작 없는가, 기능 수행 하는가

정량화 : 가용성, MTTF(Mean Time To Failure)

주로 통계적 테스트 방법 사용


6. 보안성 테스트 [보(부인무기책)]

인방지성, 증성, 결성, 밀성, 임성

  • 보안성 검증 : 침입 테스트, 정적 분석(CWE)

7. 유지 보수성 테스트 [유(분변테재모)]

*원래 이게 원조가 유지테 뭐시기였는데, 나는 유지테 보다는 변태가 와닿아서....(??)
찰지게 꽂히는 걸로 그냥 정했다... 유지테도 생각났는데 아 그 뭐 변태로도 할 수 있었는데? 이렇게 희미하게 기억나길래...굳이 막 변태를 좋아하는건 아니고요... ㅜㅜ

 

석성, 경 용이성, 스트 용이성, 사용성, 듈성

  • 모듈화 정도 (fan-in, fan-out이 낮아야 한다.)
  • 모듈 간 결합도는 낮게 설계되어야 한다.
  • 모듈 응집도는 높을수록 좋다.
  • 모듈 복잡도 (순환복잡도가 75 이상이면 결함수정할때 새로운 결함 발생 가능성이 매우 높음

8. 이식성 테스트 [이(적대설)]

응성, 체 용이성, 치 용이성

  • 다양한 플랫폼에서 운영될 수 있는 SW인가? 하드웨어, 소프트웨어 환경이 달라도 동등한 서비스를 제공하는지 여부 평가

제 5장 위험 기반 테스트 [범위 X]


제 6장 소프트웨어 생명 주기 모델과 테스트

소프트웨어 생명 주기 모델

  1. 순차적 개발 모델
  2. 진화적 개발 모델
  3. 애자일 개발 모델

1.  순차적 개발 모델

  • 요구 사항개발 초기에 완전히 정의되어있을 때 적합
  • 프로세스와 문서 위주의 방법론 → 관습적

  1-1. 폭포수 모델

  1. 요구사항
  2. 요구사항 분석(명세화)
  3. 구조 설계(전체적 구조 결정)
  4. 상세 설계(산출물 : 상세 설계 명세)
  5. 코딩(산출물 : 프로그램)
  6. 테스팅(완성된 시스템 결함 검출)
  7. 운영
  • 개발 중심 모델이다. 테스트 작업을 코딩 후 하나의 개발 단계로만 취급
  • 요구 사항이 개발자에게 익숙하거나, 변경이 개발 도중 빈번하지 않을 때 적합
  • 개발 과정에서 SW 관한 문서 정보 많이 산출

1-2. V-모델 (V모델)

* 이전 포스팅에 나왔던 V&V와 같은 것이다.
예를 들어 컴포넌트 테스팅은 모듈 테스팅, 단위 테스팅 뭐 이렇게도 말하니까
같은 의미의 말들을 적어놓으면 좋다. Exercise 문제 같은거 풀면 알게 된다.

  • 개발과 테스트를 동등하게 한다. 폭포수 모델의 반대
  • 개발 시작, 테스트 활동 시작
  • 요구 사항 ↔ 인수 테스트 / 요구 사항 분석 ↔ 시스템 테스트 구조 설계 ↔ 통합 테스트 / 상세 설계 ↔ 단위 테스트

  • V = V&V(Verification(검증) & Validation(확인)
  • ↘ 왼쪽 화살표 : 개발관련단계(SDLC: Software Development Life Cycle),
  • ↗ 오른쪽 화살표 : 테스트관련단계(STLC : Software Testing Life Cycle)

* 검증이나 확인이나 같은 말 아닌가.?
Verification(검증)은 시스템이 명세를 만족하는지, 
Validation(확인)은 시스템이 사용자의 요구 사항을 만족하는지


2. 진화적 개발 모델

  • 현실적으로 요구사항이 명확하지 않을 때 적합
  • 점진적, 반복적(Iteration) ( 개선 발전 시켜 나아간다. )
  • 대표적인 방법은 나선형 개발 모델

*이터레이션(Iteration) : 프로젝트를 진행 시 짧은 개발 주기를 반복하며 고객 평가, 요구 수용하는 SW 개발 방법


 2-1. 나선형 개발 모델

  • 반복적·점진적으로 개발하는 모델
  • 일반적으로 기술적으로 어렵거나 고객 비즈니스 가치를 최상으로 만드는 요구사항 먼저 프로토 타입 개발, 테스트 평가 하며 개발주기 이어감.
  • 개발 주기가 시작 될 때마다 위험 분석을 수행 잠재적 위험을 파악하여 해결해 나갈 수 있다.
  • 나선형의 각 타원에서 생명 주기 모델들을 여러개 혼합하여 개발할 수 있다. (메타 생명 주기 모델)
  • 요구사항 → 설계 → 프로토타입 → 테스트 및 고객평가 → 재설계 → 프로토타입 → 테스트 및 고객평가 → 재설계 → …. (무수히 반복)→ 구현 → 컴포넌트테스트 → 통합테스트 → 시스템테스트 → 인수테스트

3. 애자일 개발 모델

  • 간단하고 빠르다. 폭포수 모델처럼 문서 중심의 매우 복잡한, 프로세스 위주의 방법론과 대치
  • 애자일 방법론은 소프트웨어 테스트를 매우 강조한다.
  • 이터레이션이 짧기 때문에, 고객이 실제 동작하는 소프트웨어(일의 진척도)를 빠르게 볼 수 있다.
  • 반복적이면서 점진적인 개발 접근 방식(IID)을 따른다.
    IID는 소프트웨어 개발주기를 여러개의 이터레이션으로 구분
    (IID: Iterative and Incremental Development 반복적 및 점진적 개발)

애자일 선언(핵심가치) 암기*

  1. 사람 및 상호 의사교환이 프로세스나 도구보다 우선한다. (대표적인 애자일 방법인 XP는 개발자가 과도한 작업을 피하는 것이 중요하단 사실을 강조한다.)
  2. 동작하는 소프트웨어가 포괄적인 문서보다 우선한다.
  3. 고객과의 협력이 계약 협상보다 우선한다.
  4. 변화에 반응하는 것이 계획을 따르는 것보다 우선한다.

짝 프로그래밍

 

: 페이지 115 한 명 보다 두 명이 낫다 손해 아니고 좋다 뭐 그런 뜻


TDD (테스트주도개발) * 그림 암기

  • 테스트 케이스를 먼저 작성,
  • 실제 프로그램의 코드를 나중에 작성
  • 테스트 되지 않는 코드가 없다. → 결함 발생 가능성 하락테스트 용이성 상승
  • 실패하는 테스트 작성 → 통과하는 테스트 코드 작성 → 리팩토링 (코드개선)
  • 리팩토링 후 리그레션(Regression:회귀) 테스트 진행