애플리케이션 테스트 관리

작성일

살충제 패러독스

  • 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못한다는 원리로 테스트 케이스의 정기적 리뷰와 개선 및 다른 시각에서의 접근의 필요하다는 의미

블랙박스 테스트(맹세 기반 테스트)

  • 테스트의 종류 중 동치 분할 테스트, 경곗값 분석 테스트 등의 종류가 있는 테스트 기법

참 오라클

  • 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클

샘플링 오라클

  • 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클

휴리스틱 오라클

  • 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클

일관성 검사 오라클

  • 애플리케이션 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클

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

  • 입력 데이터의 영역을 유사한 도메인 별로 유횻값/무횻값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트 하는 기법

소프트웨어 테스트

  • 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고, 노출되지 않는 숨어 있는 소프트웨어의 결함을 찾아내는 활동

오류-부재 궤변

  • 요구사항을 충족시켜주지 못한다면, 경함이 없다고 해도 품질이 높다고 볼 수 없는 소프트웨어 테스트 원리

결함 집중

  • 적은 수의 모듈에서 대다수의 결함이 발견된다는 원리로 오류의 80% 전체 모듈의 20% 내에서 발견

테스팅은 정황에 의존적

  • 소프트웨어의 성격에 맞게 테스트 실시해야 한다는 원리로 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행해야 함

테스트 시나리오

  • 소프트웨어 테스트 산출물 중에서 애플리케이션의 테스트 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서

테스트 슈트(Test Suit)

  • Test Case를 실행환경에 따라 구분해 놓은 Test Case의 집합
  • 단, 시나리오가 포함되지 않은 단순한 테스트 케이스들의 모음

테스트 시나리오(Test Scenario)

  • 애플리케이션의 테스트 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서
  • 하나의 단일 테스트 시나리오가 하나 또는 여러 개의 테스트 케이들을 포함할 수 있음
  • 테스트 시나리오가 테스트 케이스와 일 대다의 관계를 가짐

테스트 스크립트(Test Script)

  • 테스트 케이스의 실행 순서(절차)를 작성한 문서
  • 테스트 스텝(Test Step), 테스트 절차서(Test Procedure)라고도 함

정적 테스트

  • 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증하는 테스트
  • 리뷰, 정적 분석

동적 테스트

  • 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함을 검출하는 테스트
  • 화이트박스 테스트, 블랙버스 테스트. 경험 기반 테스트

화이트박스 테스트(White-box Test)

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

결정 커버리지

  • 결정 포인트 내의 전체 조건식이 적어도 한 번은 참(T)과 거짓(F)의 결과를 수행하는 테스트 커버리지

다중 조건 커버리지

  • 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지 테스트

데이터 흐름 테스트

  • 제어 흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트하는 기법

블랙박스 테스트(명세 테스트)

  • 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 기능 테스트
  • 소프트웨어의 특징, 요구사항, 설계 명세서 등에 초점을 맞춰 테스트가 이루어짐
  • 기능 및 동작 위주의 테스트를 진행하기 때문에 내부 구조나 작동 원리를 알지 못해도 가능

경곗값 분석 테스트

  • 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 떄문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법

회복 테스트

  • 시스템에 고의로 실패를 유도하고, 시스템의 정상적 복귀 여부를 테스트하는 기법

조건/결정 커버리지

  • 전체 조건식뿐만 아니라 개별 조건식도 참 한번, 거짓 한번 결과가 되도록 수행하는 테스트 커버리지 기법

인수 테스트

  • 사용자가 실제로 사용될 환경에서 요구사항들이 모두 충족되는지 사용자의 입장에서 확인하는 테스트로 알파, 베타 테스트가 있다.

강도 테스트

  • 시스템 처리 능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트하는 기법

회귀 테스트

  • 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법

상태 전이 테스트(State Transition Testing)

  • 테스트 대상이 되는 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법

페어와이즈 테스트

  • 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법

원인-결과 그래프 테스트

  • 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트하는 기법

부하 테스트

  • 시스템에 부하를 계속 증가시키면서 시스템의 임계점을 찾는 테스트
  • 병목 지점을 찾아서 병목 현상을 제거하는 과정을 반복하여 성능 개선 가능

스트레스 테스트

  • 시스템 처리 능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트

스파이크 테스트

  • 짧은 시간에 사용자가 몰릴 때 시스템의 반응 측정 테스트

인스펙션

  • 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 문제를 식별하고 문제에 대한 올바른 해결을 찾아내는 형식적인 검토 기법

오류 추정

  • 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되는 테스트 케이스를 설계하여 테스트하는 기법
  • 특정 테스트 대상이 주어지면 테스터의 경험과 직관을 바탕으로 개발자가 범할 수 있는 실수들을 나열하고, 해당 실수에 따른 결함을 노출하는 테스트 수행

테스트 오라클

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

단위 테스트

  • 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계
  • 인터페이스 테스트, 자료 구조 테스트, 실행 경로 테스트, 오류 처리 테스트 등의 기법이 존재

식별자(Identifier)

  • 테스트 케이스를 고유하게 식별하기 위한 항목 식별자

테스트 항목(Test Item)

  • 테스트할 모듈 또는 기능에 대한 간략한 내용

입력명세(Input Specification)

  • 테스트 실행 시 입력할 데이터(입력값, 선택 버튼, 체크리스트 값등) 및 조건

출력명세(Output Specification)

  • 테스트 케이스 실행 시 기대되는 결과 데이터(출력값, 결과화면, 기대 동작 등)

환경 설정(Environmental Needs)

  • 테스트 수행 시 필요한 하드웨어나 소프트웨어 환경
  • 테스트 시 사용할 물리적, 논리적 테스트 환경

특수절차요구(Specical Procedure Requirement)

  • 테스트 케이스 수행 시 특별히 요구되는 절차

의존성 기술(Inter-case Dependencies)

  • 테스트 케이스 간의 의존성 및 종속성

단위 테스트

  • 사용자 요구사항에 대한 단위 모듈, 서브 루틴 등을 테스트하는 단계

통합 테스트

  • 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계

시스템 테스트

  • 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지 검증하는 테스트 단계

인수 테스트

  • 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계

정적 분석 도구

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

드라이버(Driver)

  • 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈로 상향식 통합 테스트 수행 시 사용된다

스텁(Stub)

  • 모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈로 하향식 통합 테스트 수행 시 사용된다

빅뱅테스트

  • 모든 모듈을 동시에 통합 후 테스트를 수행하는 방식으로 단시간에 통합 테스트가 가능함

깊이 우선 방식

  • 주요 제어 모듈을 중심으로 해당 모듈에 종속된 모든 모듈을 통합하고, 다음 모듈의 종속된 모듈까지 통합하는 방법

너비 우선 방식

  • 구조의 수평을 중심으로 해당하는 모듈을 통합하는 방법

테스트 스파이

  • 주로 테스트 대상 클래스와 협력하는 클래스로 가는 출력을 검증하는 데 사용

가짜 객체

  • 실제 협력 클래스의 기능을 대체해야 할 경우에 사용
  • 실제 협력 클래스의 기능 중 전체나 일부를 훨씬 단순하게 구현

샌드위치 통합 테스트

  • 상향식 통합 테스트와 하향식 통합 테스트 방식을 결합한 테스트 방식
  • 하위 프로젝트가 있는 큰 규모의 통합 테스트에서 사용하는 방식으로 병렬 테스트가 가능하고 시간 절약이 가낭하다
  • 스텁과 드라이버의 필요성이 매우 높은 방식이고, 비용이 많이 소요된다.

구체화(Specification)

  • 결함의 원인을 찾기 위해 결함을 발생시킨 입력값, 테스트 절차, 테스트 환경을 명확히 파악하는 방법

고립화(Isolation)

  • 입력값, 테스트 절차, 테스트 환경 중 어떤 요소가 결함 발생에 영향을 미치는지 분석하는 방법

일반화(Generalization)

  • 결함 발생에 영향을 주는 요소를 최대한 일반화 시키는 방법

결함 등록(Open)

  • 테스터가 테스트 절차를 실행하여 발견한 결함을 분석 후 구체화, 고립화, 일반화한 결함으로서 보고된 상태
  • 결함 보고서에 기록되어 결함 추적의 대상이 된 상태

결함 확인(Verified)

  • 개발자의 결함 처리가 합당한지, 정확한지 검증이 완료된 상태

에러(Error)/오류

  • 결함(Defect)의 원인이 되는 것으로, 일반적으로 사람(소프트웨어 개발자, 분석가 등)에 의해 생성된 실수

결함/결점/버그(Bug)

  • 에러또는 원인이 되어 소프트웨어 제품에 포함된 문제

결함 추이 분석

  • 테스트 완료 후 발견된 경함의 결함 관리 측정 지표의 속성값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업

결함 심각도

  • 애플리케이션에 발생한 결함이 어떤 영향을 끼치며, 그 결함이 얼마나 치명적인지를 나타내는 척도

처리량

  • 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
  • 웹 애플리케이션의 경우 시간당 페이지 수로표현

응답 시간

  • 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 떄까지의 시간
  • 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간

경과 시간

  • 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료될 때까지 걸리는 시간

자원 사용률

  • 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

리팩토링의 목적

  • 복잡한 코드의 단순화
  • 소스의 가독성을 통해 유지보수성 향상
  • 품질 향상

유지보수성 향상

  • 복잡한 코드의 단순화, 소스의 가독성 향상

유연한 시스템

  • 소프트웨어 요구사항 변경에 유연한 대응

생산성 향상

  • 정제 및 최적화된 소스의 재사용

품질 향상

  • 소프트웨어 오류발견이 용이하여 품질향상

처리량

  • 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수로 웹 애플리케이션의 경우 시간당 페이지수로 표현

응답시간

  • 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간으로 애플리케이션의 경우 메뉴 클릭시 해당 메뉴가 나타나기까지 걸리는 시간

경과시간

  • 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 떄 까지 걸리는 시간

자원 사용률

  • 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

성능 테스트 도구

  • 애플리케이션에 부하나 스트레스를 적용하여 애플리케이션의 성능 측정 지표를 점검하는 도구

시스템 모니터링 도구

  • 애플리케이션이 실행되었을 때 시스템 자원 사용량을 확인하고, 분석이 가능한 도구

가독성

  • 이해하기 쉬운 용어를 사용, 코드 작성 시 들여 쓰기 기능을 사용

단순성

  • 한 번에 한 가지 처리만 수행, 클래스/메서드/함수를 최소 단위로 분리

의존성

  • 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성

중복성

  • 중복된 코드를 제거, 공통된 코드를 사용

추상화

  • 클래스/메서드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스/메서드/함수에서 구현

외계인 코드(Alien Code)

  • 아주 오래되거나 참고문서 또는 개발자가 없이 유지보수 작업이 아주 어려운 코드

정적 분석 도구

  • 작성된 소스 코드를 실행시키지 않고, 코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부, 잔존 결함 발견 여부를 확인하는 코드 분석 도구

동적 분석 도구

  • 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석하기 위한 도구

리팩토링

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

테스팅은 정황에 의존적

  • 소프트웨어의 성격에 맞게 테스트를 실시해야 한다는 원리로 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행해야 함을 가르킨다

테스트 케이스

  • 테스트를 위한 설계 산출물로, 응용 소프트웨어가 사용자의 요구사항을 준수하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서

정적 테스트

  • 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증하는 테스트
  • 리뷰, 정적 분석

동적 테스트

  • 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함을 검출하는 테스트
  • 화이트박스 테스트, 블랙박스 테스트, 경험 기반 테스트

테스트 슈트(Test Suit)

  • Test Case를 실행환경에 따라 구분해놓은 Test Case의 집합
  • 단, 시나리오가 포함되지 않은 단순한 테스트 케이스의 모음

테스트 시나리오(Test Scenario)

  • 애플리케이션의 테스트 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서
  • 하나의 단일 테스트 시나리오가 하나 또는 여러 개의 테스트 케이스를 포함할 수 있음
  • 테스트 시나리오가 테스트 케이스와 일 대 다의 관계를 가짐

테스트 스크립트(Test Script)

  • 테스트 케이스의 실행 순서(절차)를 작성한 문서
  • 테스트 스텝(Test Step), 테스트 절차서(Test Procedure)라고도 함

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

  • 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)이다

페어와이즈 테스트(Pairwise Testing)

  • 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법

조건 커버리지

  • 결정 포인트 내의 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 커버리지

조건/결정 커버리지

  • 전체 조건식뿐만 아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 테스트 커버리지

변경 조건/결정 커버리지

  • 개별 조건식이 다른 개별 조건식에 영향을 받지않고 전체 조건식에 독립적으로 영향을 주도록함으로써 조건/ 결정 커버리지를 향상시킨 커버리지

분류 트리 테스트

  • 블랙박스 테스트 유형 중에서 SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법

회귀 테스트

  • 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법

스트레스 테스트

  • 시스템 처리 능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트하는 기법

내구성 테스트

  • 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템 반응을 테스트하는 기법

구조 기반 테스트

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

관리 리뷰

  • 프로젝트 진행 사항에 대한 전박적인 검토를 방향으로 범위, 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰

기술 리뷰

  • 정의된 계획 및 명세를 준수하고 있는지에 대한 검토를 수행하는 리뷰
  • 변경 사항이 적절하게 구현되었는지를 평가하고, 여러 대안을 추천하거나 대안을 검토
  • 대표 엔지니어가 주재하며 경우에 따라서 관리자도 참여 가능

인스펙션

  • 소프트웨어 요구, 설계 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 문제를 식별하고 문제에 대한 올바른 해결을 찾아내는 형식적인 검토 기법

워크스루

  • 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해서 문제 식별, 대안 조사, 개선 활동, 학습 기회를 제공하는 가장 비형식적인 검토 기법

감사

  • 소프트웨어 제품 및 프로세스가 규제, 표준, 가이드라인, 계획, 절차를 준수하고 있는지 독립적으로 평가를 한느 기법
  • 감사는 소프트웨어 제품의 제공자, 소비자, 또는 FDA와 같은 제 3기관이 수행 가능

주재자

  • 검사할 작업물을 기초로 참가자를 선정, 인스펙션 계획, 회의 주재, 후속 조치 필요를 결정하는 역할을 수행하는 인스펙션의 참가자

부하 테스트

  • 시스템에 부하를 계속 증가시키면서 시스템의 임계점을 찾는 테스트
  • 실제 환경을 가정하고 일반적으로 요구사항에서 제시하는 부하의 최대치를 발생시켜 시스템이 안정적으로 작동하는지 확인하는 테스트

맥케이브의 순환 복잡도

  • 제어흐름의 복잡한 정보를 정량적으로 표시하는기법으로 해당 제어 흐름 그래프에서 선형적으로 독립적인 경로의 수를 나타낸다

분기 커버리지

  • (각 분기의) 결정 포인트 내의 전체 조건식이 적어도 한 번은 참(T)과 거짓(F)의 결과를 수행하는 테스트 커버리지

페어와이즈 테스트

  • 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법

탐색적 테스트

  • 테스트 스크립트 또는 테스트 케이스를 문서로 작성하지 않고 경험에 바탕을 두고 탐색적으로 기능을 수행해 보면서 테스트하는 기법
  • 사전에 구체적으로 테스트 케이스를 설계하고 이를 바탕으로 테스트를 수행하는 방식이 아니라, 테스트 대상에 대한 이해, 테스트 케이스 설계, 테스트 실행을 병행하는 방식

식별자

  • 테스트 케이스를 고유하게 식별하기 위한 항목 식별자

테스트 항목

  • 테스트할 모듈 또는 기능에 대한 간략한 내용

입력 명세

  • 테스트 실행 시 입력할 데이터 및 조건

출력 명세

  • 테스트 케이스 실행 시 기대되는 결과 데이터

환경 설정

  • 테스트 수행 시 필욯한 하드웨어나 소프트웨어 환경
  • 테스트 시 사용할 물리적, 논리적 테스트 환경

특수절차 요구

  • 테스트 케이스 수행 시 특별히 요구되는 절차

의존성 기술

  • 테스트 케이스 간의 의존성 및 종속성

참 오라클

  • 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클

샘플링 오라클

  • 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클

휴리스틱 오라클

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

일관성 검사 오라클

  • 애플리케이션 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클

통합 테스트

  • 테스트 레벨 중 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법

단위 테스트

  • 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계

통합 테스트

  • 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 단계

시스템 테스트

  • 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 단계

인수 테스트

  • 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계

알파 테스트

  • 선택된 사용자가 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수 테스트

베타 테스트

  • 실제 환경에서 일정 수 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트

테스트 드라이버

  • 상위 모듈에서 데이터의 입력과 출력을 확인하기 위한 상향식 통합 테스트 수행 시 사용되는 더미 모듈

더미 객체

  • 테스트 할 때 객체만 필요하고 해당 객체의 기능까지는 필요하지 않은 경우에 사용하는 유형
  • 메서드가 호출되면 정상 동작은 수행하지 않고 예외 수행을 한다

드라이버(Driver)

  • 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈

샌드위치 통합 방식

  • 샌드위치 통합은 상향식 통합 테스트와 햐향식 통합 테스트 방식을 결합한 테스트 방식
  • 하위 프로젝트가 있는 큰 규모의 통합 테스트에서 사용하는 방식
  • 병렬 테스트가 가능하고 시간 절약이 가능하다

데이터 주도 접근 방식

  • 테스트 데이터를 스프레드시트에 저장하고, 이 데이터를 읽고 실행하며, 다양한 테스트 데이터를 이용하여 동일한 테스트 케이스를 반복해서 실행할 수 있으며, 스크럽트 언어에 익숙지 않은 테스터도 미리 작성된 스크립트에 테스트 데이터만 추가하여 쉽게 테스트를 수행한다.

결함 분포 분석

  • 각 애플리케이션 모듈 또는 컴포넌트의 특정 속성에 해당하는 경함의 수를 측정하여 경함의 분포를 분석

결함 추세 분석

  • 테스트 진행 시간의 흐름에 따른 결함의 수를 측정하여 결함 추세를 분석

결함 에이징 분석

  • 등록된 결함에 대해 특정한 결함 상태의 지속 시간을 측정하여 분석

테스트 커버리지

  • 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준이며, 테스트의 정확성과 신뢰성을 향상시키는 역할

구체화(Specification)

  • 결함의 원인을 찾기 위해 결함을 발생시킨 입력값, 테스트 절차, 테스트 환경을 명확히 파악하는 방법

고립화(Isolation)

  • 입력값, 테스트 절차, 테스트 환경 중 어떤 요소가 결함 발생에 영향을 미치는지 분석하는 방법

일반화(Generalization)

  • 결함 발생에 영향을 주는 요소를 최대한 일반화 시키는 방법

주요 결함

  • 기능이 기대와 많이 다르게 동작하거나 그 기능이 해야하는 것을 못하는 결함
  • 기능 장애 등이 속함

보통 결함

  • 제품이나 프로그램이 특정 기준을 충족하지 못하거나 전체에 영향을 주지 않는 일부 기능이 부자연스러운 결함
  • 사소한 기능 오작동 등이 속함

경미한 결함

  • 사용상의 불편함을 유발하는 결함
  • 표준위반, UI 잘림 등이 속함

경함 등록

  • 테스터가 테스트 절차를 실행하여 발견한 결함을 분석 후 구체화, 고립화, 일반화한 결함으로서 보고된 상태
  • 결함 보고서에 기록되어 결함 추적의 대상이된 상태

결함 검토

  • Open 된 결함의 처리 방안을 검토하는 상태
  • 각 결함은 위험성을 바탕으로 이번에 수정되거나, 다음 릴리스에서 수정되거나 또는 무시될 수 있음

결함 할당

  • 결함을 수정할 개발자가 결정되고 그 개발자에게 결함 해결이 요구된 상태

결함 확인

  • 개발자가 자신에게 할당된 수정사항에 대한 해결을 처리한 상태

결함 종료

  • 수정된 사항에 대하여 정확한 수정이 이루어졌다고 판단되어 종료된 상태

결함 재등록

  • 결함이 정확하게 수정되지 않아서 다시 수정을 요구한 상태

결함 조치 보류

  • Open 된 결함을 곧바로 수정하지 않고 다음 릴리스에서 해결하기로 연기된 상태
  • Deferred 된 결함은 적절한 시점에 Reopen되어 결함 처리가 시작될 수 있음

검증(Verification)

  • 소프트웨어 개발 과정을 테스트

확인(Validation)

  • 소프트웨어 개발 결과물을 테스트

에러(Error)/오류

  • 결함의 원인이 되는 것으로, 일반적으로 사람에 의해 생성된 실수

처리량

  • 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수로 웹 애플리케이션의 경우 시간당 페이지수

결함 ID

  • 결함 내용별로 부여하는 결함번호를 기재

결함 유형

  • 결함 내용에 따라 결함이 발생한 유형의 코드를 기재

발견일

  • 결함을 발견한 일자

심각도

  • 애플리케이션에 발생한 결함이 어떤 영향을 끼치며, 그 결함이 얼마나 치명적인지를 나타내는 처고
  • 치명적 결함 > 주요 결함 > 보통 결함 > 경미한 결함 > 단순 결함

가독성

  • 이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능을 사용

단순성

  • 한 번에 한 가지 처리만 수행, 클래스/메서드/함수를 최소 단위로 분리

의존성 최소

  • 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성

중복성

  • 중복된 코드를 제거, 공통된 코드를 사용

추상화

  • 클래스/메서드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스/메서드/함수에서 구현

스파게티 코드

  • 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티 면발에 비유한 표현으로 작동은 정상적으로 하지만, 사람이 코드를 읽으면 그 코드의 작동을 파악하기 어려운 코드