전체 글 155

Junit 기반 백엔드 테스트 스위트

Spring Boot 기준으로 JUnit 5(Jupiter) 를 사용하는 백엔드 테스트 스위트 구성을 “바로 복붙 가능한” 예제로 정리했습니다. (Java 예제지만, Kotlin도 동일한 구조·어노테이션으로 동작합니다.)---1) 기본 의존성 & 디렉터리Maven (pom.xml) org.junit.jupiter junit-jupiter 5.10.2 test org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.mockito mockito..

skill/check 2025.10.15

테스트 스위트(Test Suite)

“테스트 스위트(Test Suite)”는 여러 개의 테스트 케이스(Test Case)를 묶어둔 집합을 의미합니다.소프트웨어 테스트에서 테스트 시나리오를 체계적으로 관리하고 실행하기 위한 단위로 사용됩니다.---💡 기본 개념용어 설명테스트 케이스 (Test Case) 하나의 특정 기능 또는 조건을 검증하기 위한 단위 테스트 항목 (예: 로그인 성공 테스트)테스트 스위트 (Test Suite) 여러 개의 테스트 케이스를 논리적으로 묶은 집합 (예: 로그인 기능 전체 테스트 모음)테스트 시나리오 (Test Scenario) 실제 사용자의 행위 흐름 기반 테스트 설계 (예: “사용자가 로그인하고 마이페이지를 확인한다”)테스트 실행 (Test Execution) 테스트 스위트 또는 개별 케이스를 실제 실행하는 ..

skill/check 2025.10.14

셀레니움(Selenium) 단점

React 같은 SPA(Single Page Application) 페이지를 Selenium으로 제어해서 데이터 수집하는 방식은 분명 강력하지만 단점도 많습니다.아래에서 왜 이렇게 처리해야 하는지, 그리고 어떤 점이 문제인지 정리해드릴게요.---🔹 1. 이렇게 처리하는 이유 (왜 Selenium을 써야 하나?)React, Vue, Angular 같은 프론트엔드 프레임워크는HTML을 서버에서 직접 보내지 않고,JavaScript가 실행된 후 동적으로 화면을 그립니다.즉,requests.get(url) 같은 단순 요청으로는 데이터가 비어 있음HTML 파서(BeautifulSoup)는 렌더링 후 데이터를 읽지 못함👉 그래서 실제 브라우저를 띄워서 JavaScript를 실행시키는 도구,즉 Selenium이 ..

skill/check 2025.10.14

셀레니움(Selenium) React 페이지 데이터 수집 예제 (Headless 모드)

React로 만들어진 웹페이지는 데이터를 서버에서 바로 가져오는 게 아니라,브라우저에서 JavaScript로 렌더링되는 경우가 많습니다.이럴 때 BeautifulSoup처럼 단순 HTML 파싱으로는 안 되고,Selenium으로 실제 브라우저를 띄워 렌더링된 데이터를 읽어야 합니다.---🔹 예제 시나리오React 기반 페이지(예: 상품 목록 페이지)가 있다고 할 때,다음 데이터를 자동으로 수집합니다.> 예: https://example-react-shop.com/products상품 이름가격상세 링크---🔹 Python + Selenium 예제 코드from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.w..

skill/check 2025.10.14

셀레니움(Selenium)

셀레니움(Selenium)은 웹 브라우저를 자동으로 제어하는 오픈소스 도구입니다.사람이 직접 마우스 클릭하고 입력하는 일을 프로그램 코드로 대신 수행할 수 있게 해줍니다.---🔹 주요 용도1. 웹 자동화 (Web Automation)반복적인 웹 작업(로그인, 버튼 클릭, 데이터 입력, 다운로드 등)을 자동화할 수 있습니다.→ 예: 매일 같은 사이트에 로그인해 보고서를 다운로드.2. 웹 크롤링 / 데이터 수집일반적인 HTML 파싱(BeautifulSoup 등)으로 접근이 어려운 JavaScript 기반 웹페이지에서 데이터를 가져올 때 사용합니다.→ 페이지가 동적으로 렌더링되는 사이트도 처리 가능.3. 테스트 자동화 (QA/Test Automation)웹 애플리케이션의 기능 테스트를 자동으로 수행할 수 있..

skill/check 2025.10.14

Jacoco url 기준 테스트

“웹 서비스 기준, URL 기준 Jacoco test 처리” → 쉽게 말해 컨트롤러(API URL 단위로 테스트를 작성하고, 그 결과를 Jacoco 커버리지에 반영하는 방법**을 말씀하시는 거죠.---1. 기본 개념Jacoco는 테스트 실행 시 코드(클래스/메서드/라인)가 실제로 호출되었는지만 체크합니다.따라서 “URL 기준 테스트” = 컨트롤러 URL 호출 테스트(MockMvc/WebTestClient) 를 작성하면 → 해당 URL을 처리하는 컨트롤러/서비스 코드 라인이 커버리지에 잡히는 구조입니다.즉, URL 단위의 API 테스트 = Jacoco 기준 커버리지 확보.---2. Spring Boot (Kotlin) URL 테스트 예시컨트롤러@RestController@RequestMapping("/ap..

skill/Java.Kotlin 2025.09.16

Jacoco 리포트 화면

🔎 Jacoco 리포트 화면 구조 (HTML 기준)./gradlew test jacocoTestReport 실행 → build/reports/jacoco/test/html/index.html 파일 열면 아래와 같은 페이지가 나옵니다.---1. 메인 화면 (index.html)패키지/클래스별 커버리지 요약 표열(column)에는 보통 이런 지표들이 표시돼요:Element (패키지/클래스) Missed Instructions Cov. (%) Missed Branches Cov. (%) Complexity Lines Methods Classes색상 의미빨강 🔴 : 커버리지 없음 (테스트가 전혀 실행 안 됨)노랑 🟡 : 일부만 실행됨초록 🟢 : 테스트가 전부 실행됨👉 이 표만 봐도 어떤 패키지가 테스트..

skill/Java.Kotlin 2025.09.16

jacoco 개념 + 외부 연동 MockkBean 처리

---1. Jacoco란?Java Code Coverage의 줄임말 (JaCoCo)Java, Kotlin 애플리케이션에서 테스트 코드가 실제로 소스 코드를 얼마나 실행했는지 측정하는 라이브러리테스트를 돌렸을 때 → 어떤 클래스, 메서드, 라인, 분기가 실행되었는지 기록하고 → 보고서(HTML, XML, CSV)로 보여줍니다.---2. 왜 필요할까?단위테스트가 충분히 작성되었는지 객관적으로 수치화단순히 “테스트 통과”만으로는 부족 → 실제로 코드 커버리지를 봐야 테스트 범위 알 수 있음QA, 감리, 팀 내 품질 지표로 활용 가능Jenkins, SonarQube 같은 CI/CD 품질 게이트와 연동해 커버리지가 일정 % 미만이면 빌드 실패로 막을 수 있음---3. 커버리지 종류JaCoCo는 여러 수준의 커버리..

skill/Java.Kotlin 2025.09.15