8과목 애플리케이션 테스트 관리

YunGyu Choi·2023년 4월 25일
0

정보처리기사

목록 보기
8/10

1. 소프트웨어 테스트 원리

  • 결함 존재 증명 : 결함ㅇ ㅣ존재함을 밝히는 활동, 결함이 없다는 것을 증명할 수는 없음
  • 완벽한 테스팅은 불가능 : 완벽하게 테스트 하는 것은 시간과 자원 낭비
  • 초기 집중 : sw개발 초기에 체계적인 분석 및 설계가 수행되지 못하면 프로젝트 후반에 영향을 주어 비용이 눈덩이 처럼 커짐
  • 결함 집중 : 적은 수의 모듈에서 대다수의 결함 발견, 파레토 법칙 오류의 80%는 전체 모듈의 20% 내에서 발견
  • 살충제 패러독스 : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
  • 정황 의존성 : 소프트웨어의 성격에 맞게 테스트 실시, 정황과 비즈니스 도메인에 따라 테스트르 다르게 수행
  • 오류-부재 궤변 : 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없음

2. 테스트 분류

1) 테스트 기법에 따른 분류

  • 정적 테스트 : 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증하는 테스트
  • 동적 테스트 : 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함 검출

2) 테스트 시각에 따른 분류

  • 검증 : 소프트웨어 개발 과정을 테스트, 개발자 or 시험자 시각 테스트
  • 확인 : 소프트웨어 개발 결과를 테스트, 사용자 시각 테스트

3) 테스트 목적에 따른 분류

  • 회복 테스트 : 시스템에 고의로 실패를 유도하고, 시스템의 정상 복귀 여부 테스트
  • 안전 테스트 : 소스코드 내 보안적인 결함으 미리 점검
  • 성능 테스트 : 사용자의 요구에 시스템이 반응하는 속도 등을 테스트
  • 구조 테스트 : 시스템의 내부 논리 경로, 소스코드 복잡도 등 테스트
  • 회귀 테스트 : 오류제거나 수정으로 새로 유입된 오류가 없는지 확인하는 반복 테스트
  • 병행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터 입력 후 비교 테스트

4) 테스트 종류에 따른 분류

  • 명세기반 테스트 : 요구사항 명세서 기반 테스트 케이스 선정
  • 구조기반 테스트 : 소프트웨어 내부 논리 흐름에 따라 테스트 케이스 작성
  • 경험기반 테스트 : 유사 경험자의 경험을 토대로 테스트

3. 정적 테스트

1) 리뷰 : 소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행 상황을 점검하기 위한 활동

  • 동료검토 : 2~3명이 진행하는 리뷰, 요구사항 명세서 작성자가 설명 후 이해관계자들이 결함 발견
  • 인스펙션 : 원시 코드의 원작자 외의 다른 전무가 또는 팀이 검토, 개발초기에 수행해야 문제발견
  • 워크스루 : 검토자료를 회의 전에 배포해서 사전 컴토 후 짧은 시간 동안 회의로 리뷰

2) 정적 분석 : 리뷰는 사람이 수동으로 하지만 정적분석은 자동화된 도구의 도움을 받아서 수행

  • 코딩표준 : 개발자가 프로그램 작성시 지켜야할 코딩 표준 및 코딩 지침에 대한 준수 여부 검사
  • 복잡도 측정 : 신뢰할 수 있는 척도를 사용해 복잡도 측정
  • 자료흐름 분석 : 프로그램 자료흐름에 이상 존재 여부에 대한 분석 검사

4. 화이트 박스 테스트

: 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트

  • 구문 커버리지 : 프로그램 내의 모든 명령문을 적어도 한 번 수행
  • 결정 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한 번은 참/거짓 결과를 수행
  • 조건 커버리지 : 결저 포인트 내의 개별 조건식이 적어도 한 번은 참/거짓 결과를 수행
  • 조건/결정 커버리지 : 조건 커버리지와 결정 커버리지를 최소한의 조합으로 달성
  • 변경 조건 커버리지 : 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고, 전체 조건식 결과에 독립적으로 영향을 주도록하여 조건/결정 커버리지 향상
  • 다중 조건 커버리지 : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장
  • 기본 경로 커버리지 : 맥케이프 순환 복잡도를 기반으로 커버리지 계산, 수행 가능한 모든 경로 테스트
  • 제어 흐름 테스트 : 프로그램 제어 구조를 그래프 형태로 나타내어 로직 테스트
  • 데이터 흐름 테스트 : 제어 흐름 테스트 + 데이터 사용현황 그래프 통해 테스트

5. 블랙 박스 테스트

: 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 요구사항 명세를 기반으로 테스트

  • 동등 분할 : 입력 데이터 영역을 유사한 도메인 벼로 그룹핑 -> 대푯값 테스트 케이스 테스팅
  • 경곗 값 분석 : 등가 분할 후 경계 부분에서 오류 발생 확률이 높아 동등분할과 함께 수행
  • 결정 테이블 : 요구사항의 논리와 발생 조건을 테이블 형태로 나열하고 조건, 행위 모두 조합해 테스트
  • 상태 전이 테스트 : 테스트 대상/시스템 객체 상태를 구분하고 상태가 전이되는 경우의 수를 테스트
  • 유스케이스 테스트 : 시스템이 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트
  • 분류 트리 : sw의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트
  • 페어와이즈 : 테스트 데이터값들 간에 최소한 한 번씩을 조합하느 방식, 커버할 기능적 범위를 모든 조합에서 상대적으로 적게함

6. 경험 기반 테스트

  • 탐색적 테스트 : 테스트 케이스를 문서화X, 경험에 기반해 탐색적으로 기능을 수행해보면서 테스트
  • 오류추정 : 개발자가 범할 수 있는 실수를 추정하고 결함이 검출되도록 테스트 케이스 설계하여 테스트

7. 테스트 레벨

1) V모델

  • 단위 테스트 : 사용자 요구사항에 대한 단위 모듈, 서브루틴 등 테스트
  • 통합 테스트 : 단위 테스트 통과한 모듈 간 인터페이스, 통합 컴포넌트 테스트
  • 시스템 테스트 : 통합된 단위 시스템의 기능이 정상적으로 수행되는지 테스트
  • 인수 테스트 : 계약상의 요구사항이 만족되었는지 확인하는 테스트

8. 테스트 오라클

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

  • 참 오라클 : 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
  • 샘플링 오라클 : 특정한 몇개의 입력 값에 대해서만 기대하는 결과를 제공해주는 오라클
  • 휴리스틱 오라클 : 샘플링 오라클 개선한 것, 특정 값은 결과제공하고 나머지는 휴리스틱(추정 값) 처리하는 오라클
  • 일관성 검사 오라클 : 애플리케이션 변경이 있을 때 수행 전/후 결과 값이 동이한지 확인하는 오라클

9. 통합 테스트

1) 하향식 통합 테스트 : 메인제어 모듈로부터 아래방향으로 제어경로에 따라 이동하면서 통합 테스트 진행, 모듈 및 모든 하위 컴포넌트를 대신하여 더미 모듈인 '스텁' 개발

2) 상향식 통합 테스트 : 애플리케이션 구조에서 최하위 모듈 or 컴포넌트로 부터 위쪽 방향으로 제어 경로를 따라 구축과 테스트, 하위모듈 컴포넌트/모듈을 하위 기능을 수행하는 '클러스터'로 결합

3) 샌드위치 통합 테스트 : 상향식 통합과 하향식 통합 결합, 병렬 테스트 가능, 시간절약 가능

4) 빅뱅 통합 테스트 : 모든 모듀을 동시에 통합한 후 테스트 진행

10. 애플리케이션 성능 측정 지표

  • 처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
  • 응답시간 : 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
  • 경과시간 : 사용자 요구를 입력한 시점 부터 트랜잭션 처리 후 그 결과 출력 완료 까지 시간
  • 자원 사용률 : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU, 메모리, 네트워크 사용량

11. 리팩토링

: 유지보수, 생산성 향상을 목적으로 기능을 변경하지 않고, 소스코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법

  • 유지보수성 향상 : 복잡한 코드의 단순화, 소스의 가독성 향상
  • 유연한 시스템 : 소프트웨어 요구사항 변경에 유연한 대응
  • 생산성 향상 : 정제 및 최적화된 소스의 사용
  • 품질 향상 : 소프트웨어 오류 발견이 용이하여 품질 향상
profile
velog에는 이론을 주로 정리하고, 코드와 관련된 것은 Git-hub로 관리하고 있어요. 포트폴리오는 링크된 Yun Lab 홈페이지를 참고해주시면 감사하겠습니다!

0개의 댓글