ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2-3 어플리케이션 테스트 관리
    자격증/정처기 2023. 5. 17. 04:05

    1.어플리케이션 테스트

    - 검증(Verification): 개발자 관점 = 명세서 = 과정 

    - 확인(Validation): 사용자 관점 = 요구사항 = 결과

    - 테스트와 위험은 반비례

    - 소규모에서 대규모로

    - 개발자와 관계없는 별도의 팀에서 수행

     

    파레토 법칙: 오류의 80%는 20%의 모듈에서 발견 -> 결함 집중

    살충제 패러독스: 테스트케이스 보완 필요

    오류 부재의 궤변: 결함이 없어도 요구사항을 만족시키지 못하면 품질이 낮음

     

     

     

    테스트 순서

    - 단위(모듈) -> 통합(모듈 결합) -> 시스템(SW와 환경) -> 인수(요구사항 검증)

    - 단위 테스트는 주로 구조(논리) 기반

    - 인수 테스트 = 알파 + 베타

    - 알파: 사용자가 개발자 앞에서 테스트 = 통제된 환경

    - 베타: 사용자가 여러 사용자 앞에서 = 제어 X

    *베타 = 필드 테스팅이라고도 함

     

     

     

    통합 테스트 (Intergration test)

    -비점진적(빅뱅) + 점진(하향,상향,혼합)

     

    1)하향식 테스트

    - DFS, BFS

    - 스텁(stub): 하위 모듈을 대체하는 임시 모듈

    - 초기부터 시스템 구조를 보여줄 수 있음

    - 상위 모듈에선 테스트 케이스 사용이 어려움

     

    2)상향식 테스트

    - 클러스터 결합 -> 드라이버 작성 -> 클러스터 테스트 -> 더 상위로 결합

    - 클러스터: 하나의 모듈에 종속된 모듈들의 그룹

    - 드라이버: 상위 모듈을 대체하는 더미 모듈

    *스텁 = 하위 모듈 '대체' // 드라이버 = 하위 모듈 '호출'

     

    +혼합식 = 상향+ 하향 = 샌드위치

    +회귀: 이전에 수행했던 테스팅 반복 = 변경사항으로 인한 오류 검사

     

     

     

     

     

    테스트 방식

    - 정적: 프로그램 실행 x = 명세서, 소스코드 중심

    ex) 코드검사, 워크스루->인스펙션 

    - 동적: 프로그램 실행 = 모든 개발 단계에서 테스트 가능

    ex) 블박 화박

     

     

    화이트박스 테스트

    - 원시 코드(모듈)를 오픈, 논리적인 모든 경로를 테스트

    - 모듈 내부의  작동을 직접 관찰

    - 모듈의 모든 문장을 한번 이상 실행

     

    1) 기초 경로 검사: 논리적 복잡성 측정 

    * 기초 경로: 수행 가능한 모든 경로

    2) 제어 구조 검사: 조건 / 루프 / 데이터 흐름(변수) 검사

     

     

    블랙박스 테스트

    - 소프트웨어의 기능을 테스트

    - 구조를 고려 x = 명세나 요구 중심

    - 인터페이스에서 실시

     

    1)동치 분할 검사: 입력 자료에 중점  (Equivalence Partitioning)

    2)경계값 분석: 오류 확률이 높은 입력 조건의 경계값 위주로 테스트  (Boundary Value)

    +원인 효과 그래프(좋은 테스트케이스 선별), 오류 예측(경험적, 감각적), 비교 검사 (같은 인풋, 다른 버전)

     

    화박: 논리 / 테스트 초기 / 명세+경험

    블박: 기능 / 테스트 후기 / 구조

     

     

     

     

    테스트 오라클

    - 테스트 결과가 올바른지 판단하기위해 사전의 정의된 True 값을 대입

    - 제한, 수학, 자동화

     

    - 참: 모든 입력값에 대해 기대하는 결과 제공 = 모든 오류 검출 가능

    - 샘플링: 일부 

    - 추정(Heuristic): 일부 + 추정

    - 일관성(Consistent): 변경 전 후

     

     

     

     

    테스트 하네스(Harness)

    1)테스트 케이스: 요구사항 준수 확인을 위한 테스트 항목 명세서  (INPUT+조건+예상 결과)

    2)테스트 시나리오: 적용 순서에 따라 테스트 케이스를 묶은 집합  (INPUT+조건+테스트 순서))

    3)테스트 슈트: 한 모듈의 테스트에 필요한 테스트 케이스 집합

    4)테스트 스크립트: 자동화된 테스트 실행 절차의 명세서

    5)목 오브젝트(Mock): 조건부로 입력해둔 사용자 행위에 맞는 대처를 수행하는 객체

    +드라이버 스텁

     

     

     

    복잡도

    O(최악)  θ(평균)  Ω(최상)

    O(1) = 고정 = 삽입, 삭제, 해싱

    O(log2n) = 이진 트리/검색

    O(n) = 1:1 = 순차 탐색(for문)

    O(nlog2n) = 힙, 머지, 퀵(평균)

    O(n^2) = 삽입 선택 버블 + 쉘 퀵(최악)

    O(2^n) = 피보나치

     

    순환 복잡도 V = 화살표 - 노드 + 2 = 화살표로 나눠진 영역 개수

     

     

     

    어플리케이션 성능 개선

    - 성능 측정 지표: 처리량, 응답시간, 경과시간, 자원 사용률

    - 성능 테스트 도구: Jmeter, LoadUI, Opensta -> JOL 

    배드 코드: 스파게티(꼬임), 에일리언(오래됨)

    클린 코드: 가속성, 단순성, 의존성 배제, 중복성 최소화, 추상화

     

     

    품질 분석 도구

    정적: pmd, cppcheck, SonarQube, CheckStyle, CCM, Cobertura 

    동적: Avalanche, Valgrind

     

    pmd - 미사용 변수 체크

    cppcheck = c++

    SonarQube = 소스 분석 플랫폼

    CheckStyle =  Java 표준 검사

    Cobertura = Java 복잡도 + 테스트 커버리지

    CCM = 다양한 언어

     

    Valgrind = 메모리 & 쓰레드 결함 분석

    Avalanche = Valgrind + STP

     

     

     

    결함 상태 추적

    1)결함 분포  (위치에 따른 결함 수)

    2)결함 추세  (시간에 따른 결함 수)

    3)결함 에이징 (결함의 지속 시간)

     

    결함 추적 순서

    등록-> 검토 -> 할당 -> 수정 -> (보류) -> 종료 -> 해제

    '자격증 > 정처기' 카테고리의 다른 글

    3-1 논리 데이터베이스 설계  (0) 2023.05.18
    2-4 인터페이스 구현  (0) 2023.05.18
    2-2 소프트웨어 패키징  (0) 2023.05.16
    2-1 데이터 입출력 구현  (0) 2023.05.16
    1-4 인터페이스 설계  (0) 2023.05.14
Designed by Tistory.