안녕하세요, 성조입니다.
오늘도 간략하게 학습했던 내용에 대해 정리하는 시간을 가져보려 합니다.
소프트웨어 테스트란?
소프트웨어에서 테스트란 개발된 응용 앱이나 시스템이 사용자가 요구하는 기능과 성능, 안정성 등을 만족하고 있는지 또는 사용자가 사용 중에 혹시 모르게 발생될 버그를 함께하고 있는 것인지 확인하기 위해 사용되는 정의이다.
테스트 기법으로 정적 테스트와 동적 테스트를 쉽게 접할 수 있고, 다음과 같이 정리가 된다.
정적 테스트 (Static Testing)
정적 테스트는 프로그램을 실제 구동(실행)하지 않고 소스 코드, 설계 문서, 요구사항 명세서 등을 검토하여 결함을 찾아내는 방식이며, 초기 단계에서 주로 수행된다.
1) 특징 -> 코드 실행 없이 문서나 코드의 형태 자체를 분석한다.
2) 목적 -> 개발 초기 단계의 논리적 오류, 코딩 표준 위반, 잠재적인 버그를 사전에 발견하여 구현 단계나, 추후 발생되는 막대한 수정 비용들을 예방하는 것을 목적으로 둔다.
3) 기법 -> 더 많은 기법이 있지만, 접하기 쉬운 이론에 대해 언급하면 다음과 같다.
3-1) 리뷰(Review) -> 동료들이 코드나 산출물을 함께 읽고 검토하는 과정(워크스루, 인스펙션 등이 있다. 정처기 시험에도 자주 언급된다.)
3-2) 정적 분석(Static Analysis) -> 자동화된 도구를 사용하여 코드의 복잡도, 문법적 오류, 메모리 누수 위험 등을 기계적으로 분석한다.
동적 테스트 ( Dynamic Testing)
동적 테스트는 실행하지 않는 정적 테스트와 다르게 소프트웨어를 실제로 구동(실행)하여 입력값에 대해 예상된 결과와 실제 결과가 일치하는지 확인하는 방식이다.
IDE 환경에서 서버를 띄우고 실행하는 과정에서 이 테스트 코드를 작성해서 실행하는 레벨이라 보면 된다.
1) 특징 -> 프로그램에 특정 환경과 입력값을 부여하고 실행한 뒤, 출력된 결과를 확인한다.
2) 목적 -> 소프트웨어가 요구사항에 맞게 제대로 동작하는지, 성능과 안정성에 문제가 없는지(메모리 사용량, 응답 시간 등 런타임 환경)를 검증한다.
3) 기법 -> 여러 기법들이 있지만, 동적 테스트들은 실제 코드 구현 단계에서도 적용해서 실습을 진행해보는 것이 좋다.
3-1) 블랙박스 테스트 (Black-box Testing) -> 내부 코드를 보지 않고 사용자 관점에서 기능 위주로 테스트하는 방법이다.
3-2) 화이트박스 테스트 (White-box Testing) -> 내부 구조와 로직을 파악한 상태에서 소스 코드의 모든 경로를 테스트한다.
3-3) 수행 단계별로 는 단위 테스트(Unit), 통합 테스트(Integreation), 시스템 테스트(System), 인수 테스트(Acceptance)등의 다양한 단계의 테스트가 존재하고, 크기별로 확장된다. 이때 소프트웨어 공학의 생명주기와 함께 확인해주면 좋다.
감사합니다.
다음 포스팅에서 뵙겠습니다.
'Study' 카테고리의 다른 글
| [Study] PDCA란? (1) | 2026.03.12 |
|---|---|
| [Study] DoS와 DDoS, DRDoS 학습 기록 (4) | 2025.08.03 |
| [Supabase] getSession과 getUser의 차이점 정리 (0) | 2025.03.03 |
| [인프라] AWS, GCP, Azure 간단 비교 정리 (0) | 2024.11.24 |
| [Study] 고객 충성도를 높이는 CRM(Customer Relationship Management) 마케팅 전략 (0) | 2024.11.21 |