반응형

소프트웨어 테스트 전문가 CSTS 교육 과정

[출처] http://choris.springnote.com/pages/1494874.xhtml


 

  • 소프트웨어 테스트 진화 과정
    • 레벨1 (debugging-oriented)
      • 테스트와 디버깅의 차이가 뚜렷하게 보이지 않는다. 우연히 발견된 오류를 수정
    • 레벨2 (demonstration-oriented)
      • 프로그램이 올바르게 동작한다는 사실을 입증하기 위한 테스트를 수행
    • 레벨3 (destruction-orented)
      • 프로그램에 오류가 존재함을 보여주기 위한 테스트를 수행
    • 레벨4( evaluation-oriented)
      • S/W 개발의 모든 단계에서 발생하는 오류를 발견하는 개념으로 확장
    • 레벨5 (prevention-oriented)
      • 오류가 발생하지 않도록 사전에 방지하는 개념

 

  • S/W 테스트 목적은?    버그를 찾아내는 것

 

  • S/W 오류의 원인
    • 요구사항의 잘못된 정의
    • 고객과 개발자 간의 잘못된 의사 소통이나 부재
    • 고의적인 요구사항 미준수
    • 설계 오류
    • 코딩 오류
    • 문서나 코딩 표준에 따르지 않은 경우
    • 미흡한 테스트 프로세스 
    •  
  • 버그란?
    • 에러(error) - 프로그램이 올바르지 않은 내부 상태 ( 무결성 위배 )
    • 결함(fault) - 잘못된 정보를 프로그램에 반영하거나 올바른 정보를 누락하여 잠재적인 버그가 될 수 있는 상태
    • 오작동(failure) - 프로그램이 명세와 다르게 동작하는것이 외부에서 관찰되는 상황

 

  • 테스트 용이성이란?
    • 프로그램을 얼마나 손쉽게 테스트 할 수 있는지를 나타내는 특성

 

  • 테스트 용이성의 7단계
    • 제어용이성
      • 프로그램의 실행을 제어하기 용히하도록 설계, 자동화할 수 있는 부분이 많이지고 최적화 할 수 있다.
    • 관찰가능성
      • 프로그램 내부 상태가 현재 어떤 상태인지를 쉽게 파악할 수 있는 기능을 갖추도록 설계
    • 단순성
      • 단순하게 설계.
    • 분할용이성
      • 테스트 영역을 제어함으로써 문제가 발생된 곳을 고립시켜 독립적으로 모듈에 대한 테스트를 수행할 수 있도록 설계한다.
    • 운영용이성
      • 결함이 발생하여도 테스트 작업을 계속 할 수 있도록 설계
    • 이해용이성
      • 설계정보가
    • 안전성

 

  • 오라클이란? 테스트 실행 결과가 올바른 결과값인지를 판달 할 수 있는 메커니즘
  •  
  • 테스트 오라클
    • 참 오라클
      • 모든 입력 값들에 대해 원하는 결과들을 생성하여 발생된 오류를 놓지지 않고 검출 할 수 있는 오라클 
    • 샘플링 오라클
      • 특정 몇몇 입력 값들에 대해서만 원하는 결과를 제공해주는 오라클
    • 휴리스틱 오라클
      • 샘플링 오라클의 단점을 개선하기 위해 특정 몇몇 입력 값들에 대해서는 샘플링 오라클의 경우처럼 올바른 결과를 제공하고 나머지 입력값에 대해서는 휴리스틱으로 처리하는 오라클 
    • 일관성 검사 오라클
      • 수정 전후의 실행 결과를 비교

 

  • 소프트웨어 테스트 원칙 7가지
    • 테스트는 반드시 해당 S/W 개발과 전혀 무관한 그룹에 의해서 수행되어야 한다.
    • 가장 능력이 뛰어난 사람에게 할당하라
    • 오류가 발견되지 않을 것이란 가정하에서 테스트 계획을 수립해서는 안된다.
    • 예상하지 못한 경우들에 대해서도 테스트를 수행하라
    • 오류가 남아 있을 확률은 이미 발견된 오류의 수에 직접적으로 비례한다.
      • 파레토(Pareto) 법칙...  20:80 비율
        • 시스템의 20% 모듈이 전 자원의 80%를 소비
        • 시스템의 20% 모듈이 실행시간의 80%를 소비
        • 오류의 20%가 오류 수정비용의 80%를 차지한다
        • 사용도구의 20% 기능만이 도구 사용의 80%를 차지
    • 테스트 케이스를 체계적으로 관리하라.
    • 각각의 테스트 결과를 철저하게 점검하라.

 

 

 

  • S/W 테스트 분류 5가지
    • 단위
      •  모듈 테스트
    • 통합
      • 모듈간의 인터페이스 테스트
    • 시스템
      • 초기목적을 만족시키는지의 테스트
    • 인수
      • 요구사항을 만족하는가 테스트
    • 리그레션 
      • 유지보수 단계에서 변경이 제대로 이루어지는지 테스트 

 

  • 테스크 용어
    • 요구사항
    • 테스트 시나리오
    • 테스트 케이스
    • 테스트 스크립트 또는 절차

 

  • 블랙박스
    • 명세 정보 기반
    • 단위, 통합, 시스템에 적용
    • 코드상의 문제를 발견하기 어려움

 

  • 화이트박스
    • 구현정보(제어흐름, 자료흐름) 기반
    • 단위,소규모 서브 시스템에 적용
    • 구현이 되지 않은 기능을 검출할 수 없음

 

  • 블랙박스
    • 동등 분할 클래스
    • 결계 값 분석
    • 도메인 테스트
    • 페어와이즈 조합 테스트
    • 상태 전이 테스트
    • 인과 그래핑
    • 결정 테이블

 

  • 블랙박스
    • 동등 분할 클래스
      • 동일한 동작이 예상되는 동등 클래스로 분류, 각 클래스별 대표값을 선택하여 사용   ex) 대학교 성적표
      •  
    • 결계 값 분석
      • 동등 클래스의 입력값을 선정할때, 경계값을 포함 ex) 동등 클래스의 값이 0~100 사이면 0값, 1 ~ 99값 중 하나, 100값
      •  
    • 도메인 테스트
      • 입력 변수들 간의 상간관계에 따라 영역을 분할, on, OFF, IN, OUT
      •  
    • 페어와이즈 조합 테스트
      • 입력 값의 모든 짝들의 조합이 테스트 케이스 내에 적어도 한번 이상 들어가도록 작성.
      • IPO 알고리즘
        1. 처음 두 입력 변수의 모든 쌍을 구한다.
        2. 그 이외의 모든 입력 변수의 쌍의 집합을 구하고 이를 AP라고 한다.
        3. 리스트에 하나씩 작성하고 포함된 쌍의 AP를 삭제한다.
        4. 가장 많은 짝을 제거할 수 있는 값을 할당한다. - 무한반복
      •  
    • 상태 전이 테스트
      • 시스템의 상태 전이도를 기반으로 테스트 케이스를 도출하는 방법
      •  
    • 인과 그래핑
      • 입력 조건과 출력 결과를 논리적으로 연결한 그래프를 이용하여 테스트 케이스를 도출
      •  
    • 결정 테이블
      • 입력 조건의 모든 조합에 대한 시스템의 액션을 고려하여 테스트 케이스를 도출하는 방법
      •  

 

  • 화이트 박스
    • 문장 커버리지
    • 분기 커버리지
    • 조건 커버리지
    • 분기/조건 커버리지
    • MC/DC
    • 기본 경로 테스트
    • 자료 흐름 테스트

 

 

  • 화이트 박스
    • 문장 커버리지
      • 테스트하려는 프로그램 내의 모든 문장을 적어도 한번 이상 실행하도록 요구
      •  
    • 분기 커버리지
      • 각 분기(참/거짓)을 적어도 한번 이상 실행시키는 것
      •  
    • 조건 커버리지
      • 조건에 나타난 모든 기본 조건들에 대해서 참/거짓이 되는 모든 경우를 테스트
      •  
    • 분기/조건 커버리지
      • 분기 + 조건
      •  
    • MC/DC
      • 기본 조건들과 무관하게 전체 조건의 평가에 영향을 미치는지를 알아보기 위한 테스트
      •  
    • 기본경로 테스트
      • 상호 독립적인 경로를 모두 수행하여 잠재적인 오류를 찾아내는 방법

 

 

  • 정적분석 
    • 프로그램을 실제로 실행해보지 않고 분석하는 방법
    • 검증 활동
    • 프로그램을 실행시키지 않고 그 자체를 분석하는 것으로 프로그램에 내재한 논리적 오류를 찾아낼 수 있다.

 

  • 동적분석
    • 프로그램을 실행해보고 분석하는 방법
    • 확인 활동
    • 프로그램을 직접 실행하여 입력 값을 넣으므로 예상되는 출력 값이 나오는지 분석한다 

 

  • 정적 분석 기법
    • Manual Static Analysis (동료 검토)
      • 인스팩션
        • 훈련된 리더에 의한 진행 및 제어가 이루어지며, 정식 프로세스가 존재. 정밀검사 리포트와 발견사항 리포트를 산출 하여 정상적인 후속처리 확인 프로세스 존재
      • 리뷰
        • 개발 중간 산출물의 누락과 같은 결함을 발견하는 것으로 코드를 포함한 중간 산출물을 검토/테스트 하는 방법으로 장애보다는 결함을 발견하는 방법
      • 워크쓰루
        • 문서 작성자에 의한 진행 및 제어되며 시간 및 인원수 등의 제한이 없고 상황에 따라 변경 가능한 세션으로 학습 시스템에 의한 이해 향상을 유도하여 그룹이 검토하는 리뷰
      • 공식 검토
        • 개발 단계의 종료 시점에서 산출물에 대해 수행되는지 정적분석.
    • Automatic Static Analysis
      • 심볼링 실행
        • 프로그램 코드를 대상으로 입력 대신 집합이 상증하는 심볼을 입력하는 실행
      • 자료 흐름 분석
        • 자료의 흐름에 이상이 있는지를 분석
      • 정형 검즘
        • 수학적인 표기법을 이용하여 명세된 시스템의 특성을 검증

 

 

  • 테스트 드라이버와 스텁에 대한 설명

 

 

                   프로그램을 실행해 보고 분석하는 방법

                   확인 활동

                   프로그램을 직접 실행하여 입력값을 넣으므로 예상되는 출력값이 나오는지 분석한다.

반응형

+ Recent posts