2025. 3. 12. 18:25ㆍ개발/개발 방법론
3.3 시스템 테스트(System Testing) 단계
시스템 테스트(System Testing)는 개발된 소프트웨어 시스템이 전체적으로 요구사항을 충족하는지 검증하는 과정입니다.
단위 테스트(각 모듈 검증)와 통합 테스트(모듈 간 연동 검증)를 거친 후, 전체 시스템이 정상적으로 작동하는지 테스트하는 마지막 단계입니다.
이 단계에서는 기능적 요구사항뿐만 아니라, 성능, 보안, 확장성 등 비기능적 요구사항도 검증합니다.
📌 학습 목표
✔ 전체 시스템이 요구사항을 충족하는지 확인하는 방법을 학습한다.
✔ 시스템 테스트 계획을 수립하고, 기능 및 비기능 테스트를 수행한다.
✔ 성능 테스트 및 부하 테스트 개념을 익히고, 자동화 도구를 활용한다.
✔ Selenium 또는 JMeter를 활용하여 간단한 시스템 테스트를 실행한다.
📖 학습 내용
1. 시스템 테스트 계획 수립
시스템 테스트를 효과적으로 수행하기 위해서는 체계적인 테스트 계획 수립이 필요합니다.
📌 시스템 테스트 계획 주요 구성 요소
항목 | 설명 |
테스트 목표 | 시스템이 요구사항을 충족하는지 검증하는 목표 정의 |
테스트 범위 | 검증할 기능 및 비기능적 요구사항 명확화 |
테스트 환경 | 운영 환경과 유사한 테스트 환경 구축 |
테스트 데이터 | 실사용 데이터를 모방한 테스트 데이터 준비 |
테스트 일정 | 테스트 수행 일정 및 단계별 목표 수립 |
테스트 도구 | Selenium, JMeter, Postman 등 테스트 도구 선정 |
테스트 종료 기준 | 테스트 성공 여부를 결정하는 기준 정의 (예: 90% 이상 테스트 통과) |
✔ 시스템 테스트 계획을 수립하면 테스트 진행이 체계적으로 이루어지며, 누락된 요구사항이 없는지 확인할 수 있습니다.
2. 기능 테스트 및 비기능 테스트 수행
📌 기능 테스트(Functional Testing)
기능 테스트는 시스템이 정의된 기능을 올바르게 수행하는지를 검증하는 과정입니다.
📌 기능 테스트 유형
테스트 유형 | 설명 |
Smoke Testing (기초 테스트) | 기본적인 기능이 정상적으로 동작하는지 확인 |
Sanity Testing (간략 테스트) | 새로운 기능 추가 후 기존 기능에 영향이 없는지 확인 |
Regression Testing (회귀 테스트) | 코드 변경 후 기존 기능이 정상적으로 유지되는지 확인 |
End-to-End Testing | 사용자 관점에서 전체 흐름을 테스트 |
✔ 기능 테스트를 수행하면 소프트웨어가 기대한 대로 작동하는지 확인할 수 있습니다.
📌 비기능 테스트(Non-Functional Testing)
비기능 테스트는 소프트웨어의 성능, 보안, 확장성 등을 검증하는 과정입니다.
📌 비기능 테스트 유형
테스트 유형 | 설명 |
성능 테스트 (Performance Testing) | 시스템의 응답 시간 및 처리량 검증 |
부하 테스트 (Load Testing) | 동시 접속자가 증가할 때 성능 검증 |
스트레스 테스트 (Stress Testing) | 극한 상황에서 시스템의 안정성 검증 |
보안 테스트 (Security Testing) | 시스템의 취약점을 식별하고 보안성 검증 |
유지보수성 테스트 (Maintainability Testing) | 시스템이 얼마나 쉽게 수정될 수 있는지 평가 |
✔ 비기능 테스트를 수행하면 시스템의 성능과 안정성을 보장할 수 있습니다.
3. 성능 테스트 및 부하 테스트 개념
📌 성능 테스트(Performance Testing)
성능 테스트는 시스템이 일정한 부하(Load) 하에서도 성능을 유지할 수 있는지 평가하는 과정입니다.
이 테스트는 주로 응답 시간(Response Time), 처리 속도(Throughput), 자원 사용률(CPU, Memory) 등을 측정합니다.
📌 성능 테스트 주요 지표
지표 | 설명 |
응답 시간 (Response Time) | 요청을 처리하는 데 걸리는 시간 |
TPS (Transactions Per Second) | 초당 처리 가능한 트랜잭션 수 |
CPU 사용률 | 프로세스가 사용하는 CPU 리소스 |
메모리 사용량 | 시스템이 사용하는 메모리 크기 |
✔ 성능 테스트를 수행하면 예상되는 사용량에서도 시스템이 원활하게 동작하는지 확인할 수 있습니다.
📌 부하 테스트(Load Testing)
부하 테스트는 동시 사용자 수를 증가시키면서 시스템이 정상적으로 작동하는지 검증하는 테스트입니다.
이 테스트는 실제 운영 환경에서 발생할 수 있는 최대 부하를 예측하여 시스템이 정상적으로 대응할 수 있는지를 평가합니다.
📌 부하 테스트 시나리오 예시
- 웹사이트에 10,000명의 동시 사용자가 접속할 때 응답 시간이 2초 이내인지 확인
- 데이터베이스에 100만 개의 레코드를 저장할 때 성능이 저하되지 않는지 검증
✔ 부하 테스트를 수행하면 시스템이 실제 운영 환경에서도 안정적으로 동작하는지 검증할 수 있습니다.
4. 자동화 테스트 프레임워크 활용
시스템 테스트를 자동화하면 반복적인 테스트를 효율적으로 수행할 수 있으며, 인적 오류를 최소화할 수 있습니다.
📌 시스템 테스트 자동화 프레임워크
도구 | 설명 |
Selenium | 웹 애플리케이션의 UI 테스트 자동화 |
JMeter | 성능 및 부하 테스트 수행 |
Postman | API 요청 자동화 및 테스트 스크립트 작성 |
Gatling | 고성능 부하 테스트 지원 |
✔ 자동화 테스트 프레임워크를 활용하면 테스트 효율성을 극대화할 수 있습니다.
🛠 실습: Selenium 또는 JMeter를 활용한 간단한 시스템 테스트 실행
📌 실습 목표
- Selenium을 활용하여 웹 애플리케이션의 UI 테스트를 자동화한다.
- JMeter를 활용하여 부하 테스트를 수행한다.
📌 실습 과제
- Selenium을 활용한 웹 애플리케이션 UI 테스트
- Selenium WebDriver를 사용하여 로그인 기능 자동화 테스트 수행
- 특정 페이지 요소가 정상적으로 로드되는지 검증
- JMeter를 활용한 부하 테스트 수행
- 100명의 동시 사용자가 API 요청을 보낼 때 시스템 성능 검증
- TPS(Transactions Per Second) 및 응답 시간 분석
📌 예제 코드 (Python, Selenium 활용)
from selenium import webdriver
from selenium.webdriver.common.by import By
# 웹 드라이버 실행
driver = webdriver.Chrome()
# 테스트할 웹사이트 열기
driver.get("http://example.com/login")
# 로그인 입력 필드 찾기
username = driver.find_element(By.NAME, "username")
password = driver.find_element(By.NAME, "password")
# 로그인 정보 입력
username.send_keys("test_user")
password.send_keys("password123")
# 로그인 버튼 클릭
driver.find_element(By.NAME, "login").click()
# 로그인 성공 여부 확인
assert "Dashboard" in driver.title
# 테스트 종료
driver.quit()
✔ pytest를 활용하여 Selenium UI 테스트를 자동 실행 가능
✔ JMeter GUI에서 부하 테스트 시나리오 설정 후 실행
✅ 결론
✔ 시스템 테스트는 전체 시스템이 요구사항을 충족하는지를 검증하는 과정입니다.
✔ 기능 테스트와 비기능 테스트를 병행하여 소프트웨어 품질을 보장해야 합니다.
✔ 성능 테스트와 부하 테스트를 통해 시스템의 안정성을 확인할 수 있습니다.
✔ Selenium과 JMeter를 활용하여 시스템 테스트를 자동화하면 테스트 효율성이 향상됩니다. 🚀