Search
🎆

애플리케이션 테스트

애플리케이션 테스트

애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차

기본 원리

파레토 법칙(20% → 80%)

살충제 패러독스(동일 테스트케이스 → 동일 오류만 검출)

오류-부재의 궤변(오류가 없다고 품질이 높은 것은 아니다)

프로그램 실행 여부에 따른 테스트 구분

정적 테스트(워크스루, 인스펙션, 코드 검사)

동적 테스트

블랙박스
각 기능이 완전히 작동되는 것을 입증하는 테스트
종류
동치 분할 검사
입력 조건에 타당한 입력자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 입력에 따른 결과가 정상적으로 출력되는지 확인
경계값 분석
입력 조건의 경계값을 테스트 케이스로 선정
원인-효과 그래프 검사
입력 데이터와 출력 간의 관계를 파악하여 효용성이 높은 테스트 케이스를 선정
오류 예측 검사
과거의 경험이나 확인자의 감각으로 테스트하는 기법
비교 검사
여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 확인하는 기법
화이트박스
원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계
종류
기초 경로 검사
제어 구조 검사
조건 검사
루프 검사
데이터 흐름 검사
검증 기준
문장 검증 기준
모든 구문이 한 번 이상 수행
결정 검증 기준
모든 1차 조건식의 결과가 True, False 각각 한 번 이상 수행
조건 검증 기준
개별 조건식의 결과가 True, False 각각 한 번 이상 수행
조건/결정 검증 기준
조건, 결정 검증 기준을 모두 만족하는 설계
변경 조건/결정 검증 기준
개별 조건식이 다른 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 테스트 케이스를 설계
다중 조건 검증 기준
모든 개별 조건식의 모든 조합을 고려하도록 테스트 케이스를 설계

시각에 따른 테스트 구분

검증 테스트

확인 테스트

목적에 따른 테스트

회복 테스트

안전 테스트

강도 테스트

성능 테스트

구조 테스트

회귀 테스트

병행 테스트

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

단위 테스트(모듈이나 컴포넌트에 초점을 맞춰 테스트)

통합 테스트(단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성하는 과정에서의 테스트)

비점진적 통합 방식
빅뱅 통합 테스트 방식
점진적 통합 방식
하향식 통합 테스트
상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법, 스텁 사용
상향식 통합 테스트
하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법, 테스트 드라이버 사용
혼합식 통합 테스트

시스템 테스트(개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 실행되는지 점검하는 테스트)

인수 테스트(알파, 베타 테스트)

회귀 테스트(통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트)

테스트 오라클(테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법)

참 오라클(모든 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클)

샘플링 오라클(특정한 몇몇 케이스에 대해 기대하는 결과를 제공하는 오라클)

추정 오라클(특정 케이스의 입력 값에 대해 기대하는 결과를 제공하고 나머지는 추정으로 처리하는 오라클)

일관성 검사 오라클(애플리케이션에 변경이 있을 때 수행 전과 후의 결과 값이 동일한지 확인하는 오라클)

테스트 자동화 도구

정적 분석 도구

테스트 케이스 생성 도구

자료 흐름도
기능 테스트
입력 도메인 분석
랜덤 테스트

테스트 실행 도구

성능 테스트 도구

테스트 하네스의 구성 요소

테스트 드라이버

테스트 스텁

테스트 스위트

테스트 케이스

테스트 스크립트

목 오브젝트

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

처리량

응답시간

경과시간

자원 사용률

소스 코드 최적화

클린 코드

나쁜 코드

클린 코드 작성 원칙

가독성(누구든지 코드를 쉽게 읽을 수 있도록 작성한다)

단순성(코드를 간단하게 작성한다)

의존성 배제(코드가 다른 모듈에 미치는 영향을 최소화한다)

중복성 최소화(코드의 중복을 최소화한다)

추상화(상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타낸다)

소스 코드 품질 분석 도구

정적 분석 도구(pmd, cppcheck, SonaQube, checkstyle, ccm, cobertura)

동적 분석 도구(Avalanche, Valgrind)