개발일기

[정보처리기사 실기 이론정리8] 테스트 본문

정보처리기사 도전기

[정보처리기사 실기 이론정리8] 테스트

츄98 2024. 7. 27. 17:01

1. 결함 집중(Defect Clustering) : 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재한다.

2. 파레토 법칙 : 20% 모듈에서 80% 결함이 발견된다는 결함집중의 원리

3. 살충제 패러독스(Presticide Paradox) : 반복적인 테스트로는 새로운 결함을 찾기 어렵다.

4. 오류-부재의 궤변(Absence of Errors Fallacy) : 오류가 없다고 해도 사용자의 요구사항을 충족하지 않으면 품질이 좋다고 할 수 없다.

5. 테스트 케이스 : 테스트 항목의 입력, 실행 조건 및 기대 결과를 포함한 명세서

6. 테스트 시나리오 : 테스트 케이스의 동작 순서를 기술한 문서

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

  • 참 오라클(True) : 모든 입력 값에 대해 정확한 결과를 생성하는 오라클
  • 샘플링 오라클(Sampling) : 제한된 입력 값들에 대해서만 예상되는 결과를 제공하는 오라클
  • 휴리스틱 오라클(Heuristic) : 특정 입력 값들에 대해서는 정확한 결과를 제공하나, 그 외의 값들에 대해서는 근사적인 (추정) 결과를 제공하는 오라클
  • 일관성 검사 오라클(Consistent) : 소프트웨어의 변경 전후로 테스트 결과의 일관성을 검증하는 오라클

8. 테스트 레벨 

  • 단위 테스트 : 개별 소프트웨어 모듈 또는 구성요소의 기능적, 비기능적 측면을 검증
  • 통합 테스트 : 여러 모듈 또는 서브시스템을 통합하고, 그 사이의 인터페이스 및 상호작용을 검증
  • 시스템 테스트 : 완전히 통합된 소프트웨어를 대상으로 한 테스트로, 소프트웨어와 시스템 사양 간의 일치성 검증
  • 인수 테스트 : 시스템을 배포하거나 실제 사용할 만한 준비가 되었는지 평가

9. 인수 테스트 유형

  • 알파 테스트 : 개발자의 통제 하에 사용자가 개발 환경에서 수행하는 테스트
  • 베타 테스트(필드 테스팅) : 개발된 소프트웨어를 사용자가 실제 운영환경에서 수행하는 테스트

10. 정적 테스트 : 소프트웨어의 실행 없이 소스코드나 설계문서 등을 분석하여 문제점을 찾는 테스트 방식

  • 워크스루 : 계획된 개발자 검토 회의, 개발자가 작성한 코드를 팀원에게 설명하며 오류를 찾는 회의 형태
  • 인스펙션 : 검토 전문가들이 소스코드를 분석하여 결함을 발견하는 공식적인 검토

11. 동적 테스트 : 실제로 소프트웨어를 실행하며 문제점을 찾는 테스트 방식

12. 화이트박스 테스트 : 소프트웨어의 내부 구조와 동작을 중점으로 검사, 개발자 관점의 단위 테스트 방법

  • 기초 경로 검사(Basic Path Test) : 대표적인 화이트 박스 테스트 기법, 계산식 V(G) = E-N+2
  • 제어 구조 검사(Control Structure Testing) :
    - 조건 검사(Condition Testing): 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
    - 루프 검사(Loop Testing): 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
    - 데이터 흐름 검사(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

13. 블랙박스 테스트 : 프로그램의 사용자 요구사항 명세를 보면서 테스트, 사용자 관점의 테스트 방법

  • 동등 분할 기법(Equivalence Partitioning Testing) : 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사
  • 경계값 분석(Boundary Value Analysis) : 입력값의 경계값을 테스트 케이스로 선정
  • 원인-효과 그래프 검사(Cause-Effect Graphing Testing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사
  • 오류 예측 검사(Error Guessing) : 과거의 경험이나 테스터의 감각으로 테스트
  • 비교 검사(Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지  테스트하는 기법
  • 상태전이 검사(State Transistion Testion) : 시스템에 반영되는 이전의 상태가 무엇인지, 상태 간 전이, 상태를 변화시키는 이벤트와 입력값을 파악

14. 검증(Verification) : 소프트웨어의 개발 과정을 테스트, 개발자 시점

15. 확인(Validation) : 완성된 소프트웨어의 결과를 테스트, 사용자 시점

16. 테스트 커버리지 : 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준

  • 기능 기반 커버리지 : 텍스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법
  • 라인 커버리지(Line Coverage) : 애플리케이션의 전체 소스 코드의 Line 수를 모수로 테스트 시나리오가 수행한 소스 코드의 Line 수를 측정하는 방법
  • 코드 커버리지(Code Coverage) : 소프트웨어 테스트 충분성 지표 중 하나로, 소스코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지를 측정

- 테스트 자동화 도구 유형

17. 정적 분석 도구 : 애플리케이션을 실행하지 않고 분석

  • PMD : Java 및 다른 언어용 소스코드 분석 도구
  • CheckStyle : Java 코드의 코딩 표준 준수 여부를 검사
  • Cppcheck : C/C++  코드의 메모리 누수, 오버플로우 등 분석
  • SonarQube : 소스코드의 중복, 복잡도, 코딩 설계 등을 분석

18. 동적 분석 도구 : 프로그램을실행하여 코드의 메모리 누수나 결함 등 발견

  • Avalanche : 프로그램 결함 및 취약점 분석
  • Valgrind : 프로그램의 메모리 및 스레드 결함을 분석

19. 테스트 장치 : 애플리케이션의 단위 또는 모듈 테스트에 사용하는 환경 및 도구

  • 테스트 드라이버(Test Driver) : 상향식 테스트, 테스트 대상 하위모듈을 호출하고 파라미터 전달 등
  • 테스트 스텁(Test Stub) : 하향식 테스트, 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행
  • 테스트 슈트(Test Suited) : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
  • 테스트 케이스(Test Case) : 입력값, 실행 조건, 기대 결과 등의 집합
  • 테스트 스크립트(Test Script) : 자동화된 테스트 실행 절차에 대한 명세
  • 목 오브젝트(Mock Object) : 사용자의 행위를 조건부로 사전에 입력해두면, 그 상황에 예정된 행위를 수행하는 객체

20. 통합테스트

  • 하향식 통합 테스트 : 깊이 우선 또는 너비 우선 방식으로 통합, 스텁을 개발하여 테스트 진행
  • 상향식 통합 테스트 : 최하위 레벨의 모듈로부터 위쪽 방향으로 제어 경로를 따라 통합, 드라이버 개발
  • 빅뱅 테스트 : 모든 구성요소들을 한꺼번에 통합하여 테스트
  • 백본 테스트 : 상향식과 하향식의 장점을 이용, 샌드위치 테스트

21. 애플리케이션 성능분석 지표

  • 처리량(Throughput) : 애플리케이션이 일정 시간 내에 처리하는 작업의 양
  • 응답시간(Response Time) : 사용자가 요청을 전송한 시점부터 애플리케이션이 첫 응답을 보내기까지의 시간
  • 경과시간(Turn Around Time) : 요청이 전달된 시점부터 처리가 완료되기까지 총 시간
  • 자원 사용률(Resource Usage) : 애플리케이션이 작업을 처리하는 동안 CPU, 메모리, 네트워크 등의 자원 사용량

22. JMeter : 다양한 프로토콜을 지원하는 부하 테스트 도구

23. Scouter : 단일 뷰를 통한 통합 및 실시간 모니터링 기능 제공

24. NMon : 리눅스 서버 자원에 대한 모니터링 도구

25. Zabbix : 웹 기반의 서버, 서비스, 애플리케이션 모니터링 도구

26. Jenniffer : 애플리케이션에서 서버로 유입되는 트랜잭션의 양, 처리시간, 응답시간, 자원 활용률 등을 모니터링

27. 코드스멜 : 소스코드에서 발견할 수 있는 잠재적인 문제점

28. 스파케티 코드 : 복잡하게 얽힌 소스코드 구조

29. 외계인 코드 : 오래되어 유지보수가 어려운 코드

30. 레거시 시스템 : 오래된 기술, 방법론, 컴퓨터 시스템, 소프트웨어를 의미