Computer

정보처리기사 실기 - Application Test

너굴먹 2025. 4. 25. 16:36

벚꽃 벚꽃 벚꽃

2025년도 4월에 정보처리기사 실기를 보고 왔음, 일주일정도 공부하고 20문제중에 11문제 맞고 6개 틀렸다
근데 나머지가 3문제가 코드문제였는데 답을 뭐로 썼는지 기억이 안남;;  아슬아슬하게 합격 못할수도 있으니ㅠㅠ

20년도 개정 후에 기출문제들 다 풀어보고 갔는데 코드가 그렇게 어렵지 않았어서 이론을 엄청 공부하고 갔는데
난 몰랐지.. 암기가 쉽게나오고.. 낚시 코드가 많이나오고... 코드문제가 엄청 어렵게 나올 줄...

혹시모를 재수를 위해, 뭔가 두고두고 써먹을거같은것들은 정리해둡시다.


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

  • 오류 발견(Error Detection) : 소프트웨어의 결함을 조기에 발견하기 위함
  • 오류 예방(Error Prevention) : 잠재적인 문제를 미리 방지하기 위함
  • 품질 향상(Quality Improvement) : 신뢰성 및 안정성을 높이기 위함

🦭 소프트웨어 테스트의 원리

  • 테스팅은 결함이 존재함을 밝히는 것: 결함이 있는지 확인하는 것이 목적
  • 완벽한 테스팅 불가능: 모든 경우를 테스트하는 것은 현실적으로 불가능
  • 초기에 테스팅 시작 : 가능한 빨리 테스트를 시작해야 함
  • 결함 집중 : 대부분의 결함은 일부 모듈에 집중되어 있음
    파레토 법칙(Pareto Principle) : 오류의 80%는 전체 모듈에 20% 안에서 발생한다.
  • 살충제 패러독스(Pesticide paradox) : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
  • 정황에 의존 : 테스트는 소프트웨어의 성격에 맞게, 적용 상황에 따라 달라짐
  • 오류-부재의 궤변 : 요구사항을 충족시키지 못한다면 테스팅 결과가 좋아도 품질이 높은 소프트웨어라고 할 수 없음

🦭 테스트 목적에 따른 분류 - 회안성 구회병

  • 회복 테스트(Recovery) : 시스템에 고의로 실패를 유도하고, 시스템의 정상적 복귀 여부를 테스트
  • 안전 테스트(Security) : 소스 내 보안적인 결함을 미리 점검하는 테스트
  • 성능 테스트(Performance) : 응답 시간, 반응 속도, 처리량 등을 측정하는 테스트
  • 구조 테스트(Structure) : 시스템의 내부 논리 경로, 소스 코드의 복잡도를 테스트
  • 회귀 테스트(Regression) : 오류제거와 수정에 의해 새로 유입된 오류가 없는 지 확인하는 일종의 반복 테스트 기법
  • 병행 테스트(Parallel) : 변경된 시스템과 기존 시스템에 동일한 데이터 입력 후 결과 비교

🦭 정적 테스트 (Static Testing)

실제로 코드를 실행하지 않고 수행하는 테스트, 문서, 코드, 설계등의 결함을 찾아내는것에 초점

  • 인스펙션(Inspection) - 동료검토
    • 형식적 검토 기법
    • 저작자 외의 다른 전문가 또는 팀이 검사하여 문제를 식별하고 문제에 대한 올바른 해결을 찾아
  • 워크스루 (Walkthrough)
    • 비형식적 검토 기법
    • 검토 자료를 회의전에 배포해서 사전 검토한 후 짧은 시간동안 회의를 진행하는 형태

🦭 동적 테스트 (Dynamic Testing)

프로그램을 실행하여 동작을 검사하고 결함을 찾는 테스트. 실행 결과를 통해 요구사항 충족 여부를 확인

🦆 블랙박스 테스트 (Black-box Testing)

  • 동등분할 테스트(Equivalence Partitioning) = 동치류 테스트
    입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트
  • 경곗값 분석 테스트(Boundary Value Analysis)
    최솟값 바로 위, 최대치 바로 아래 등 입력값의 극한 한계를 테스트하는 기법
  • 원인-결과 그래프 테스트(Cause-Effect)
    그래프를 활용해 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석
  • 결정 테이블 테스트(Decision Table)
    요구사항의 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트
  • 상태 전이 테스트(State transition)
    이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트
  • 유스케이스 테스트(Use Case)
    프로세스 흐름을 기반으로 테스트케이스를 명세화하여 수행하는 테스트
  • 비교 테스트(Comparison)
    여러 버전의 프로그램에 같은 입력값을 넣어 비교해 테스트
  • 페어와이즈 테스트(Pairwise)
    테스트 데이터 값들 간에 최소한 한 번씩을 조합하여 수행하는 테스트
  • 분류 트리 테스트(Classification Tree)
    SW의 일부 또는 전체를 트리구조로 분석 및 표현하여 테스트 케이스 설계해 테스트

🦆 화이트박스 테스트 (White-box Testing) 

실제 내부 코드 구조나 동작을 검사하는 테스트 방식으로, 코드 흐름이나 조건 등을 분석

기초 경로 검사 (Base Path Testing) - 대표적 화이트박스 기법
모든 가능한 경로를 테스트

제어구조 검사 (Control Structure Testing)

  • 제어 흐름 테스트 (Control Flow Testing)
    프로그램의 제어 흐름을 그래프로 나타내어 테스트
  • 데이터 흐름 테스트 (Data Flow Testing)
    변수의 정의와 사용을 중심으로 테스트하는 방식
  • 루프 테스트 (Loop Testing)
    프로그램의 반복 구조에 초점을 맞춰 테스트 하는 방식

💡 화이트 박스 테스트 검증 기준 - 구결조 조변다

  • 구문 커버리지 (Statement Coverage)
    모든 명령문이 최소 1번은 실행되도록 테스트
  • 결정 커버리지 (Decision Coverage)
    조건식 전체가 참/거짓을 최소 1회 수행하도록 테스트
  • 조건 커버리지 (Condition Coverage)
    조건식 내 각 개별 조건이 참/거짓 모두 수행되도록 테스트
  • 조건/결정 커버리지 (Condition/Decision Coverage)
    전체 조건과 개별 조건 모두에 대해 참/거짓을 수행
  • 변경 조건/결정 커버리지 (MC/DC)
    개별 조건이 전체 조건식 결과에 독립적으로 영향을 주는지 테스트
  • 다중 조건 커버리지 (Multiple Condition Coverage)
    모든 조건 조합을 100% 테스트

🦭테스트 오라클

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

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

🦭 테스트 레벨 종류 ( 요분설구 - 단통시인 )

소프트웨어 생명주기 v모델

  • 단위(Unit) 테스트 / 구현 단계
    구현이 진행되면서 수행하는 테스트, 모듈 및 컴포넌트 등을 테스트
  • 통합(Integration) 테스트 / 설계 단계
    모듈 간 인터페이스 관련 테스트
  • 시스템(System) 테스트 / 분석 단계
    단위 시스템 기능이 시스템에서 정상 수행 되는지를 검증하는 테스트(기능적 요구사항/비기능적 요구사항)
  • 인수(Acceptance) 테스트 / 요구사항 분석 단계
    알파 테스트 (Alpha) :
    사용자가 개발자 환경에서 수행하는 테스트
    베타 테스트 (Beta) : 실제 환경에서 일정 사용자에게 소프트웨어를 사용하게하고 피드백을 받는 테스트

🦆 통합 테스트

  • 비점증적인 방식 / 빅뱅 방식
     모든 모듈을 동시에 통합 후 테스트
  • 점증적인 방식
    하향식 테스트 : 테스트 스텁 test Stub 필요
    상향식 테스트 : 테스트 드라이버 test Driver 필요
    샌드위치 테스트 : 상향식 + 하향식 테스트, 병렬 테스트 가능

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

  • 처리량(Throughput)
    주어진 시간에 처리할 수 있는 트랜잭션의 수
  • 응답 시간(Response Time)
    메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
  • 경과 시간(Turnaround Time)
    사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
  • 자원 사용률(Resource Usage)
    CPU 사용량, 메모리 사용량, 네트워크 사용량