반응형

전체 글 169

테스트 더블(Test Double) : Mock, Stub, Spy의 차이

✅ **📌 테스트 더블 (Test Double)**란?테스트를 쉽게 만들기 위해 실제 객체를 흉내 낸 가짜 객체들영화에서 대역 배우(double) 쓰는 것처럼,→ 테스트에서도 진짜 객체 대신 **“가짜 객체”**를 쓰는 거임.🧩 테스트 더블의 5가지 유형종류설명대표 특징Dummy값 전달만 하고 사용되지 않음쓰이진 않지만 인자 채우기용Stub미리 정해진 값 반환로직 없이 값만 반환Mock메서드 호출 여부 등 행동 검증assert_called 등 사용Spy진짜 객체를 감시, 일부만 가짜로 대체실제 동작 + 호출 기록Fake진짜처럼 동작하지만 단순한 구현체예: 메모리 DB💡 정리하자면:🔹 이것들은 테스트 자체가 아니라, 테스트를 "도와주는 역할자"🔹 Mock, Stub, Spy → 전부 Test Do..

테스트 더블(Test Double)-> 목 객체(Mock Object)

✅ **목 객체(Mock Object)**란?실제 객체를 대신해 테스트 용도로 만든 가짜 객체원래는 DB, API, 파일 등 외부 자원이 필요한데→ 그거 없이 테스트할 수 있게 만든 가짜 객체야.테스트 대상 함수가 의존하는 객체를 흉내 내서→ 결과값을 미리 정해두고, 테스트를 깔끔하게 할 수 있어.📌 왜 써?1️⃣ 외부 의존 없이 테스트 가능2️⃣ 예측 가능한 결과로 빠르게 테스트3️⃣ 비용 절감 (DB 호출, API 호출 생략)4️⃣ 단위 테스트에 딱 맞음📌 핵심 요약:실제 객체 흉내 내는 가짜 객체외부 의존 제거 → 단위 테스트에 유용✅ 📍목 객체를 써야 할 때1️⃣ 외부 시스템에 의존할 때예: DB, API, 파일 시스템 등➡ 테스트할 때 속도 느림, 비용 큼, 에러 발생 위험➡ 그래서 가짜(..

단위 테스트

✅ 단위 테스트 (Unit Test)프로그램의 가장 작은 단위(함수, 메서드 등)를 개별적으로 테스트하는 것보통 하나의 함수, 하나의 클래스 메서드 수준에서 테스트다른 모듈이나 시스템은 무시하고 독립적으로 검사코드 수정 시, 기능이 잘 동작하는지 빠르게 확인 가능📌 예시1️⃣ 자바에서 덧셈 함수 테스트→ add(2, 3)의 결과가 5인지 확인2️⃣ 로그인 기능에서 비밀번호 검증 함수→ check_password("1234", "1234") → True→ check_password("1234", "0000") → False🛠️ 자주 쓰는 테스트 도구Java → JUnitPython → unittest, pytestJavaScript → Jest, Mocha ✅ 단위 테스트를 하는 이유1️⃣ 버그 조기 ..

화이트박스 테스트 or 블랙박스 테스트

✅ 화이트박스 테스트 (White-box Testing)코드 안을 ‘들여다보고’ 테스트하는 방식개발자가 내부 구조를 알고 진행조건문, 반복문, 함수 호출 등을 모두 확인주요 기법:문장(Statement) 커버리지분기(Branch) 커버리지조건/경로 커버리지📌 예시:함수 안에 if문이 있다면, 그 조건이 참일 때/거짓일 때 모두 테스트하는 것 ✅ 화이트박스 테스트 예시 (White-box)1️⃣ if 조건문 테스트→ score = 95 (조건 true), score = 85 (조건 false) → 두 경로 모두 테스트2️⃣ 반복문 테스트→ i가 0, 1, 2일 때 실제로 모든 반복이 수행되는지 확인 ✅ 블랙박스 테스트 (Black-box Testing)내부 로직은 몰라도, 입력과 출력만 보고 테스트하는 ..

유클리드 호제법

🧠 유클리드 호제법이란?두 수 a, b의 최대공약수(GCD)는, b와 a % b의 GCD와 같다.💡 즉,GCD(a, b) = GCD(b, a % b)이걸 나머지가 0이 될 때까지 반복하면 됨🔁 예제: 48과 18의 최대공약수👉 나머지가 0이 되었으니 최대공약수는 6📘 왜 이게 맞을까?공약수는 나머지를 만들지 않는 수인데,나머지를 계속 줄이다 보면 결국 공약수만 남게 됨그래서 반복하면 가장 큰 공약수 = 최대공약수가 나와🔤 Java 코드로 보면:📌 요약항목내용목적두 수의 최대공약수(GCD) 구하기방식GCD(a, b) = GCD(b, a % b)종료 조건나머지가 0일 때장점빠르고 효율적 (시간 복잡도 O(log n))  ✅ 1. 최대공약수 (GCD: Greatest Common Divisor)두..

java 문자열

✅ 문자열의 개요1. 문자열이란?문자들의 **연속(배열)**이야.쉽게 말해: 'Hello World'는 → 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd' 이런 문자 하나하나가 연결된 구조!2. 공백도 문자다' ' ← 공백도 문자로 취급됨→ 예: 'H', ' '(스페이스), 'W'3. 문자열은 항상 큰따옴표로 씀작은따옴표 'a'는 문자 1개(char)큰따옴표 "abc"는 문자열(String)4. 문자열은 String 클래스의 객체이건 단순 텍스트가 아니라 **String이라는 클래스의 객체(인스턴스)**야.5. new 키워드를 쓰면 메모리에 따로 생성됨이렇게 하면 Heap 메모리에 새로운 객체가 생성돼."Hello" 이렇게 쓰면 **문자열 상수 풀(Stri..

자바로 만들 수 있는 것들 (기초부터 실무까지)

✅ 자바로 만들 수 있는 것들 (기초부터 실무까지)🎮 1. 콘솔 게임 / 텍스트 게임숫자 맞추기 게임가위바위보미니 RPG (텍스트 기반)로또 번호 생성기업다운 게임👉 초보자가 연습하기 딱 좋은 과제!🗂️ 2. 파일 관리 프로그램메모장텍스트 파일 읽고 저장자바 파일로 자동 백업디렉토리 정리 프로그램🖼️ 3. GUI 프로그램 (Swing / JavaFX)계산기이미지 뷰어채팅 프로그램퀴즈 프로그램할 일 목록 앱 (To-Do List)👉 버튼 클릭, 텍스트 입력 같은 실제 창에서 작동하는 프로그램🌐 4. 웹 사이트 / 서버 만들기 (Spring, JSP, Servlet)로그인/회원가입 웹사이트게시판, 블로그쇼핑몰, 예약 시스템REST API 서버관리자 페이지👉 웹 브라우저에서 작동하는 실제 서비스형..

휴머노이드 멀티모달

**“휴머노이드(Humanoid)”**는 말 그대로 **“인간(human)처럼 생긴 로봇”**을 뜻함📌 쉽게 말하면?사람처럼 팔, 다리, 머리, 몸통을 가진 로봇을 말해. 보통 사람처럼 걷고, 말하고, 표정을 짓고, 물건을 집는 등의 행동을 하도록 설계돼 있음🤖 대표적인 휴머노이드 예시소피아(Sophia) – 인간처럼 얼굴 표정을 지으며 말도 하고 인터뷰도 하는 로봇아틀라스(Atlas) – 보스턴 다이내믹스에서 만든 로봇으로, 점프하고 뒤로 공중제비도 가능테슬라 옵티머스(Optimus) – 일론 머스크가 발표한 테슬라의 사람형 로봇🧠 휴머노이드의 핵심 기술AI(인공지능) – 대화, 감정 인식, 판단로보틱스 – 걷기, 팔 움직이기 등 신체 동작센서 기술 – 시각, 청각, 촉각 등을 흉내냄기계학습 – ..

java 2차원 배열

예시로 쉽게 이해하기:1차원 배열: [1, 2, 3, 4, 5] → 이 배열에서 경향을 파악하는 것은 단순히 숫자의 나열일 뿐, 변화의 패턴을 보기 어려운 형태입니다.2차원 배열: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] → 이 배열에서는 행과 열을 기준으로 데이터를 분석할 수 있고, 예를 들어 행의 평균을 구하는 등 다양한 경향을 찾아볼 수 있습니다.3차원 배열: [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] → 3차원 배열에서는 층과 행, 열을 기준으로 더 복잡한 데이터를 다룰 수 있습니다.결론:1차원 배열은 **"평면적인 데이터"**로, 입체적인 구조(즉, 여러 차원의 데이터를 표현할 수 있는 구조)가 없어서 데이터 경향을 파악하기 어렵다는 의미입니다.반면에 ..

java 상수란?

**상수(Constant)**는 한 번 값이 설정되면, 그 값을 변경할 수 없는 변수입니다. 상수는 주로 프로그램에서 변경되지 않는 고정된 값을 다룰 때 사용됩니다. 자바에서는 final 키워드를 사용하여 상수를 선언합니다.1. 상수의 특징:값 변경 불가: 상수로 선언된 변수는 한 번 값을 설정한 후 절대로 그 값을 변경할 수 없습니다.값이 고정됨: 주로 계산에 사용되지 않거나, 고정된 값(예: 원주율, 최대값, 최소값 등)을 저장할 때 사용합니다.명확한 의미 전달: 상수는 그 값이 변경되지 않기 때문에, 코드에서 상수를 사용하면 값의 의미가 더 명확해집니다. 예를 들어, "최대 시도 횟수"와 같은 값을 상수로 설정하면 코드 읽는 사람이 그 값이 변경되지 않음을 확실히 알 수 있습니다.2. 자바에서 상수..

반응형