본문 바로가기

자격/정보처리기사

[정보처리기사][실기] 개인적인 정리 (소프트웨어 테스트)

반응형

집중 암기

소프트웨어 테스트 (정적 테스트, 동적 테스트)

정적테스트 종류

동적테스트 종류


소프트웨어 테스트의 기본 7원칙

 

    - 테스팅은 결함이 존재함을 밝히는 활동이다

      → 테스팅은 소프트웨어의 잠재적인 결함을 줄일 수 있지만,

           결함이 발견되지 않아도 결함이 없다고 증명할 수 없음을 나타낸다

 

    - 완벽한 테스팅은 불가능하다

      → 무한 경로, 무한 입력값, 무한 시간이 소요되어 완벽하게 테스트할 수 없다

      → 리스크 분석과 우선순위를 토대로 테스트에 집중할 것을 의미

 

    - 테스팅은 개발 초기에 시작해야 한다

      → 애플리케이션의 개발 단계에 테스트를 계획

      → SDLC(Software Development Life Cycle)의 각 단계에 맞춰 전략적으로 접근하는 것을 고려

 

    - 결함 집중(Defect Clustering)

      → 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재한다는 의미

      → 파레토 법칙 : 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상

           (롱테일 법칙 : 주목받지 못하는 다수가 핵심적인 소수보다 더 큰 가치를 창출하는 현상)

 

    - 살충제 패러독스(Pesticide Paradox)

      → 동일한 테스트 케이스로 반복 실행하면 결함을 발견할 수 없다

      → 주기적으로 테스트 케이스를 리뷰하고 개선해야 한다

 

    - 테스팅은 정황(Context)에 의존한다

      → 정황과 비지니스 도메인에 따라 테스트를 다르게 수행하여야 한다

 

    - 오류--부재의 궤변 (Absence of Errors Fallacy)

      → 사용자의 요구사항을 만족하지 못하면 오류를 발견하고 그 오류를 제거하였다 해도 품질이 높다고 말할 수 없다.

      → 사용자 요구와 기대에 만족하지 못해 사용성이 현저히 낮다면 결함을 찾는 과정은 아무 소용이 없다는 의미


소프트웨어 테스트

  * 정적 테스트 & 동적 테스트

 

    - 정적 테스트

      → 프로그램을 직접 실행하지 않고 분석을 하는 테스트 기법 (소스코드, 명세서 등으로 분석)

 

    - 동적 테스트

      → 테스트 프로그램을 실행하여 결과를 분석하는 테스트 기법


소프트웨어 테스트 [정적 테스트]

  * 정리

 

    - Inspection

        → 공식적 검사

        → 프로그램을 실행하지 않고 산출물을 대상으로 공식적 검토, 결함 발견 과정

        → 구성: 이해 관계자, 중재자, 검토자, 기록자

 

    - Peer Review

        → 동료 검토

        → 프로젝트 수행과정에서 각 단계 별 산출물, 제품에 대해 동료들이 상호교차하여 검토 수행 활동

        → 구성: 프로젝트 팀원, 체크리스트

 

    - WalkThrough

        → 비공식 검토

        → 프로젝트 개발 초기에 팀 내에서 수행하는 검토 과정

        → 구성: 프로젝트 팀원


소프트웨어 테스트 - 동적 테스트

  * 정리

      → IT 위키 참고

https://itwiki.kr/w/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%ED%85%8C%EC%8A%A4%ED%8A%B8

 

* 소스 코드 열람에 따른 구분

    - 블랙박스 테스트 (사용자 관점)

        ※ 프로그램 외부명세(기능, I/F)로부터 직접 테스트 (Data, I/O 위주 테스트)

 

      → 동치 분할 테스트 (Equivalence Partitioning Test)

            프로그램의 입력 데이터를 여러 분류로 나누어 검사

      → 경계값 분석 (Boundary Value Analysis)

            입력값의 경계값을 중심으로 예외 발생 검사

      → 원인-효과 그래프 기법 (Cause-effect Graphing)

            입력데이터 간의 관계, 출력에 미치는 영향의 분석 그래프 이용

      → 오류 예측 검사 (Fault Based Testing)

            테스터의 감각이나 경험, 지식을 통해 에러케이스를 예측

      → 비교 검사 (Comparison Testing)

            테스트 대상과 비교 대상 프로그램에 같은 입력값을 넣어 데이터를 비교

 

    - 화이트박스 테스트 (개발자 관점)

        ※ 프로그램 내부 로직을 참조하면서 모든 경로를 테스트

 

      → 기초 경로 검사(Basic Path Testing)

            수행 가능한 모든 경로 검사

      → 조건 검사(Condition Testing)

            프로그램의 조건문에 초점을 맞추어 검사

      → 루프 검사(Loop Testing)

            프로그램의 반복 구조에 초점을 맞추어 검사

      → 데이터 흐름 검사(Data Flow Testing)

            프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사

 

  * 설계 기법에 따른 분류

    - 명세 기반 테스트

        ※ 모델들을 통해 시스템적으로 테스트케이스를 도출할 수 있다

            커버리지를 측정할 수 있으나 구조 기반 테스트의 커버리지 보다 제한적이다

 

      → 동치 분할

      → 경계값 분석

      → 결정 테이블 테스트

      → 상태 전이 모델

      → 유즈케이스 테스트

            

    - 구조 기반 테스트

        ※ 구문(Statement), 결정(Decision), 분기문(Branch)과 같은 구조에 기반

            정량화된 테스트 커버리지를 측정, 테스트 커버리지를 높이는 방향으로, 테스트 케이스를 시스템적으로 도출 가능

 

      → 제어흐름 테스트

      → 자료흐름 테스트

            

 

    - 경험 기반 테스트

        ※ 테스트 관련 인력의 지식이나 경험으로 테스트 케이스를 도출한다

 

      → 탐색적 테스트 

            https://itwiki.kr/w/%ED%83%90%EC%83%89%EC%A0%81_%ED%85%8C%EC%8A%A4%ED%8C%85

      → 애드혹 테스트

 


테스트 커버리지

반응형