목차
📌 테스트 자동화는 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것이다.
💡 테스트 스크립트(Test Script) ? 테스트 스크립트는 테스트 실행 절차나 수행 방법 등을 스크립트 언어로 작성한 파일이다.
💡 스크립트 언어 ? 소스 코드를 컴파일 하지 않고도 내장된 번역기에 의해 번역되어 바로 실행할 수 있는 언어
💡 휴먼 에러(Human Error) ? 휴먼 에러는 사람의 판단 실수나 조작 실수 등으로 인해 발생하는 에러이다.
장점 | - 테스트 데이터의 재입력, 재구성 같은 반복적인 작업을 자동화함으로써 인력 및 시간을 줄일 수 있다. - 다중 플랫폼 호환성, 소프트웨어 구성, 기본 테스트 등 향상된 테스트 품질을 보장한다. - 사용자의 요구사항 등을 일관성 있게 검증할 수 있다. - 테스트 결과에 대한 객관적인 평가 기준을 제공한다. - 테스트 결과를 그래프 등 다양한 표시 형태로 제공한다. - UI가 없는 서비스도 정밀 테스트가 가능하다. |
단점 | - 테스트 자동화 도구의 사용 방법에 대한 교육 및 학습이 필요하다. - 자동화 도구를 프로세스 단계별로 적용하기 위한 시간 비용, 노력이 필요하다. - 비공개 상용 도구의 경우 고가의 추가 비용이 필요하다. |
비공개 상용 도구 : 비공개 상용 도구는 특정 기업체 전용으로 개발되어 독점 공급되는 소프트웨어를 의미한다.
정적 분석 도구 (Static Analysis Tools) |
- 프로그램을 실행하지 않고 분석하는 도구로, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등을 발견하기 위해 사용된다. - 테스트를 수행하는 사람이 작성된 소스 코드를 이해하고 있어야만 분석이 가능하다. |
테스트 케이스 생성 도구 (Test Case Generaiton Tools) |
- 자료 흐름도 : 자료 원시 프로그램을 입력 받아 파싱한 후 자료 흐름도를 작성함 - 기능 테스트 : 주어진 기능을 구동시키는 모든 가능한 상태를 파악하여 이에 대한 입력을 작성함 - 입력 도메인 분석 : 원시 코드의 내부를 참조하지 않고, 입력 변수의 도메인을 분석하여 테스트 데이터를 작성함 - 랜덤 테스트 : 입력 값을 무작위로 추출하여 테스트함 |
테스트 실행 도구 (Test Execution Tools) |
- 스크립트 언어를 사용하여 테스트를 실행하는 방법으로, 테스트 데이터와 테스트 수행 방법 등이 포함된 스크립트를 작성한 후 실행한다. - 데이터 주도 접근 방식 - 스프레드시트에 테스트 데이터를 저장하고, 이를 읽어 실행하는 방식이다. - 다양한 테스트 데이터를 동일한 테스트 케이스로 반복하여 실행할 수 있다. - 스크립트에 익숙하지 않은 사용자도 미리 작성된 스크립트에 테스트 데이터만 추가하여 테스트할 수 있다. - 키워드 주도 접근 방식 - 스프레드시트에 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 저장하여 실행하는 방식이다. - 키워드를 이용하여 테스트를 정의할 수 있다. |
성능 테스트 도구 (Performance Test Tools) |
애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인한다. |
테스트 통제 도구 (Test Control Tools) |
테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구로, 종류에는 형상관리 도구, 결함 추적/관리 도구 등이 있다. |
테스트 하네스 도구 (Test Harness Tools) |
- 테스트 하네스는 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위해 생성된 코드와 데이터를 의미한다. - 테스트 하네스 도구는 테스특가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트 되도록 한다. |
💡 테스트 슈트와 테스트 시나리오의 차이 ?
테스트 슈트와 테스트 시나리오는 둘 다 테스트 케이스의 묶음이다. 테스트 슈트가 여러 개의 테스트 케이스의 단순한 묶음이라면 테스트 시나리오는 테스트 케이스의 동작 순서에 따른 묶음입니다.
📌 테스트 수행 단계를 테스트 계획, 테스트 분석/설계, 테스트 수행, 테스트 관리로 분류하였을 경우 각 단계에 해당하는 테스트 자동화 도구는 다음과 같다.
테스트 단계 | 자동화 도구 | 설명 |
테스트 계획 | 요구사항 관리 | 사용자의 요구사항 정의 및 변경 사항 등을 관리하는 도구 |
테스트 분석/설계 | 테스트 케이스 생성 | 테스트 기법에 따른 테스트 데이터 및 테스트 케이스 작성을 지원하는 도구 |
테스트 수행 | 테스트 자동화 | 테스트의 자동화를 도와주는 도구로 테스트의 효율성을 높임 |
정적 분석 | 코딩 표준, 런타임 오류 등을 검증하는 도구 | |
동적 분석 | 대상 시스템의 시뮬레이션을 통해 오류를 검출하는 도구 | |
성능 테스트 | 가상의 사용자를 생성하여 시스템의 처리 능력을 측정하는 도구 | |
모니터링 | CPU, Memorty 등과 같은 시스템 자원의 상태 확인 및 분석을 지원하는 도구 | |
테스트 관리 | 커버리지 분석 | 테스트 완료 후 테스트의 충분성 여부 검증을 지원하는 도구 |
형상 관리 | 테스트 수행에 필요한 다양한 도구 및 데이터를 관리하는 도구 | |
결함 추적/관리 | 테스트 시 발생한 결함 추적 및 관리 활동을 지원하는 도구 |
📌 결함은 오류 발생, 작동 실패 등과 같이 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것을 의미한다.
📌 결함 관리 프로세스는 애플리케이션 테스트에서 발견된 결함을 처리하는 것으로, 처리 순서는 다음과 같다.
💡 프로그램 리더 : 소프트웨어 설계, 구현 등 소프트웨어의 기술 분야를 책임지는 사람
💡 품질 관리(QA) 담당자 : 제품에 대한 고객만족을 목표로 제품의 생산부터 판매, 폐기에 이르는 전 과정을 관리하는 사람
💡 대시보드 ? 다양한 데이터를 쉽게 모니터링 할 수 있도록 만든 일종의 상황판을 말한다.
📌 테스트에서 발견된 결함은 지속적으로 상태 변화를 추적하고 관리해야 한다.
결함 분포 | 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정 |
결함 추세 | 테스트 진행 시간에 따른 결함 수의 추이 분석 |
결함 에이징 | 특정 결함 상태로 지속되는 시간 측정 |
💡 에이징 ? 아무리 우선순위가 낮은 대상이라도 그 대상을 기다리는 다른 대상이 있을 수 있으니 늦게라도 자원이 할당되어 처리하도록 해야 한다. 대기시간에 비례하여 우선순위를 부여함으로써 기아 현상을 방지한다.
💡 기아 현상 ? 어떤 우선순위 기준에 따라서 자원을 할당하는데 대상들이 계속 유입되는 상황에서 우선순위가 낮은 자료들은 영영 자원을 할당 받지 못하게 된다.
📌 결함 추적은 결함이 발견된 때부터 결함이 해결될 때까지 전 과정을 추적하는 것으로 순서는 다음과 같다.
📌 테스트에서 발견되는 결함을 유형별로 분류하면 다음과 같다.
시스템 결함 | 시스템 다운, 애플리케이션 작동 정지, 종료, 응답 시간 지연, 데이터베이스 에러 등 주로 애플리케이션 환경이나 데이터 베이스 처리에서 발생된 결함 |
기능 결함 | 사용자의 요구사항 미반영/불일치, 부정확한 비즈니스 프로세스, 스크립트 오류, 타 시스템 연동 시 오류 등 애플리케이션의 기획, 설계, 업무 시나리오 등의 단계에서 유입된 결함 |
GUI 결함 | UI 비 일관성, 데이터 타입의 표시 오류, 부정확한 커서/메시지 오류 등 사용자 화면 설계 에서 발생된 결함 |
문서 결함 | 사용자의 요구사항과 기능 요구사항의 불일치로 인한 불완전한 상태의 문서, 사용자의 온라인/오프라인 매뉴얼의 불일치 등 기획자, 사용자, 개발자 간의 의사소통 및 기록이 원활하지 않아 발생된 결함 |
📌 결함 심각도는 애플리케이션에 발생한 결함이 전체 시스템에 미치는 치명도를 나타내는 척도이다.
High | 핵심 요구사항 미구현, 장시간 시스템 응답 지연, 시스템 다운 등과 같이 더 이상 프로세스를 진행할 수 없도록 만드는 결함 |
Medium | 부정확한 기능이나 데이터베이스 에러 등과 같이 시스템 흐름에 영향을 미치는 결함 |
Low | 부정확한 GUI 및 메시지, 에러시 메시지 미출력, 화면상의 문법/철자 오류 등과 같이 시스템 흐름에는 영향을 미치지 않는 결함 |
📌 결함의 우선순위는 발견된 결함 처리에 대한 신속성을 나타내는 척도로, 결함의 중요도와 심각도에 따라 설정되고 수정 여부가 결정된다.
📌 결함 관리 도구는 소프트웨어에 발생한 결함을 체계적으로 관리할 수 있도록 도와주는 도구로, 다음과 같은 것들이 있다.
Mantis | 결함 및 이슈 관리 도구로 소프트웨어 설계 시 단위별 작업 내용을 기록할 수 있어 결함 추적도 가능하다. |
Trac | 결함 추적은 물론 결함을 통합하여 관리할 수 있는 도구 |
Redmine | 프로젝트 관리 및 결함 추적이 가능한 도구 |
Bugzilla | 결함 신고 확인, 처리 등 결함을 지속적으로 관리할 수 있는 도구로 결함의 심각도와 우선 순위를 지정할 수도 있다. |
📌 인터페이스 구현 - 모듈 간 공통 기능 및 데이터 인터페이스 확인 (0) | 2024.02.08 |
---|---|
📌 애플리케이션 테스트 관리 - 성능 분석/복잡도/성능 개선 (2) | 2024.02.08 |
📌 애플리케이션 테스트 관리 - 테스트 케이스/테스트 시나리오/테스트 오라클 (0) | 2024.02.07 |
📌 애플리케이션 테스트 관리 - 애플리케이션 테스트 프로세스 (0) | 2024.02.07 |
📌 애플리케이션 테스트 관리 - 개발 단계에 따른 테스트/통합 테스트 (2) | 2024.02.06 |