ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트웨어 테스팅
    Topcit/소프트웨어 개발 2018. 6. 11. 15:15
      1. 테스팅 개념 프로세스
        1. 테스팅 개념
          1. 어플리케이션 시스템의 동작, 성능, 안정성이 사용자가 요구하는 수준을 만족하는지 확인, 검증하기 위해 결함을 발견하는 방법
          2. 테스팅의 일반적인 원리
            1. 결함의 존재성을 밝히는 활동 : 테스팅 활동은 결함이 존재함을 밝히는 활동
            2. 완벽한 테스팅은 불가능 : 매우 간단한 프로그램이라도 모든 경우에 대해 테스트를 하는 것은 불가능
            3. 테스팅은 개발 초기에 시작 : 개발 기간을 단축하고 결함 예방이 가능하다.
            4. 살충제 패러독스 : 동일한 테스트가 반복적으로 수행된다면 해당 테스트로는 더이상 새로운 버그를 찾아낼 없음
            5. 테스팅은 정황에 의존적 : 분야마다 접근하는 방법, 우선 순위, 심각도 등이 달라짐
            6. 오류-부재의 궤변 : 개발된 시스템이 쓸모가 없다면 결함을 찾고 수정하는 과정은 아무 의미가 없다.
        2. 테스팅 프로세스
          1. 테스트 분석과 설계
            1. 테스트 베이시스 검토
            2. 테스트 상황, 요구사항, 데이터 식별
            3. 테스트 기법 할당
            4. 테스트 용이성 평가
            5. 테스트 환경 구축
          2. 테스트 구현과 실행
            1. 테스트 케이스 명세화
              1. 우선순위 선정
              2. 데이터 생성
              3. 프로시저 작성
            2. 선행 테스팅
            3. 테스팅 실행 결과 기록
            4. 기대 결과와 비교
          3. 완료 조건의 평가와 리포팅
            1. 완료 조건의 달성 여부 확인
            2. 최초 테스트 보고서 작성
          4. 테스트 마감 활동
            1. 산출물 확인, 테스트웨어 보관
            2. 테스트 프로세스 평가
          5. 테스트 계획과 통제
            1. 테스트 목적, 목표 설정, 대상 연구
            2. 테스트 전략 개발, 리스크 분석
            3. 전략 수립, 테스트 완료 조건 설정
          6. 테스트 추정 조직 구성
            1. 테스트 계획, 테스트 관리 제어
            2. 리포팅, 리포팅 계획 설계
            3. 진행 리포팅
        3. 테스트 케이스 설계 방법
          1. 명세 기반 방법
            1. 동등 분할
              1. 동등하게 분할된 영역에서 대표 값으로 수행하도록 테스트 케이스를 설계하는 기법
            2. 경계값 분석
              1. 경계 값까지 포함하여 테스트 케이스를 설계하는 기법
              2. 동등 분할의 경계 부분에 해당하는 입력 값에서 결함이 발견될 확률이 높다.
            3. 페어와이즈 조합 테스팅
              1. 테스트에 필요한 값들이 다른 값들과 번씩은 조합을 이루게 테이블을 만들고, 테스트를 수행하는 기법
            4. 결정테이블 테스팅
              1. 테스트 케이스가 결정 테이블에 표시된 입력 값과 원인의 조합을 테스트 하도록 설계하는 기법
            5. 상태전이 테스팅
              1. 상태 전이도를 기반으로 이벤트, 액션, 활동, 상태, 상태전이 사이의 관계를 설계하는 기법
            6. 유스케이스 테스팅
              1. 유스케이스에서 테스트 케이스를 도출하는 기법
          2. 구조 기반 방법
            1. 제어흐름 테스팅
              1. 컴포넌트나 시스템을 통해 실행될 모든 이벤트 흐름 구조를 테스트 있게 설계하는 기법
            2. 커버리지 테스팅
              1. 시스템 또는 소프트웨어의 구조가 커버리지를 달성하기 위해 테스트 케이스를 설계하는 기법
            3. 최소비교 테스팅
              1. 변형 조건, 결정 개념을 사용하여 입력 값의 조합을 테스트하도록 테스트 케이스를 도출하는 테스트 설계 기법
          3. 경험 기반 방법
            1. 탐색적 테스팅
              1. 테스트를 수행하는 동안 얻은 정보를 활용하는 테스트를 설계하는 기법
            2. 분류 트리 기법
              1. 분류 트리로 표현된 테스트 케이스를 입력, 출력 도메인의 대표 값을 조합하여 수행하도록 설계하는 기법
      2. 테스팅 유형 기법
        1. 테스팅 유형
          1. 인수 테스트
            1. 요구 사항과의 일치성을 확인
          2. 시스템 테스트
            1. 실제 환경과 유사한 환경에서 전체적 기능, 비기능적 테스트 확인
          3. 통합 테스트
            1. 단위 모듈간의 인터페이스에서 결함 발견
          4. 단위 테스트
            1. 단위 모듈 내의 결함 발견
        2. 테스팅 기법
          1. 화이트박스 테스팅
            1. 구조적, 코드기반 테스트
            2. 단위 테스팅에서 주로 사용됨
            3. 정적분석 : 소스코드 내부 구조를 분석하여 미리 정의된 오류를 찾아낸다.
            4. 동적분석 : 프로그램의 실행을 통하여 실제 상황에서 발생 가능한 오류를 찾아낸다.
            5. 기법
              1. 구조적 기법 : 프로그램의 논리적인 복잡도를 측정하여 평가
              2. 루프 테스트 : 프로그램의 루프 구조에 제한하여 실시하는 방법
          2. 블랙박스 테스팅
            1. 기능, 명세기반 테스트
            2. 시스템 테스팅에서 사용되고 기능, 비기능 요구사항을 모두 검증
            3. 요구사항 명세서대로 소프트웨어가 작동하는지에 초점이 맞추어진 테스팅
            4. 시스템, 소프트웨어의 내부 구조를 참조하지 않고 요구사항 명세, 인터페이스 기반으로 테스팅 수행
            5. 기법
              1. 동등 분할 기법
                1. 다양한 입력 조건의 테스트 사례들을 선정하여 테스트
              2. 경계값 분석 기법
                1. 경계값을 기준으로 결과의 정확성을 테스트
              3. 원인, 결과 그래프 기법
                1. 입력값이 출력값에 미치는 영향을 그래프로 표현하여 오류 검출
              4. 오류 예측 기법
                1. 간과할 없는 오류들을 감각과 경험으로 검출하는 기법
      3. 소프트웨어 빌드와 배포
        1. 소프트웨어 빌드
          1. 소스 코드 파일을 컴퓨터에서 실행할 있는 독립 소프트웨어 가공물로 변환하는 과정
          2. 일일 빌드, 동작 테스트
            1. 소프트웨어 제품을 매일 전체적으로 다시 컴파일하고, 기본 동작을 검증하기 위해 필요한 일련의 테스트를 거치는 공정
            2. 소프트웨어 통합 실패, 낮은 품질, 프로젝트 가시성과 같은 리스크를 줄이고 시간을 절약하여 프로젝트 효율, 고객 만족도를 높인다.
        2. 소프트웨어 배포
          1. 사용할 소프트웨어 시스템을 만드는 모든 행위
          2. 소프트웨어 배포 종류 활동
            1. 릴리스
            2. 설치 활성화
            3. 비활성화
            4. 적응
            5. 업데이트
            6. 빌트인
            7. 버전 추적
            8. 삭제
            9. 은퇴

댓글