목차
💡 주요 키워드 ? 화이트박스 테스트, 블랙박스 테스트, 단위 테스트, 통합 테스트, 하향식 통합 테스트, 상향식 통합 테스트, 테스트 케이스, 테스트 오라클, 빅오 표기법, 순한 복잡도
📌 애플리케이션 테스트는 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차이다.
🔔 예) 소프트웨어 유형별 특성
소프트웨어명 | 제공 유형 | 기능 유형 | 사용 환경 | 개발 유형 | 중점 사항 |
A. xx오픈 DB 구축 | 서비스 제공 소프트웨어 | 산업 특화 | Web | 신규 개발 | 기능 구현 시 사용자 요구사항의 누락 여부 |
B. Xx 통합 서비스 구현 | 서비스 제공 소프트웨어 | 산업 특화 | Web | 시스템 통합 |
기존 시스템과 신규 시스템의 데이터 손실 및 정합성 여부 |
C. xx오피스 | 상용 소프트웨어 | 산업 범용 | C/S | 신규 개발 | 다양한 OS환경 지원 여부 |
💡 확인(Validation)은 사용자의 입장에서 개발한 소프트웨어가 고객의 요구 사항에 맞게 구현되었는지를 확인하는 것이다.
💡 검증(Verification)은 개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지를 점검하는 것이다.
📌 소프트웨어(Software)는 하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램과 자료 구조 등을 총칭하는 것으로 상용 소프트웨어와 서비스 제공 소프트웨어로 구분된다.
산업 범용 소프트웨어 | - 시스템 소프트웨어 : 하드웨어 전체를 제어하고 운영하는 소프트웨어로 운영체제 데이터 관리, 스토리지 소프트웨어, 소프트웨어 공학 도구, 가상화 소프트웨어, 시스템 보안 소프트웨어로 구분된다. - 미들웨어 : 운영체제와 해당 운영체제에 의해 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어로 분산 시스템 소프트웨어 IT 자원관리, 서비스 플랫폼, 네트워크 보안 소프트웨어로 구분된다. - 응용 소프트웨어 : 특정 업무를 처리하기 위한 소프트웨어로 영상 처리, CG/NR, 콘텐츠 배포, 자연어 처리, 음성 처리, 기업용 소프트웨어로 구분된다. |
산업 특화 소프트웨어 | 특정 분야에서 요구하는 기능만을 구현한 소프트웨어로, 자동차, 항공, 조선, 건서, 패션, 의류, 농업, 의료, 국방, 공공 분야 등을 지원하는 소프트웨어가 있다. |
신규 개발 소프트웨어 |
새로운 서비스를 제공하기 위해 개발된 소프트웨어 |
기능 개선 소프트웨어 |
사용자 편의성, 응답 속도, 화면 UI(User Interface), 업무 프로세스 등 기존 서비스 기능을 개선하기 위해 개발된 소프트웨어 |
추가 개발 소프트웨어 |
업무나 산업 환경의 변화, 법이나 제도의 개정 등으로 인해 기존 시스템에 새로운 기능을 추가하기 위해 개발된 소프트웨어 |
시스템 통합 소프트웨어 |
시스템 별로 서시스되던 것을 원스톱(One-Stop) 서비스로 제공하기 위해 업무 기능이나 데이터 등을 통합하여 개발한 소프트웨어 |
💡 특정 모듈 집중 : 대부분의 결함이 소수의 특정 모듈에 집중해서 발생하는 것을 결함 집중(Defect Clustering)이라고 한다.
💡 파레토 법칙(Pareto Principle) : 파레토의 법칙은 상위 20% 사람들이 전체 부의 80%를 가지고 있다거나, 상위 20% 고객이 매출의 80%를 창출한다는 의미로 이 법칙이 애플리케이션 테스트에도 적용된다는 것이다. 즉 테스트로 발견된 80%의 오류는 20%의 모듈에서 발견되므로 20%의 모듈을 집중적으로 테스트하여 효율적으로 오류를 찾자는 것이다.
💡 살충제 패러독스 : 살충제 패러독스는 살충제를 지속적으로 뿌리면 벌레가 내성이 생겨서 죽지 않는 현상을 의미한다.
📌 애플리케이션을 테스트 할 때 프로그램의 실행 여부에 따라 정적 테스트와 동적테스트로 나뉜다.
정적 테스트 | - 프로그램을 실행하지 않고 명세서나 소스코드를 대상으로 분석하는 테스트이다. - 소프트웨어 개발 초기에 결함을 발견할 수 있어 소프트웨어의 개발 비용을 낮추는데 도움이 된다. - 종류 : 워크스루, 인스펙션 코드 검사 등 |
독적 테스트 | - 프로그램을 실행하여 오류를 찾는 테스트로, 소프트웨어 개발의 모든 단계에서 테스트를 수행할 수 있다. - 종류 : 블랙박스 테스트, 화이트박스 테스트 |
💡 인스팩션(Inspection) ? 인스팩션은 워크스루를 발전시킨 형태로 소프트웨어 개발 단계에서 산출된 결과물의 풀질을 평가하며 이를 개선 하기 위한 방법 등을 제시한다.
💡 워크스루(Walkthrough, 검토 회의)
- 워크스루는 소프트웨어 개발지의 작업 내역을 개발자가 모집한 전문가들이 검토하는 것을 말한다.
- 소프트웨어 검토를 위해 미리 준비된 자료를 바탕으로 정해진 절차에 따라 평가한다.
- 오류의 조기 검출을 목적으로 하며 발견된 오류는 문서화 한다.
💡 블랙박스 테스트 ? 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 소프트웨어의 동작을 검사하는 방법
💡 화이트 박스 테스트 ? 소프트웨어 혹은 제품의 내부 구조, 동작을 세밀하게 감사하는 테스트 방식으로, 외부에서 요구사항에 따른 예상 결과값을 테스트 하는 것과는 다르게 내부 소스 코드를 테스트하는 기법으로 사용자가 들여다 볼 수 없는 구간의 코드 단위를 테스트한다. 개발자가 소프트웨어 또는 컴포넌트 등의 로직에 대한 테스트를 수행하기 위해 설계 단계에서 요구된 사항을 확인하는 개발자 관점의 단위테스팅 기법이다.
📌 애플리케이션을 테스트 할 때 무엇을 기반으로 수행하느냐에 따라 명세 기반, 구조 기반, 경험 기반 테스트로 나뉜다.
명세 기반 테스트 | - 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트이다. - 종류 : 동등 분할, 경계 값 분석 등 |
구조 기반 테스트 | - 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트이다. - 종류 : 구문 기반, 결정 기반, 조건 기반 등 |
경험 기반 테스트 | - 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트이다. - 경험 기반 테스트는 사용자의 요구사항에 대한 명세가 불충분하거나 테스트 시간에 제약이 있는 경우 수행하면 효과적이다. - 종류 : 에러 추정, 체크 리스트, 탐색적 테스팅 |
💡 동등 분할 테스팅은 적절한 커버리지를 유지하면서 테스트케이스의 수를 관리 가능한 크기로 줄이는 데 사용되는 기법이다. 이 간단한 기술은 우리가 공식적인 테스트 설계 방법으로 인식하지 못할지라도 거의 모든 테스터가 직관적으로 사용하는 방법이다. 동등 분할 테스팅이 그 자체로 유용한 기법이지만 이것의 가장 큰 기여는 우리를 경계 값 테스팅으로 이끄는 데에 있다. 일반적으로 경계에 많은 결함이 숨어 있기 때문에 경계 값 테스팅은 경계 분석에 집중하는 기술이다. 숙련된 테스터라면 이러한 상황을 여러번 경험했을 것이며, 경험이 없는 테스터라도 경계에서 실수가 가장 자주 발생할 것이라는 직감을 가진다.
📌 애플리케이션을 테스트 할 때 누구를 기준으로 하느냐에 따라 검증(Verification) 테스트와 확인(Validation) 테스트로 나뉜다.
검증(Verification) 테스트 | 개발자의 시각에서 제품의 생산 과정을 테스트하는 것으로, 제품이 명세서대로 완성됐는지를 테스트 한다. |
확인(Validation) 테스트 | 사용자의 시각에서 생산된 제품의 결과를 테스트하는 것으로 사용자가 요구한대로 제품이 완성됐는지, 제품이 정상적으로 동작하는지를 테스트한다. |
📌 애플리케이션을 테스트 할 때 무엇을 목적으로 테스트를 진행하느냐에 따라 회복(Recovery), 안전(Security), 강도(Stress), 성능(Performance), 구조(Structure), 회귀(Regression), 병행(Parallel) 테스트로 나뉜다.
회복(Recovery) 테스트 | 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트이다. |
안전(Security) 테스트 | 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트이다. |
강도(Stress) 테스트 | 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트이다. |
성능(Performance) 테스트 | 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트로, 소프트웨어의 응답 시간, 처리량 등을 테스트한다. |
구조(Structure) 테스트 | 소프트웨어 내부의 논리적인 경오, 소스 코드의 복잡도 등을 평가하는 테스트이다. |
회귀(Regression) 테스트 | 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트이다. |
병행(Parallel) 테스트 | 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트이다. |
📌 화이트박스 테스트는 모듈의 원시 코드를 오픈 시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트 하여 테스트 케이스를 설계하는 방법이다.
📌 화이트박스 테스트의 종류에는 기초 경로 검사, 제어 구조 검사 등이 있다.
기초 경로 검사 (Base Path Testing) |
- 대표적인 화이트박스 테스트 기법이다. - 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법으로 테스트 측정 결과는 실행 경로의 기초를 정의하는데 지침으로 사용된다. |
제어 구조 검사 (Control Structure Testing) |
- 조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법 - 루프 검사(Loop Testing) : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법 - 데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법 |
💡 기초 경로(Base Path) : 수행 가능한 모든 경로를 의미한다.
📌 화이트박스 테스트의 검증 기준은 테스트 케이스들이 테스트에 얼마나 적정한지를 판단하는 기준으로, 문장 검증 기준, 분기 검증 기준, 조건 검증 기준, 분기/조건 기준이 있다.
문장 검증 기준 (Statement Coverage) |
소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설계 |
분기 검증 기준 (Branch Coverage) |
결정 검증 기준(Decision Coverage)이라고도 불리며, 소스 코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한번 이상 수행되도록 테스트 케이스 설계 |
조건 검증 기준 (Condition Coverage) |
소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행 되도록 테스트 케이스 설계 |
분기/조건 기준 (Branch/Condition Coverage) |
분기 검증 기준과 조건 검증 기준을 모두 만족하는 설계로, 조건문이 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력 데이터를 구분하는 테스트 케이스 설계 |
📌 검증 기준의 종류에는 크게 기능 기반 커버리지, 라인 커버리지, 코드 커버리지가 있으며, 화이트박스 테스트에서 사용되는 문장 검증 기준, 분기 검증 기준 등은 모두 코드 커버리지에 해당한다.
📌 블랙박스 테스트는 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증 하는 테스트로, 기능 테스트라고도 한다.
동치 분할 검사 (Equivalence Partitioning Testing, 동치 클래스 분해) |
- 입력 자료에 초점을 맞춰 테스트 케이스(동치 클래스)를 만들고 검사하는 방법으로 동등 분할 기법이라고도 한다. - 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법이다. |
경계 값 분석 (Boundary Value Analysis) |
- 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법이다. - 입력 조건의 중간 값보다 경계 값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계 값을 테스트 케이스로 선정하여 검사하는 기법이다. |
원인-효과 그래프 검사 (Cause-Effect Graphing Testing) |
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법이다. - 다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법이며, 데이터 확인 검사하고도 한다. |
오류 예측 검사 (Error Guessing) |
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법이다. - 다른 블랙박스 테스트 기버으로는 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법이며, 데이터 확인 검사라고도 한다. |
비교 검사 (Comparison Testing) |
여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법이다. |
🔔 예제) A 애플리케이션에서 평가점수에 따른 성적부여 기준이 다음과 같을 때, 동치 분할 검사와 경계 값 분석의 테스트 케이스를 확인하시오.
평가 점수 | 성적 |
90~100 | A |
80~89 | B |
70~79 | C |
0~69 | D |
테스트 케이스 | 1 | 2 | 3 | 4 |
입력 값 | 60 | 75 | 82 | 96 |
예상 결과값 | D | C | B | A |
실제 결과값 | D | C | B | A |
동치 분할 검사는 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하므로 평가점수를 입력한 후 점수에 맞는 성적이 출력되는지 확인한다.
🔔 예제) A 애플리케이션에서 평가점수에 따른 성적부여 기준이 다음과 같을 때, 동치 분할 검사와 경계 값 분석의 테스트 케이스를 확인하시오.
평가 점수 | 성적 |
90~100 | A |
80~89 | B |
70~79 | C |
0~69 | D |
테스트 케이스 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
입력 값 | -1 | 0 | 69 | 70 | 79 | 80 | 89 | 90 | 100 | 101 |
예상 결과값 | 오류 | D | D | C | C | B | B | A | A | 오류 |
실제 결과값 | 오류 | D | D | C | C | B | B | A | A | 오류 |
경계 값 분석은 입력 조건의 경계 값을 테스트 케이스로 선정하여 검사하므로 평가 점수의 경계 값에 해당하는 점수를 입력한 후 올바른 성적이 출력되는지 확인한다.
📌 애플리케이션 테스트 관리 - 애플리케이션 테스트 프로세스 (0) | 2024.02.07 |
---|---|
📌 애플리케이션 테스트 관리 - 개발 단계에 따른 테스트/통합 테스트 (2) | 2024.02.06 |
📌 제품 소프트웨어 패키징 - 빌드 자동화 도구 (0) | 2024.02.06 |
📌 제품 소프트웨어 패키징 - 사용자 매뉴얼 작성/버전 등록/버전 관리 도구 (0) | 2024.02.06 |
📌 제품 소프트웨어 패키징 - 디지털 저작권 관리(DRM)/설치 매뉴얼 작성 (0) | 2024.02.05 |