System Test vs End-to-End Test

System Test vs. End-to-End Test System Testing과 End-to-End Testing은 소프트웨어 테스팅 과정에서 사용되는 두 가지 중요한 테스트 방법이다. 이 두 방법은 소프트웨어의 품질을 보장하기 위해 사용되지만, 그 범위와 목적에 차이가 있다. 비교 항목 System Test End-to-End Test 정의 전체 시스템이 요구사항 명세서에 따라 정상적으로 동작하는지 검증하는 테스트 실제 사용자의 시나리오에 따라 처음부터 끝까지의 전체 비즈니스 프로세스를 검증하는 테스트 테스트 범위 시스템의 기능적/비기능적 요구사항 전체 사용자 관점에서의 전체 비즈니스 프로세스 흐름 수행 시점 통합 테스트 완료 후, 인수 테스트 전 모든 하위 단계 테스트 완료 후 최종 단계 테스트 환경 테스트 환경 (실제 환경과 유사하게 구성) 실제 운영 환경과 동일한 환경 테스트 주체 QA 팀, 테스트 엔지니어 QA 팀, 비즈니스 분석가, 때로는 실제 최종 사용자 검증 대상 시스템의 모든 기능, 성능, 보안 등 실제 사용자의 업무 흐름과 시나리오 테스트 데이터 테스트용 데이터 실제 운영 데이터와 유사한 데이터 테스트 관점 기술적 관점과 비즈니스 관점 모두 포함 순수하게 비즈니스 관점, 사용자 경험 중심 자동화 수준 중간~높음 낮음~중간 테스트 케이스 작성 기준 요구사항 명세서 기반 사용자 시나리오 기반 결함 발견 초점 시스템 내부의 기술적 결함 비즈니스 프로세스 상의 결함 테스트 비용 중간 높음 실행 시간 비교적 짧음 길음 (전체 프로세스 수행) 유지보수 복잡도 중간 높음 테스트 준비 사항 테스트 환경, 테스트 데이터, 테스트 케이스 전체 시스템 구성, 외부 시스템 연동, 실제 데이터 주요 목적 시스템의 완전성과 정확성 검증 비즈니스 프로세스의 정상 작동 검증 피드백 대상 개발팀, QA 팀 비즈니스 팀, 최종 사용자 커버리지 중점 기능 커버리지 비즈니스 프로세스 커버리지 이러한 차이점들은 각각의 테스트가 서로 다른 목적과 관점에서 수행되면서도 상호 보완적인 역할을 한다는 것을 보여준다. System Test가 시스템의 기술적인 완성도를 검증하는 데 중점을 둔다면, End-to-End Test는 실제 사용자의 관점에서 전체 비즈니스 프로세스가 정상적으로 작동하는지를 검증하는 데 초점을 맞춘다. ...

November 5, 2024 · 2 min · Me

엔드투엔드 테스트(End-to-End Test, E2E Test)

엔드투엔드 테스트(End-to-End Test, E2E Test) 엔드투엔드 테스트는 소프트웨어 시스템을 처음부터 끝까지 검증하는 테스트 방법이다. 이는 사용자의 관점에서 전체 애플리케이션의 흐름을 테스트하여 모든 구성 요소가 올바르게 작동하는지 확인한다. 온라인 쇼핑몰의 엔드투엔드 테스트 예시: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 # Selenium을 사용한 E2E 테스트 예시 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class ShoppingMallE2ETest: def setUp(self): # 브라우저 실행 및 초기 설정 self.driver = webdriver.Chrome() self.driver.get("https://example-shop.com") def test_complete_purchase_flow(self): # 1. 로그인 self.login("test@example.com", "password123") # 2. 상품 검색 search_box = self.driver.find_element(By.ID, "search") search_box.send_keys("노트북") search_box.submit() # 3. 상품 선택 product = WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, "product-item")) ) product.click() # 4. 장바구니 담기 add_to_cart = self.driver.find_element(By.ID, "add-to-cart") add_to_cart.click() # 5. 결제 진행 checkout_button = self.driver.find_element(By.ID, "checkout") checkout_button.click() # 6. 배송 정보 입력 self.fill_shipping_info({ "name": "홍길동", "address": "서울시 강남구", "phone": "010-1234-5678" }) # 7. 결제 완료 확인 confirmation = WebDriverWait(self.driver, 20).until( EC.presence_of_element_located((By.CLASS_NAME, "order-confirmation")) ) assert confirmation.is_displayed() # 8. 주문 내역 확인 order_number = confirmation.find_element(By.CLASS_NAME, "order-number").text assert len(order_number) > 0 특징과 목적 사용자 중심: 실제 사용자의 경험을 시뮬레이션한다. 전체 시스템 검증: 모든 구성 요소와 외부 종속성을 포함하여 테스트한다. 실제 환경 유사성: 프로덕션 환경과 유사한 조건에서 테스트를 수행한다. 테스트 범위 엔드투엔드 테스트는 다음과 같은 요소를 포함한다: ...

November 3, 2024 · 3 min · Me