코딩일기/자격증

[정보처리기사] 소프트웨어 테스트 유형 | 프로그램 실행 여부, 테스트 기법, 테스트 시각, 테스트 목적 및 개발 단계에 따른 테스트 유형 | 정보처리기사 실기 기출문제

jhy_2023 2024. 10. 7. 16:23
728x90
반응형

소프트웨어 테스트 유형

소프트웨어 테스트는 다양한 기준에 따라 여러 유형으로 나뉩니다. 여기서는 프로그램 실행 여부, 테스트 기법, 테스트 시각, 테스트 목적개발 단계에 따른 테스트 유형을 정리하였습니다.


✅ 1. 프로그램 실행 여부에 따른 분류

  1. 정적 테스트 (Static Testing)
    • 테스트 대상을 실행하지 않고 구조를 분석합니다.
    • 유형: 리뷰, 정적 분석 도구를 사용하여 코드의 품질, 규칙 준수, 잠재적인 결함을 찾습니다.
  2. 동적 테스트 (Dynamic Testing)
    • 소프트웨어를 실행하여 실제 동작을 확인하는 방식입니다.
    • 유형: 화이트박스 테스트, 블랙박스 테스트, 경험 기반 테스트 등이 있습니다.

✅ 2.  테스트 기법에 따른 분류

  1. 화이트박스 테스트 (White-box Testing)
    • 소프트웨어의 내부 구조와 동작을 검사합니다.
    • 유형:
      • 📌 제어 구문 검사(조건 검사) (Control Structure Testing)
      • 📌 루프 검사 (Loop Testing)
      • 📌 데이터 흐름 검사 (Data Flow Testing)
      • 📌 기본 경로 검사 (Basic Path Testing)
      • 🟥 코드 커버리지 (Code Coverage) (테스트 기반에 따른 분류 참고)
  2. 블랙박스 테스트 (Black-box Testing)
    • 소프트웨어의 기능 및 동작에 집중하는 테스트입니다.
    • 유형:
      • 📌 동등 분할 테스트 (Equivalence Partitioning Test) : 
        입력한 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하는 방법

      • 📌 경계값 분석 테스트 (Boundary Value Analysis Test) : 
        입력 조건의 경계값(최소값, 최대값, 경계에 가까운 값들)을 테스트 케이스로 선정하여 검사하는 방법

      • 📌 원인-효과 그래프 테스트 (Cause-Effect Graphing Test) : 
        입력 데이터 간 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성 높은 테스트 케이스를 선정하여 검사하는 기법

      • 📌 오류 예측 테스트 (Error Guessing Test) : 
        과거 경험이나 테스터의 감각으로 테스트하는 기법

      • 📌 비교 테스트 (Comparison Testing) : 
        여러 버전의 프로그램에 동일한 테스트 자료 제공하여 동일한 결과가 출력되는지 테스트하는 기법

[참고]
2024.07.22 - [코딩일기/자격증] - [정보처리기사] 애플리케이션 테스트 유형 (화이트박스 테스트, 블랙박스 테스트)

 

[정보처리기사] 애플리케이션 테스트 유형 (화이트박스 테스트, 블랙박스 테스트)

블랙박스 테스트 종류 (명세기반 테스트)블랙박스 테스트는 소프트웨어의 내부 구조를 모르는 상태에서 외부 동작을 검사하는 테스트 방법입니다.(1) 동등 분할 테스트 (Equivalence Partitioning Test)

august-jhy.tistory.com


✅ 3. 테스트 기반에 따른 분류

  • 명세 기반 테스트 (Specification-based Testing)
    • 정의:
      명세 기반 테스트는 요구사항 명세서나 기능 명세서에 따라 소프트웨어의 동작을 검증하는 방식입니다. 소프트웨어가 명세된 대로 동작하는지 확인하기 위해 주로 블랙박스 테스트 기법을 사용합니다.
    • 특징:
      • 소프트웨어의 내부 코드나 구조를 알 필요가 없습니다.
      • 외부 입력과 출력에 초점을 맞추어 테스트를 수행합니다.
      • 주로 시스템의 동작이나 기능을 검증하는 데 중점을 둡니다.
  • 구조 기반 테스트 (Structure-based Testing)
    • 정의:
      구조 기반 테스트는 소프트웨어의 내부 구조나 코드를 분석하여 결함을 발견하는 방식입니다. 소프트웨어의 논리 흐름이나 분기 조건 등을 테스트하며, 화이트박스 테스트 기법을 주로 사용합니다.
    • 특징:
      • 소프트웨어의 내부 동작과 코드를 기반으로 테스트를 수행합니다.
      • 코드의 모든 경로를 최대한 검증하여 결함을 찾아내는 것이 목적입니다.
      • 코드 커버리지를 평가하여 테스트의 완전성을 판단할 수 있습니다.
  • 경험 기반 테스트 (Experience-based Testing)
    • 정의:
      경험 기반 테스트는 테스터의 경험이나 직관을 바탕으로 소프트웨어의 잠재적인 결함을 찾아내는 방식입니다. 과거의 결함 사례나 소프트웨어의 특성에 대한 이해를 바탕으로 결함을 예측합니다.
    • 특징:
      • 명확한 규칙이나 절차 없이 테스터의 경험에 의존합니다.
      • 소프트웨어에 대한 이해도와 직관이 중요한 역할을 합니다.
      • 테스트 범위나 방향이 유연하여 예상하지 못한 결함을 발견할 수 있습니다.

 

✅ 4. 테스트 시각에 따른 분류

  1. 검증 (Verification)
    • 소프트웨어 개발 과정에서의 테스트로, 개발 규격과 요구를 충족하는지 판단합니다.
    • 제품이 명세서에 맞게 개발되었는지 확인하는 과정
    • 주로 개발자나 시험자의 시각으로 수행됩니다.
  2. 확인 (Validation)
    • 소프트웨어 결과에 대한 테스트로, 제대로 동작하는지 확인합니다.
    • 제품이 사용자의 요구사항을 충족하는지 확인하는 과정
    • 사용자 시각으로 올바른 소프트웨어가 개발되었는지 검증합니다.

 

반응형

✅ 5. 테스트 목적에 따른 분류

  1. 회복 테스트 (Recovery Testing)
    • 고의로 실패를 유도하고 정상적 복귀 여부를 테스트합니다.
  2. 안전 테스트 (Security Testing)
    • 소스 코드 내 보안적인 결함을 점검합니다.
  3. 강도 테스트 (Stress Testing)
    • 소프트웨어가 감당할 수 있는 최대 부하를 초과하는 상황에서 시스템이 어떻게 반응하는지 테스트합니다.
  4. 성능 테스트 (Performance Testing)
    • 이벤트에 대한 응답 시간, 처리 업무량, 반응 속도 등을 측정합니다.
  5. 구조 테스트 (Structural Testing)
    • 소프트웨어 내부의 논리적인 구조나 흐름을 검사하여 결함을 찾아내는 테스트입니다.
  6. 회귀 테스트 (Regression Testing)
    • 오류를 제거하거나 수정된 시스템에서 새로운 오류가 발생하지 않는지 확인합니다.
  7. 병행 테스트 (Parallel Testing)
    • 새로운 시스템과 기존 시스템을 동시에 실행하여 동일한 데이터를 처리한 후, 결과를 비교하는 테스트입니다.

✅ 6. 테스트 기반에 따른 분류

1. 명세 기반 테스트 (Specification-based Testing)
명세 기반 테스트는 요구사항 명세서기능 명세서와 같은 문서에 기반하여 수행되는 테스트입니다. 소프트웨어가 명세된 대로 동작하는지를 검증하며, 주로 블랙박스 테스트 방식으로 진행됩니다. 이 방법은 내부 코드나 구조를 모르는 상태에서 외부 입력과 출력만을 확인합니다.
대표적인 명세 기반 테스트 기법으로는 경계 값 분석(Boundary Value Analysis), 동등 분할(Equivalence Partitioning), 결정 테이블(Decision Table) 등이 있습니다.

2. 구조 기반 테스트 (Structure-based Testing)
구조 기반 테스트는 소프트웨어의 내부 구조코드에 기반하여 수행되는 테스트입니다. 주로 화이트박스 테스트 방식으로 이루어지며, 소프트웨어의 코드나 논리 흐름, 분기 조건 등을 분석하여 결함을 찾아내는 데 중점을 둡니다.
일반적으로 커버리지 분석(Coverage Analysis)을 통해 테스트의 완전성을 평가하며, 문장 커버리지, 분기 커버리지 등이 이에 해당됩니다.

  • 🟥코드 커버리지 (Code Coverage)
    커버리지(Coverage)
    소프트웨어 테스트가 프로그램 코드의 다양한 부분을 얼마나 실행하고 검증했는지를 측정하는 지표입니다. 특히 구조 기반 테스트(화이트박스 테스트)에서는 커버리지 분석을 통해 테스트의 완전성을 평가합니다. 커버리지가 높다는 것은 코드의 더 많은 부분이 테스트되었다는 뜻이며, 이는 소프트웨어 품질 관리에 있어 중요한 평가 요소가 됩니다.
    코드 커버리지(Code Coverage)는 소프트웨어 테스트에서 특정 코드가 테스트된 정도를 나타내는 가장 기본적인 커버리지 분석 방식입니다. 코드 커버리지는 프로그램의 다양한 구조를 테스트하는 데 중점을 두고 있으며, 그 하위 개념은 다음과 같습니다:
    • 📌구문 커버리지(문장 커버리지)
      - 코드 구조 내의 모든 구문에 대해 한 번 이상 수행하는 테스트 커버리지
      - 코드의 각 구문이 테스트되었는지 확인함으로써, 구문 단위의 오류가 없는지를 검증합니다.
      - 시험 대상의 전체 구문 중에 테스트에 의해 실행된 구문을 측정한다
    • 📌 조건 커버리지 
      - 결정 포인트(If문, While문 등) 내의 모든 개별 조건식에 대해 수행하는 테스트 커버리지 예를 들어, if(A && B && C)에서는 다음과 같이 각각의 조건에 대해 테스트를 진행해야 합니다. 조건식 A, B, C 각각이 참과 거짓이 되는 경우를 독립적으로 테스트 (A = true, false B = true, false C = true, false)
      - 결정 포인트 내의 모든 개별 조건식이 참과 거짓을 모두 가지도록 테스트하는 방법입니다.
      - 조건 커버리지는 각 조건이 참과 거짓이 되는지를 독립적으로 검사합니다. 각 조건에 대해 참/거짓을 독립적으로 검사
    • 📌 결정 커버리지(분기 커버리지) 
      - 결정 포인트 내의 모든 분기문에 대해 수행하는 테스트 커버리지
       전체 조건식의 결과가 참(true)과 거짓(false)이 모두 테스트되는지 확인하는 것을 목표로 합니다. 조건식 if(A && B && C)에서 전체 결과를 기준으로 두 가지 경우를 테스트합니다. 전체 조건식이 참(true)이 되는 경우와 전체 조건식이 거짓(false)이 되는 경우
      - 결정 포인트에서 발생할 수 있는 모든 분기(참/거짓)가 테스트되었는지를 평가합니다. 예를 들어, if 문에서 조건이 참일 때와 거짓일 때의 두 가지 경우 모두 실행될 수 있도록 테스트하는 것입니다.
      - 결정 커버리지는 조건이 결합된 전체 조건식의 참과 거짓이 모두 테스트되도록 합니다. 결정 커버리지는 전체 조건식의 결과가 참인 경우와 거짓인 경우 모두 확인하도록 요구합니다.
      - 시험 대상의 전체 분기 중 테스트에 의해 실행된 것을 측정한다
    • 📌 조건/결정 커버리지 :
      - 결정포인트T/F, 개별조건식T/F를 가져야 한다.
      - 조건/결정 커버리지는 결정 포인트에서 모든 분기와 각 조건의 참/거짓 상태를 모두 테스트하는 방식입니다. 조건 커버리지와 결정 커버리지를 동시에 만족해야 하기 때문에, 더 철저한 테스트가 가능합니다.
    • 📌 변경/조건 커버리지 :
      - 모든 결정 포인트 내의 개별 조건식은 적어도 한 번 T,F를 가져야 한다.
      - 예를 들어 if (A && B)라는 조건이 있을 때, A와 B가 각각 참/거짓으로 독립적인 영향을 미칠 수 있는 모든 경우를 테스트해야 합니다. 이 방식은 고신뢰성 소프트웨어(항공, 의료 등)에 많이 활용됩니다.
    • 📌다중 조건 커버리지 : 
      - 결정 포인트 내 모든 개별 조건식의 가능한 조합을 100% 보장해야 한다.
      - 모든 가능한 조합을 테스트해야 하므로 테스트의 복잡도가 매우 높아집니다.

3. 경험 기반 테스트 (Experience-based Testing)
경험 기반 테스트는 테스터의 경험이나 직관을 바탕으로 수행되는 테스트입니다. 과거에 발생했던 결함이나 소프트웨어의 특성에 대한 이해를 바탕으로 예상되는 문제를 발견하는 것이 목적입니다.
이 방법은 명확한 규칙이나 구조가 없으며, 주로 **탐색적 테스트(Exploratory Testing)**나 체크리스트 기반 테스트로 수행됩니다. 테스터가 소프트웨어의 특성을 이해하고, 잠재적인 결함을 직관적으로 찾아내는 데 효과적입니다.


✅ 7. 개발 단계에 따른 애플리케이션 테스트

소프트웨어의 개발 단계에 따라 다음과 같은 테스트가 수행됩니다:

  1. 단위 테스트 (Unit Testing)
    • 각 모듈이나 컴포넌트를 개별적으로 검증합니다.
    • 주로 개발자가 수행하며, 코드의 품질을 높이고 조기 결함 발견에 기여합니다.
    • 정적 테스트 (Static Testing), 동적 테스트 (Dynamic Testing) 수행
  2. 통합 테스트 (Integration Testing)
    • 여러 단위 모듈을 결합하여 상호작용을 검증합니다.
    • 개별 모듈 간의 데이터 흐름과 인터페이스 문제를 찾아냅니다.
    • 하향식 통합 테스트,상향식 통합 테스트 수행
      • 하향식 통합 테스트 : 상위 모듈에서 하위 모듈 방향으로 단계적으로 통합하면서 테스트하는 방식
        • 통합 방식: 깊이 우선 통합법 또는 넓이 우선 통합법 사용.
        • 주요 제어 모듈: 상위 모듈은 실제 코드로 작성되며, 하위 모듈은 스텁(Stub)으로 대체.
        • 스텁실제 하위 모듈의 기능을 대신하는 임시 모듈.
        • 단계적 테스트: 하위 모듈이 실제 모듈로 교체될 때마다 테스트를 실시.
        • 회귀 테스트: 새로운 오류가 발생하지 않음을 보증하기 위해 반복적으로 테스트를 수행.
      • 상향식 통합 테스트 : 하위 모듈에서 상위 모듈 방향으로 단계적으로 통합하면서 테스트하는 방식
        • 통합 방식: 하위 모듈들을 클러스터(Cluster)로 결합.
        • 드라이버상위 모듈의 기능을 대신하는 임시 모듈. 데이터의 입출력을 확인하기 위해 작성.
        • 클러스터 단위 테스트: 하위 모듈들을 결합한 클러스터 단위로 테스트.
        • 단계적 결합: 클러스터 단위 테스트가 완료되면 상위로 이동하여 결합하고 드라이버를 실제 모듈로 대체.
  3. 시스템 테스트 (System Testing)
    • 전체 시스템을 통합한 후, 요구사항에 따라 시스템이 제대로 동작하는지를 검증합니다.
    • 실제 운영 환경을 가정하여 사용자 관점에서 품질을 평가합니다.
    • 기능 테스트, 비기능 테스트 수행
  4. 인수 테스트 (Acceptance Testing)
    • 최종 사용자가 소프트웨어를 실제로 사용하여 요구사항이 충족되었는지를 검증합니다.
    • 사용자의 기대에 부합하는지 확인하는 마지막 단계입니다.
    • 알파 테스트, 베타 테스트 수행
      • 알파 테스트: 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트입니다. 통제된 환경에서 오류와 문제점을 사용자와 개발자가 함께 확인하고 기록합니다.
      • 베타 테스트: 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트입니다. 개발자에 의해 제어되지 않은 상태에서 테스트가 진행되며, 발견된 오류와 문제점을 기록하여 개발자에게 주기적으로 보고합니다.

[참고]
2024.07.29 - [코딩일기/자격증] - [정보처리기사] ] 애플리케이션 테스트 유형(V-모델)

 

[정보처리기사] ] 애플리케이션 테스트 유형(V-모델)

V-모델개요: V-모델은 폭포수 모델의 변형으로, 개발 단계마다 대응되는 테스트 단계를 명확히 하여 검증과 확인을 강조한다.특징: 산출물 중심인 폭포수 모델과 달리, V-모델은 각 개발 단계의

august-jhy.tistory.com

 

 


728x90

2020년 2회 정보처리기사 실기 기출문제

문제

애플리케이션을 실행하지 않고, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용하는 도구는 무엇인지 쓰시오.

정답

정적 분석 도구

해설

정적 분석 도구는 애플리케이션을 실행하지 않고 소스 코드를 분석하여 코딩 표준, 코딩 스타일, 코드 복잡도, 그리고 남은 결함을 발견하는 도구입니다. 소프트웨어를 실행하지 않는 상태에서 코드의 잠재적인 오류와 문제점을 자동으로 분석할 수 있습니다.

이 도구는 **정적 테스트 (Static Testing)**의 한 유형으로, 프로그램을 실행하지 않고 코드 구조와 품질을 분석합니다. 정적 테스트는 코드가 실행되기 전 미리 결함을 발견할 수 있어 개발 과정에서 비용과 시간을 절약할 수 있습니다. 정적 분석 도구를 통해 코드의 규칙 준수 여부, 잠재적 버그, 보안 취약점 등을 사전에 찾아내어 해결할 수 있습니다.

  • 정적 분석 도구는 코드 품질 향상과 성능 최적화에 기여하며, 개발 초기에 코드 오류를 찾아 수정함으로써 테스트 및 유지보수 과정에서의 오류 발생을 줄여줍니다.
  • **동적 테스트 (Dynamic Testing)**와는 달리, 정적 분석 도구는 프로그램을 실행하지 않기 때문에 정적 테스트에 해당합니다.

대표적인 정적 분석 도구로는 SonarQube, Coverity, PMD 등이 있습니다. 이 도구들은 소프트웨어 개발 과정에서 잠재적인 오류를 조기에 찾아내어 더 나은 품질의 소프트웨어를 개발할 수 있도록 도와줍니다.

따라서, 정적 분석 도구는 코드 실행 없이도 코드의 결함과 문제를 미리 분석하고 수정할 수 있는 중요한 도구입니다.


2020년 2회 정보처리기사 실기 기출문제

문제

프로그램을 실행 시키지 않고, 소스코드에 대한 코딩 표준, 코딩 스타일, 복잡도, 보안 취약점, 잠재적인 결함을 찾는 테스트 활동이 무엇인지 쓰시오.

정답

정적 분석, 정적 테스트

해설

정적 분석 또는 정적 테스트는 프로그램을 실행하지 않고 소스코드 자체를 분석하여 문제점을 찾아내는 테스트 기법입니다. 이 방법은 코드의 코딩 표준 준수 여부, 코딩 스타일의 일관성, 복잡도 분석, 보안 취약점, 잠재적인 결함 등을 파악하는 데 사용됩니다.
정적 분석의 장점은 코드를 실행하지 않고도 신속하게 문제를 발견할 수 있다는 점이며, 반면 실행 중에 발생하는 동적인 문제점은 발견하기 어렵다는 한계가 있습니다.


2020년 3회 정보처리기사 실기 기출문제

문제

다음 아래 제어 흐름 그래프애 대한 분기 커버리지(결정 커버리지)를 수행하는 경우의 테스트 케이스 경로를 쓰시오.

정답

1234561, 124567  or 1234567, 124561

해설

분기 커버리지는 코드 내 모든 분기 조건에 대해 각각의 결과(참/거짓)가 한 번씩 실행되도록 테스트 케이스를 작성하는 것입니다. 이를 통해 코드의 모든 경로가 충분히 테스트되었는지 확인합니다.

분기 커버리지를 만족하는 테스트 케이스 경로
모든 분기를 테스트하려면 X > K와 RESULT > 1의 두 조건이 각각 참과 거짓의 경우를 모두 포함해야 합니다. 이를 위해 가능한 테스트 케이스 경로는 다음과 같습니다:

  1. 경로 1234561:
    • X > K 조건이 인 경우 (노드 2에서 YES를 통해 노드 3으로 이동).
    • RESULT > 1 조건이 인 경우 (노드 6에서 YES를 통해 노드 1로 돌아감).
  2. 경로 124567:
    • X > K 조건이 거짓인 경우 (노드 2에서 NO를 통해 노드 4로 이동).
    • RESULT > 1 조건이 거짓인 경우 (노드 6에서 NO를 통해 노드 7로 이동).

또는 다른 순서의 경로인 1234567124561도 모든 분기 조건을 동일하게 커버할 수 있습니다.

따라서 분기 커버리지를 만족하는 테스트 케이스 경로는 다음과 같습니다:

  • 경로 1234561, 124567 또는 경로 1234567, 124561

이 두 가지 조합의 경로는 모두 분기 커버리지를 만족하며, X > K와 RESULT > 1의 모든 분기 결과(참/거짓)를 포함하여 제어 흐름의 모든 경로를 테스트하게 됩니다.


2020년 3회 정보처리기사 실기 기출문제

문제

소프트웨어 테스트 기법 중 소프트웨어의 기능이 완전히 작동하는 것을 입증하는 테스트로, 동치분할/경계값 분석을 이용하여 테스트 하는 기법을 쓰시오.

정답

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

해설

이 문제는 소프트웨어 테스트 기법 중에서 **블랙박스 테스트(Black-box Testing)**를 묻는 문제입니다.
블랙박스 테스트는 주로 프로그램의 내부 구조나 코드에는 관심을 두지 않고, 소프트웨어의 기능이 요구 사항에 따라 제대로 동작하는지를 확인하는 데 중점을 둡니다.
사용자가 기대하는 입력과 그에 따른 출력이 제대로 일치하는지 확인하는 테스트 방식입니다.

특히 이 테스트 방식에서는 동치 분할(Equivalence Partitioning)과 경계값 분석(Boundary Value Analysis) 기법을 사용합니다.

  1. 동치 분할: 입력 데이터의 영역을 여러 개의 등가 집합으로 나누고, 각 집합에서 대표값을 선택하여 테스트를 수행하는 방식입니다. 이를 통해 데이터 범위를 효율적으로 테스트할 수 있습니다.
  2. 경계값 분석: 입력 값의 경계선에 있는 값들(최소값, 최대값, 경계에 가까운 값들)을 테스트하여 결함을 찾아내는 기법입니다. 경계에서 오류가 발생할 가능성이 높기 때문에 이 부분을 집중적으로 테스트합니다.

이 두 가지 기법은 블랙박스 테스트의 주요 기법으로 사용되며, 소프트웨어가 정상적으로 기능하는지 검증하는 데 매우 유용합니다.


2020년 3회 정보처리기사 실기 기출문제

문제

테스트의 종류 중, 둥치분할 테스트, 경계값 분석 테스트 등의 종류가 있는 테스트 기법을 쓰시오.

정답

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

해설

블랙박스 테스트(Black-box Testing)는 소프트웨어 테스트 기법 중 하나로, 내부 구조나 코드 구현 방식에 대한 지식 없이 기능만을 테스트하는 방식입니다. 입력 값과 출력 값만을 고려하여 소프트웨어가 요구사항에 맞게 동작하는지 확인하는 데 중점을 둡니다. 이 기법은 사용자가 볼 수 있는 외부 동작에만 집중하기 때문에, 사용자가 경험할 가능성이 높은 오류를 발견하는 데 유용합니다.

  • 블랙박스 테스트의 대표적인 기법
    • 동치분할 테스트(Equivalence Partitioning Test):
      입력 데이터를 여러 범위(분할)로 나누어 각 범위에서 하나의 대표 값을 선택하여 테스트하는 기법입니다.
      예를 들어, 나이 입력 칸에서 0-100 사이의 숫자만 허용된다면, 이를 동치 집합으로 나누고 각 집합에서 하나의 값을 테스트합니다.
    • 경계값 분석 테스트(Boundary Value Analysis Test):
      경계 부분에서 오류가 발생할 가능성이 높다는 점을 이용해, 입력 값의 경계선 근처에서 테스트를 수행하는 기법입니다. 예를 들어, 나이 입력 칸에서 1과 99 같은 경계 값을 테스트하여 소프트웨어가 정상 동작하는지 확인합니다.

2020년 4회 정보처리기사 실기 기출문제

문제

테스트 기법 중 다음과 같이 입력값을 넣고, 출력값을 비교하는 테스트 기법을 쓰시오.

테스트 케이스 1 2 3 4
구간 0~59 60~79 80~89 90~100
테스트 데이터 45 70 85 95
예측값 F C B A
결과값 F C B A

정답

동등 분할 테스트(동치 분할 테스트)

해설

  • 블랙박스 테스트(Black-box Testing)는 소프트웨어 테스트 기법 중 하나로, 내부 구조나 코드 구현 방식에 대한 지식 없이 기능만을 테스트하는 방식입니다.
  • 동치분할 테스트(Equivalence Partitioning Test):
    입력 데이터를 여러 범위(분할)로 나누어 각 범위에서 하나의 대표 값을 선택하여 테스트하는 기법입니다.
  • 위의 문제에서는 구간을 4개로 나누고 각 구간의 대표 값(45,70,85,95)를 선택해 테스트하였습니다. 테스트 데이터의 예측값과 결과값이 일치하므로, 소프트웨어가 의도대로 작동하고 있음을 확인할 수 있습니다.

2020년 4회 정보처리기사 실기 기출문제

문제

점수에 따른 성적 부여가 잘 되었는지 테스트하고자 한다. 아래에 알맞는 테스트 기법은 무엇인가?

테스트 값 -10점 30점 60점 75점 96점 95점 110점
점수 성적
0 ~ 59 
60 ~ 69 
70 ~ 79
80 ~ 89
90 ~ 100

정답

동등 분할 테스트(동치 분할 테스트)

해설

문제에서는 점수에 따라 성적 부여가 잘 되었는지를 테스트하고자 합니다. 점수가 주어진 구간에 맞게 성적(가, 양, 미, 우, 수)이 나오는지를 확인하는 테스트입니다. 동등 분할 테스트(등치 분할 테스트)를 사용하여 각 점수 구간(등가 클래스)에서 대표값을 선정하고 테스트를 수행합니다. 이 테스트를 통해 점수 범위에 따른 성적 부여가 올바르게 이루어지는지 검증할 수 있습니다.

동등 분할 테스트입력 데이터를 동등한 값의 그룹(등가 클래스)으로 나누어 테스트하는 기법입니다.
입력값이 특정 범위 내에서 동일한 결과를 가져오는 그룹으로 나뉠 수 있을 때, 각 그룹의 대표값만 테스트하면 됩니다.


2021년 1회 정보처리기사 실기 기출문제

문제

다음은 블랙박스 테스트 기법에 대한 예제이다. 해당하는 블랙박스 테스트 기법을 쓰시오.

(     1     ) : 입력값을 경계값(최소값, 최대값)으로 설정하여 테스트를 수행, 1 <= x <= 100일 때,  0,1,100,101으로 테스
(     2     ) : 입력값의 유효한 범위와 무효한 범위를 나누어 테스트를 수행, 유효값과 그렇지 않은 범위를 나눠야 할 결우 사용하는 테스트, 입력값이 1~100인 경우, 유효 값으로 50을 선택하고, 무효 값으로 0과 101을 선택하여 테스트

정답

1. 경계값 분석 테스트 (Boundary Value Analysis)
2. 동등 분할 테스트(Equivalence Partitioning)

해설

블랙박스 테스트(Black Box Testing)는 소프트웨어의 내부 구조나 동작을 알지 못한 상태에서, 입력값과 출력값을 기준으로 수행하는 테스트 기법입니다.

  1. 경계값 분석(Boundary Value Analysis)
    • 경계값은 입력값의 범위에서 최소값, 최대값, 그 직전/직후 값을 의미합니다.
    • 예를 들어, 입력값의 범위가 1~100이라면 테스트 값으로 0, 1, 100, 101을 사용합니다.
    • 경계값에서 오류가 발생할 가능성이 높기 때문에, 경계값을 집중적으로 테스트합니다.
  2. 동등 분할(Equivalence Partitioning)
    • 입력값을 유효한 값의 그룹(Valid Partition)과 무효한 값의 그룹(Invalid Partition)으로 나누어 테스트합니다.
    • 예를 들어, 나이를 입력하는 경우 유효한 값은 1~100, 무효한 값은 -1, 0, 101 이상의 값으로 나눌 수 있습니다.
    • 각 그룹에서 대표값을 선택하여 테스트를 수행합니다.

2021년 1회 정보처리기사 실기 기출문제

문제

다음은 소프트웨어 테스트의 종류에 대한 설명이다. 괄호에 들어갈 알맞은 테스트 종류를 쓰시오.

  • (     1     ) : 개별 모듈 또는 구성 요소가 정상적으로 동작하는지 확인하는 테스트, 개발자가 원시 코드를 대상으로 다른 부분과 연계되는 부분은 고려하지 않고, 각각의 단위 자체에만 집중하여 테스트 한다.
  • (     2     ) : 여러 모듈 간의 인터페이스와 상호작용이 정상적으로 동작하는지 확인하는 테스트, 인터페이스 간 시스템이 정상적으로 실행되는지 확인하는 테스트이다.

정답

1. 단위 테스트
2. 통합 테스트

해설

1. 단위 테스트는 애플리케이션의 가장 작은 구성 단위(모듈 또는 컴포넌트)를 개별적으로 검증하는 테스트입니다. 소프트웨어의 개별 모듈을 검증하여 초기 단계에서 오류를 조기에 발견하는 데 집중합니다.

  • 예시: 특정 함수가 올바른 입력값을 받아 예상된 결과를 반환하는지 확인

2. 통합 테스트는 여러 단위 모듈을 결합하여 상호작용이 올바르게 수행되는지 검증하는 테스트입니다. 단위 모듈들을 결합하여 모듈 간의 상호작용데이터 흐름을 검증하여 시스템 통합의 품질을 높입니다.

  • 예시: 결제 시스템 모듈과 주문 관리 시스템 모듈이 데이터 전달 과정에서 오류 없이 상호작용하는지 확인

2021년 2회 정보처리기사 실기 기출문제

문제

화이트박스 테스트에서 수행하는 구조적 커버리지의 설명으로 알맞은 것을 쓰시오.

  • (     1     ) :
    - 모든 문장을 최소 한 번씩 수행하도록 검증하는 기준
    - 시험 대상의 전체 구문 중에 테스트에 의해 실행된 구문을 측정한다
  • (     2     )  :
    - 결정(Decision) 검증 기준이라고도 하며, 조건의 참/거짓을 모두 검증하는 기준
    - 시험 대상의 전체 분기 중 테스트에 의해 실행된 것을 측정한다
  • (     3     )  :
    - 전체 조건식을 무시하고, 각 개별 조건의 참/거짓만 검증하는 기준
    - 모든 조건식의 true,false 중 테스트에 의해 실행된 것을 측정한다

정답

1. 문장 커버리지 or 구문 커버리지
2. 결정 커버리지 or 분기 커버리지
3.  조건 커버리지

해설

  1. 문장 커버리지(구문 커버리지)는 테스트 대상 코드의 모든 문장이 최소한 한 번 실행되도록 하는 기준입니다. 이 기준은 코드의 구문 구조가 제대로 실행되는지 확인하는 데 집중하며, 문장이 실행되었는지를 측정합니다. 예를 들어, if문 안의 구문이 실행되는지 여부를 점검합니다.
  2. 결정 커버리지(분기 커버리지)는 결정 포인트에서 발생할 수 있는 참/거짓의 분기 결과가 모두 테스트되었는지를 평가합니다. 이 기준은 if문과 같은 조건문에서 참과 거짓 두 가지 경우를 모두 실행하여, 모든 분기가 제대로 테스트되었는지를 확인합니다.
  3. 조건 커버리지는 조건식 내의 개별 조건이 참과 거짓을 모두 경험하도록 검증하는 기준입니다. 각 조건이 독립적으로 참과 거짓을 경험하게 함으로써, 조건식의 모든 부분이 제대로 동작하는지 확인합니다.

2021년 2회 정보처리기사 실기 기출문제

문제

보기에 해당하는 용어를 쓰시오

  • 특정 시스템 컴포넌트의 개발이 완료되지 않은 상황에서도 필요한 시험을 진행하기 위해 생성된 더미 컴포넌트이다.
  • 하향식 통합 테스트에서 사용하는 임시 모듈이다.
  • 테스트 하네스의 도구 구성 요소 중, 상향식 테스트시, 상위 모듈 역할을 대신하는 테스트 드라이버와 하향식 테스트 시, 하위 모듈 역할을 대신하는 테스트 (       ) 이 있다.

정답

스텁(stup)

해설

스텁(Stub)은 소프트웨어 테스트에서 하향식 통합 테스트 시 주로 사용되는 임시 모듈로, 아직 개발되지 않은 하위 모듈을 대신하여 동작하는 역할을 합니다. 하향식 테스트는 상위 모듈부터 점진적으로 테스트를 진행하는 방식인데, 하위 모듈이 준비되지 않은 상황에서는 상위 모듈을 제대로 테스트하기 어렵습니다. 이때 스텁하위 모듈처럼 동작하도록 설정하여 테스트를 가능하게 합니다.

스텁은 실제 모듈의 기능을 간단히 모방하거나 예상 결과를 반환하는 코드로 작성됩니다. 이를 통해 상위 모듈이 하위 모듈과 상호작용하는 부분을 테스트할 수 있으며, 개발 초기 단계에서도 주요 기능을 검증할 수 있는 환경을 제공합니다. 예를 들어, 특정 데이터베이스 연결이 필요한 함수가 있을 경우, 스텁은 가상의 데이터베이스 응답을 반환하여 상위 모듈의 동작을 확인합니다.

스텁은 테스트 하네스 구성 요소 중 하나로, 테스트 드라이버와 함께 통합 테스트에서 중요한 역할을 합니다. 테스트 드라이버는 상향식 통합 테스트에서 상위 모듈을 대신하며, 스텁은 하향식 통합 테스트에서 하위 모듈 역할을 수행합니다. 이처럼 스텁은 테스트 효율성을 높이고 개발 진행 상황과 관계없이 테스트를 진행할 수 있도록 도와주는 필수적인 도구입니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형