- 테스트
- 테스트란?
- 사용자의 요구사항에 따라 소프트웨어가 개발되었는지 확인하고 검증하는 과정
- 테스트 프로세스 과정
- 테스트 계획 -> 테스트 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가 및 리포팅
- 프로그램 실행 여부에 따른 테스트
- 정적 테스트
- 프로그램을 실행하지 않고 소스 코드를 대상으로 분석하는 테스트
- 워크스루, 인스펙션, 코드 검사
- 동적 테스트
- 프로그램을 실행하여 SW개발의 모든 단계에서 수행하는 테스트
- 화이트박스 테스트, 블랙박스 테스트
- 정적 테스트
- 테스트 기반에 따른 테스트: 명세 기반 테스트, 구조 기반 테스트, 경험 기반 테스트
- 시각에 따른 테스트: 검증, 확인
- 테스트 기법에 따른 테스트
- 화이트박스 테스트
- 구조 기반 테스트, 기초 경로 검사, 제어구조 검사 (조건 검사, 루프 검사, 데이터 흐름 검사)
- 블랙박스 테스트
- 기능 기반 테스트, 동치분할 검사, 경계값 검사, 원인 효과 그래프 검사, 오류 예측 검사, 비교 검사
- 화이트박스 테스트
- 테스트란?
- 테스트 케이스와 레벨
- 테스트 케이스란?
- 개발된 소프트웨어가 사용자의 요구사항에 따라 설계되었는지 확인하기 위해 입력 값, 실행 조건, 예상 출력 값을 미리 정해 놓은 문서
- 테스트 케이스(Test Case)의 작성 순서
- 테스트 계획 검토 및 자료 확보 -> 위험평가 및 우선순위 -> 테스트 요구사항 정의 -> 테스트 케이스 구조 설계 및 테스트 방법 결정 -> 테스트 케이스 정의 -> 테스트 케이스 타당성 검토 및 유지보수
- 테스트 레벨
- 단위 테스트
- 모듈(함수, 서프루틴)이나 컴포넌트에서 테스트하는 화이트 박스 테스트 기법
- 인터페이스, 구조 및 루프 테스트의 논리 경로, 외부적 I/O, 자료 구조상 오류, 경계 조건 등을 테스트
- 통합 테스트
- 블랙박스 테스트 기법
- 모듈들을 통합하여, 모듈 간의 인터페이스 오류를 확인하고 모듈 간의 상호 작용 및 연계 동작 여부를 판정
- 시스템 테스트
- 개발된 애플리케이션이 실제 사용 환경에서 완벽하게 수행되는가를 점검하는 테스트
- 테스트 환경에서 테스트 수행 시 시스템적인 장애 위험을 최소화
- 인수 테스트
- 직접 사용자가 테스트
- 알파 테스트와 베타 테스트
- 단위 테스트
- 테스트 오라클의 정의 및 특징
- 테스트 케이스에 사전에 정의된 예측 값이나 계산된 값과 실제 소프트웨어 테스트 결과 값을 비교하여 판별하기 위한 활동
- 특징: 제한된 검증, 수학적 기법, 자동화 기능
- 테스트 시나리오
- 여러 개의 테스트 케이스들을 적용하는 순서에 따라 테스트 케이스를 기술한 문서
- 테스트 케이스란?
- 통합 테스트
- 통합 테스트란?
- 단위 테스트 과정을 거친 모듈들을 통합하는 과정에서 발생하는 서로 불일치하여 발생하는 오류, 전역변수에 대한 부정확한 사용, 한 모듈에서의 작은 오차가 여러 모듈에서 축적되어 온 문제, 인터페이스 관련 오류 등의 결함을 찾는 테스트 기법
- 통합 테스트 방식
- 비점진적 통합 방식
- 모듈을 한 번에 전부 통합하는 방법
- 프로그램 전체를 대상으로 한 오류를 발견한 후 오류 위치를 파악하고 수정하기 매우 어려움
- 빅뱅 통합(Big Bang Integration) 테스트 방식
- 점진적 통합 방식
- 점진적으로 모듈을 통합하여 전체 모듈이 모두 통합될 때까지 통합 테스트를 수행하는 방법
- 인터페이스 관련 오류와 결함을 테스트할 가능성이 높고 오류 발견 및 수정이 용이함
- 하향식 통합
- 상위 모듈에서 하위 모듈로 통합하면서 테스트하는 과정
- 테스트 초기 사용
- '깊이 우선' 통합 방식과 '너비 우선'
- 상향식 통합
- 하위 모듈에서 상위 모듈로 통합하면서 테스트하는 과정
- 드라이버 모듈이 상대적으로 쉽고 여러 팀이 동시에 테스트를 수행할 수 있음
- '최하위 레벨'의 모듈들을 클러스터(Cluster)로 결합
- 비점진적 통합 방식
- 회귀 테스트
- 통합 테스트의 과정에서 새로운 모듈의 추가나 변경된 모듈로 인해 발생하는 새로운 오류 여부를 확인하기 위해 테스트를 반복 수행
- 통합 테스트란?
- 결함
- 결함이란?
- 결함은 프로그램이 소스 코드나 설계 과정에서의 실수와 오류 때문에 발생하는 것을 말함
- 테스트 결함 관리는 각 단계별 테스트에서 발생된 결함에 대해서 결함 사항을 등록하고, 오류를 분석하여, 결함으로 확정하고 이를 조치하는 활동임
- 결함 관리 프로세스
- 결함 관리 계획 -> 결함 기록 -> 결함 검토 -> 결함 수정 -> 결함 재확인 -> 결함 상태 추적 및 모니터링 -> 최종 결함 분석 및 보고서 작성
- 결함 심각도
- 애플리케이션에서 발생된 오류가 얼마나 심각한지의 척도
- 치명적 결함, 주요 결함, 보통 결함, 경미한 결함, 단순 결함 등
- 결함 우선순위
- 발견한 결함이 얼마나 중요하고 결함 심각도가 높은 지에 따라 신속하게 처리해야 하는 순서를 결정하는 것
- 즉시 해결, 주요 요망, 대기, 개선 권고 같은 낮은 순위 등
- 결함이란?
- 테스트 자동화 도구
- 테스트 자동화 도구란?
- 사람이 테스트 작업을 반복적으로 수행하는 것이 아니라 스크립트 형태로 구현된 자동화 도구를 이용하여 점검하는 것
- 테스트의 정확성 유지, 테스트 시간 단축, 인력 투입 비용을 최소화
- 테스트 자동화 도구의 장점
- 반복되는 작업을 자동화하면 인력 및 시간 절약
- 사용자의 요구 기능의 일관성 검증에 유리
- 객관적인 평가 기준 제공
- 테스트 자동화 도구의 단점
- 자동화 도구의 사용방법에 대한 교육과 학습 필요
- 자동화 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
- 상용 도구를 이용할 경우 고가, 유지 관리 비용이 높음
- 테스트 자동화 도구의 유형
- 정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구, 테스트 하네스 도구
- 데이터 하네스 구성 요소
- 테스트 드라이버 (Test Driver)
- 테스트 스텁 (Test Stub)
- 테스트 슈트 (Test Suites)
- 테스트 케이스 (Test Case)
- 테스트 스크립트 (Test Script)
- 목 오브젝트 (Mock Object)
- 테스트 자동화 도구란?
- 알고리즘
- 알고리즘이란?
- 어떤 문제를 해결하기 위한 방법과 절차
- 알고리즘의 조건에는 입력, 출력, 유한성, 명확성, 유효성, 효율성이 있음
- 알고리즘 개발 작업 절차: 문제 정의 -> 모델 고안 -> 명세 작성 -> 설계 -> 검증 -> 분석 (복잡도 등) -> 구현 -> 테스트 -> 문서화
- 알고리즘 성능 분석
- 알고리즘이 수행하는 연산의 횟수 측정 비교
- 시간 복잡도 (Time Complexity) 분석
- 공간 복잡도 (Space Complexity) 분석
- 알고리즘 성능 측정
- 알고리즘의 실제 수행시간을 측정하는 것
- 알고리즘이란?
- 애플리케이션 성능
- 애플리케이션 성능이란?
- 애플리케이션이 최소한의 자원을 사용하여 사용자가 요구한 기능을 신속하게 처리되는지를 알 수 있는 정도
- 애플리케이션 성능 측정 지표에는 처리량, 응답 시간, 경과 시간, 자원 사용률
- DB 연결 및 쿼리 수행에서 발생하는 성능 저하, 외부 호출이 긴 경우 (HTTP, 소켓 통신 등), 내부 로직 수행이 긴 성능 저하, 잘못된 환경설정 및 네트워크로 인한 성능 저하
- 코드 최적화
- 애플리케이션 성능을 개선하기 위해 소스 코드에서 나쁜 코드 (Bad Code)를 최소화하고 클린 코드 (Clean Code)로 작성하여 소스 코드의 품질을 높일 수 있는 것
- 클린 코드는 코드가 단순, 명료하며, 가독성이 좋고, 의존성을 줄이고, 중복성을 최소화한 코드
- 클린 코드 작성 원칙: 가독성, 단순성, 중복성 최소화, 의존성 배제, 추상화
- 소스 코드 품질 분석 도구
- 소스 코드 스타일, 코드의 복잡도, 코드에 설정된 코딩 표준, 코드 안에 있는 메모리 누수 현황, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구
- 애플리케이션 성능을 개선하기 위해 소스 코드에서 나쁜 코드 (Bad Code)를 최소화하고 클린 (Clean Code)로 작성하여 소스 코드의 품질을 높일 수 있는 것
- 클린 코드는 코드가 단순, 명료하며, 가독성이 좋고 의존성을 줄이고, 중복성을 최소화한 코드
- 클린 코드 작성 원칙으로는 가독성, 단순성, 중복성 최소화, 의존성 배제, 추상화
- 애플리케이션 성능이란?
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 필기 노트 - 논리 테스트 시나리오 설계 (0) | 2024.10.09 |
---|---|
[정보처리기사] 필기 노트 - 인터페이스 구현 (0) | 2024.10.08 |
[정보처리기사] 필기 노트 - 제품 소프트웨어 패키징 (1) | 2024.10.06 |
[정보처리기사] 필기 노트 - 데이터 입출력 구현과 통합 구현 (2) | 2024.10.05 |
[정보처리기사] 필기 노트 - 인터페이스 설계 (1) | 2024.10.02 |