본문 바로가기

정보처리기사 실기/02. 응용SW엔지니어링

[2020 정보처리기사 실기 - 애플리케이션 테스트 관리] 1. 테스트케이스 설계하기

 

 

 

* 애플리케이션 테스트 케이스 작성

 

1) SW 테스트

 

   - 사용자가 요구하는 기능의 동작과 성능, 사용성, 안정성 등을 만족하는지 확인하기 위해 SW 결함을 적극적으로 찾아내는 활동

 

   - 테스트 : 알려지지 않은 에러의 발견 / 디버깅 : 이미 알고 있는 에러의 수정

 

   - 소프트웨어 테스트의 필요성

     오류 발견 관점 : 프로그램에 잠재된 오류를 발견하고 수정해서 올바른 프로그램 개발

     오류 예방 관점 : 실행 전에 코드 리뷰, 동료 검토, 인스펙션 등을 통해 오류를 사전에 발견

     품질 향상 관점 : 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 신뢰도 향상

 

   - 소프트웨어 테스트 기본 원칙

     테스팅은 개발 초기에 시작 : 개발 단계에 테스트를 계획하고 SW 개발생명주기의 각 단계에 맞춰 전략하는 접근

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

     완벽한 테스팅은 불가능

     결함 집중 : 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재

     살충제 패러독스 : 동일한 테스트케이스로 반복 실행하면 결함을 발견할 수 없음

     테스팅은 정황에 의존 : 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행해야 함

     오류 - 부재의 궤변 : 요구사항을 만족하지 못하면 오류를 발견하고, 오류를 제거하면 해당 어플리케이션의 품질이 높음

 

   - 소프트웨어 테스트 프로세스

     테스트 계획 -> 테스트 분석 -> 테스트 디자인 -> 테스트케이스 및 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가 및 리포팅

 

   - SW 테스트 산출물 

      테스트 계획서, 테스트 케이스, 테스트 시나리오, 테스트 결과서 

 

 

* 소프트웨어 테스트의 유형

 

1) 프로그램 실행 여부에 따른 유형

   - 정적 테스트 : 실행 없이 소스 코드의 구조를 분석해서 논리적으로 집중하는 테스트로 인스페이션, 코드 검사, 워크스루 등이 있음

   - 동적 테스트 : 프로그램의 실행을 요구하는 테스트로 화이트박스 테스트와 블랙박스 테스트가 있음

 

2) 테스트에 대한 시각에 따른 유형

   - 검증 : 올바른 제품믈 생산하고 있는지 검증

   - 확인 : 정상적으로 동작하는 지 확인

 

3) 테스트 목적에 따른 유형

   - 회복 테스트 : 시스템에 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는 지 테스트

   - 안전 테스트 : 불법 SW가 접근해 시스템을 파괴하지 못하도록 보안적인 결함을 미리 점검하는 테스트

   - 강도 테스트 : 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지 검증하는 테스트

   - 성능 테스트 : 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등 테스트

   - 구조 테스트 : 시스템의 내부 논리 경로, 소스코드 복잡도를 평가

   - 회귀 테스트 : 수정된 코드에 대해 새로운 결함 발견 여부를 평가

   - 병행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력하고 결과를 비교하는 테스트

 

4) 테스트 종류에 따른 유형

   - 명세 기반 테스트 : 주어진 명세를 빠짐없이 구현하는지 확인하는 테스트

   - 구조 기반 테스트 : SW 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트

   - 경험 기반 테스트 : 유사SW나 유사 기술 평가에서 테스터의 경험을 토대로 한 직관과 기술 능력을 기반으로 수행하는 테스트

 

5) 테스트 오라클

   - 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법

   - 오라클 유형

     참 오라클 : 모든 입력 값에 대해 기대하는 결과를 생성하여 발생된 오류 모두 검출

     샘플링 오라클 : 특정한 몇 개의 입력 값에 대해 기대하는 결과를 제공

     휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클로 특정 입력 값에 대해 올바른 결과제공, 나머지 값들에 대해 휴리스틱으로 처리

     일관성 검사 오라클 : 어플리케이션 변경이 있을 때, 수행 전과 후의 결과 값이 동일한지 확인하는 오라클

   - 오라클 적용 방안 : 참 오라클은 주로 항공기, 임베디드, 발전소 SW 등 미션 크리티컬한 업무에 적용하고

                                        샘플링/ 추정 오라클은 일반, 업무용, 게임, 오락 등의 일반적인 업무에 적용

 

 

 

* 어플리케이션 테스트 시나리오 작성

 

1) 테스트 시나리오의 이해

   - 테스트 수행을 위해 여러 테스트 케이스의 집합으로 테스트 케이스의 동작 순서를 기술한 문서, 절차를 명세한 문서

   - 수행 절차를 미리 정해서 설계 단계에서 중요시되던 요구사항이나 대안 흐름과 같은 테스트 항목을 빠짐없이 테스트하기 위함

   - 유의점 : 테스트 시나리오 분리 작성(시스템별, 모듈별, 항목별)

                     요구사항과 설계 문서 등을 토대로 테스트 시나리오를 작성

                     각 테스트 항목은 식별자 번호, 순서 번호, 테스트 데이터, 테스트 케이스, 예상 결과 확인 등의 항목 포함

 

2) 테스트 환경 구축의 이해

   - 테스트 환경 구축 : 개발된 SW가 실제 운영 시스템에서 정상적으로 작동하는지 테스트할 수 있도록 하기 위해 유사한 시설 구축

   - 테스트 환경 구축 유형

     하드웨어 기반의 테스트 환경 구축 : 서버장비, 클라이언트 장비, 네트워크 장비를 설치하는 작업

     SW 기반의 테스트 환경 구축 : 구축되 하드웨어 환경에서 테스트할 응용 SW 설치하고 필요한 데이터 구축하는 작업

     가상시스템 기반의 테스트 환경 구축

 

3) 테스트 데이터

   - 컴퓨터 동작이나 시스템의 적합성을 시험하기 위해 특별히 개발된 데이터 집합

   - 유형 : 선행된 연산에 의해 얻어진 실제 데이터와 인위적으로 만들어진 가상의 데이터로 구분

   - 준비 : 실제데이터는 연산에 의해 준비하거나 실제 운영 데이터를 복제하여 준비, 가상의 데이터는 스크립트로 생성 가능

   - 테스트 시작 조건 : 계획 수립, 명세 작성, 책임 정의, 일정 확정, 환경 구축

   - 테스트 종료 조건 : 모두 수행한 경우 차기 일정의 도래로 테스트 일정이 만료된 경우, 테스트에 소요되는 비용을 모두 소진한 경우 

   - 테스트 성공과 실패의 판단 기준 : 예상 결과를 만족하면 성공, 아니면 실패

                                                                   동일한 데이터나 이벤트를 중복하여 테스트해도 같은 결과가 나올 때