- 등가 분할은 입력을 동일한 방식으로 동작해야 하는 그룹으로 나눕니다.
- 모든 값이 아닌 각 그룹에서 하나의 대표 값을 테스트합니다.
- 오류 처리에는 많은 버그가 숨겨져 있으므로 항상 유효하지 않은 파티션을 포함하십시오.
- 버그는 종종 그룹의 가장자리에 있기 때문에 경계 값 분석과 함께 가장 잘 작동합니다.
18세부터 60세까지를 허용하는 연령 필드에는 음수, 큰 숫자, 텍스트 및 공백을 세면 입력 가능한 숫자가 엄청나게 많습니다. 아무도 그것을 모두 시도할 수는 없습니다. 등가 분할은 소프트웨어가 동일한 방식으로 처리해야 하는 입력을 그룹화한 다음 각 그룹에서 하나의 값을 테스트하여 이 문제를 해결합니다.
이는 모든 테스터가 배워야 할 첫 번째 테스트 설계 기술 중 하나입니다. 이 가이드에서는 단계별로 작업하고 Python에서 하나의 예제를 테스트합니다. Python 3.13에서 해당 코드를 실행했으며 해당 출력이 포함되었습니다. 아래의 비밀번호 및 쿠폰 규칙은 실제 시스템에서 가져온 것이 아닌 예시입니다.
등가 분할이란 무엇입니까?
ECP(동등 클래스 파티셔닝)라고도 하는 등가 파티셔닝은 블랙박스 테스트 설계 기술입니다. 기능의 가능한 입력을 파티션 또는 클래스로 나눕니다. 파티션 내부의 모든 값은 동일한 종류의 동작을 생성할 것으로 예상됩니다.
코드를 볼 필요가 없으므로 요구 사항에서 직접 적용할 수 있습니다. 이러한 테스트 스타일에 대해 자세히 알아보려면 블랙박스와 화이트박스 테스트를 읽어보세요.
작동하는 이유
이 기술은 한 가지 가정을 기반으로 합니다. 즉, 파티션의 한 값이 버그를 발견하면 해당 파티션의 다른 값도 버그를 찾을 가능성이 높습니다. 그리고 하나의 값이 통과하면 다른 값도 통과할 가능성이 높습니다. 성인 연령 분야에서 25, 26, 27번을 테스트하면 25번만 테스트했을 때 알 수 없었던 내용이 아무것도 나오지 않을 것입니다.
| 접근 | 연령 필드 테스트 | 결과 |
|---|---|---|
| 철저한 | 가능한 모든 값 | 현실적으로 불가능 |
| 무작위 추측 | 무엇이 떠오르든 | 중복 및 공백 |
| 등가 분할 | 파티션당 하나 | 소규모, 고의적인 적용 범위 포함 |
그러나 이는 가정일 뿐 보장되는 것은 아닙니다. 소프트웨어에는 파티션 내부에 특별한 경우가 숨겨져 있을 수 있는데, 이 제한 사항은 나중에 다시 설명하겠습니다.
5단계로 수행하는 방법
- 요구사항을 읽고 입력과 해당 규칙을 식별합니다.
- 허용되어야 하는 값 그룹인 유효한 파티션을 찾고 서로 다른 범위가 다르게 동작하는지 확인합니다.
- 너무 낮은 값, 너무 높은 값, 잘못된 유형 및 공백을 포함하여 잘못된 파티션을 찾습니다.
- 각 파티션에서 일반적으로 중간 어딘가에 있는 하나의 대표 값을 선택합니다.
- 좋은 테스트 사례에서와 같이 각각에 대해 예상 결과를 기록합니다.
실제 예: 연령 필드
요구 사항: 18~60세 사용자가 등록할 수 있습니다.
| 파티션 | 유형 | 테스트 값 | 예상되는 결과 |
|---|---|---|---|
| 18세 미만 | 유효하지 않음 | 10 | 거부됨 |
| 18 ~ 60 | 유효 | 35 | 수락됨 |
| 60 이상 | 유효하지 않음 | 75 | 거부됨 |
| 숫자가 아님 | 유효하지 않음 | “abc” | 오류 |
| 공백 | 유효하지 않음 | (empty) | “필수” 메시지 |
5가지 테스트를 통해 요구 사항의 모든 동작을 다룰 수 있습니다. 많은 튜토리얼이 처음 세 행에서 끝나지만, 마지막 두 행은 실제 사용자가 우연히 실행하는 튜토리얼입니다. 합리적으로 다르게 처리할 수 있는 경우 음수 또는 소수에 대한 행을 추가할 수도 있습니다.
코드에서 테스트하기
다음은 Python의 내장 unittest을 사용하여 파티션당 하나의 단위 테스트가 있는 함수로서의 규칙입니다.
import unittest
def can_register(age):
if not isinstance(age, int) or isinstance(age, bool):
raise TypeError("age must be a whole number")
return 18 <= age <= 60
class EquivalenceTests(unittest.TestCase):
def test_valid_partition(self):
self.assertTrue(can_register(35))
def test_too_young_partition(self):
self.assertFalse(can_register(10))
def test_too_old_partition(self):
self.assertFalse(can_register(75))
def test_wrong_type_partition(self):
with self.assertRaises(TypeError):
can_register("abc")
우리의 실행은 통과되었습니다:
test_too_old_partition ... ok
test_too_young_partition ... ok
test_valid_partition ... ok
test_wrong_type_partition ... ok
실제 프로젝트에서 pytest의 매개변수화 기능은 단일 테스트를 통해 파티션 값 테이블을 실행하는 깔끔한 방법입니다.
실제 예: 비밀번호
요구 사항: 비밀번호는 8~20자 길이로 하나 이상의 숫자를 포함해야 합니다.
여기에는 길이와 내용이라는 두 가지 규칙이 있으므로 두 가지 모두에 대해 파티션을 고려합니다.
| 파티션 | 유형 | 테스트 값 | 예상되는 결과 |
|---|---|---|---|
| 유효한 길이입니다. 숫자가 있습니다. | 유효 | 일출42 |
수락됨 |
| 너무 짧음 | 유효하지 않음 | abc1 |
오류: 너무 짧습니다. |
| 너무 길다 | 유효하지 않음 | 숫자가 포함된 30자 값 | 오류: 너무 길다 |
| 유효한 길이, 숫자 없음 | 유효하지 않음 | 일출 |
오류: 숫자가 필요합니다 |
| 공백 | 유효하지 않음 | (empty) | 오류: 필수 |
유효하지 않은 각 테스트는 단 하나의 규칙만 위반한다는 점에 유의하세요. 값이 너무 짧거나 숫자가 누락된 경우 테스트를 통과해도 어떤 검사가 작동했는지 알 수 없습니다. 한 수표는 깨졌을 수도 있고 다른 수표는 사실을 숨길 수도 있습니다.
실제 예: 숫자가 아닌 입력
이 기술은 숫자 범위에 국한되지 않습니다. 개별 옵션, 카테고리 및 상태도 파티션을 형성합니다. 상점에 다음과 같은 규칙이 있다고 가정해 보겠습니다.
요구 사항: 골드 회원은 무료, 실버 회원은 50개, 그 외 모든 회원은 100개를 배송받을 수 있습니다. 알 수 없는 계층 값은 오류입니다.
| 파티션 | 테스트 값 | 예상 수수료 |
|---|---|---|
| 골드 | 금 |
0 |
| 실버 | 은 |
50 |
| 회원 없음 | (none) | 100 |
| 알 수 없는 등급 | 백금 |
오류 |
여기서 각 옵션은 각각 다르게 동작해야 하므로 자체 파티션입니다. 기타 일반적인 파티션에는 유효한 업로드 및 유효하지 않은 업로드와 같은 파일 형식과 대출 승인 또는 거부와 같은 출력 기반 그룹이 포함됩니다.
팁: 입력뿐만 아니라 출력도 생각해 보세요. 계산이 할인, 할인 없음 또는 경고를 생성할 수 있는 경우 최소한 하나의 테스트가 각 결과에 도달하는지 확인하십시오.
한 번에 여러 입력
여러 필드를 사용하면 조합 수가 빠르게 늘어납니다. 4개의 파티션으로 구성된 3개의 필드는 각각 64개의 조합을 제공합니다. 두 가지 전략이 도움이 됩니다.
- 약한 적용 범위: 테스트당 여러 유효한 값을 결합하여 각 파티션이 하나 이상의 테스트에 나타나는지 확인하세요. 잘못된 값의 경우 오류가 서로 가려지지 않도록 한 번에 하나씩 테스트하세요.
- 규칙 기반 적용 범위: 조합이 실제로 결과를 변경하는 경우(예: 주문 값이 있는 회원 상태) 의사결정 테이블 테스트를 사용하여 올바르게 나열합니다.
경계값 분석과 결합
파티셔닝은 테스트할 그룹을 알려줍니다. 그것은 거의 말하지 않는다어디서그룹의 벌레는 숨는 것을 좋아하고 많은 벌레는 가장자리에 숨어 있습니다. 이를 보여주기 위해 우리는 전형적인 off-by-one 실수를 포함한 버그 버전을 작성했습니다:
def buggy(age):
return 18 < age <= 60 # should be 18 <= age
[buggy(a) for a in (35, 10, 75)] # [True, False, False]
buggy(18) # False
우리의 파티션 값인 35, 10, 75는 모두 정답을 제공하므로 해당 테스트는 통과됩니다. 그런데 18세 소년이 부당하게 거절당했습니다. 이것이 두 기술이 함께 속하는 이유입니다.
| 기술 | 선택하다 | 18세부터 60세까지의 가치 |
|---|---|---|
| 등가 분할 | 각 그룹 내 하나의 값 | 10, 35, 75 |
| 경계값 분석 | 각 그룹의 가장자리에 있는 값 | 17, 18, 60, 61 |
분할을 사용하여 그룹을 찾은 다음 경계를 사용하여 그룹이 만나는 위치를 테스트합니다. 우리 코드에서는 17, 18, 60 및 61에 대한 별도의 테스트가 올바른 함수를 전달하여 해당 버그를 포착했습니다. 우리의 경계 값 분석 가이드에서는 이에 대한 전체 내용을 다룹니다.
장점과 한계
| 장점 | 제한사항 |
|---|---|
| 테스트 횟수 대폭 감소 | 올바른 파티션에 의존 |
| 명확하고 설명 가능한 범위를 제공합니다. | 경계에서 버그를 놓칠 수 있음 |
| 코드에 액세스할 필요가 없습니다. | 숨겨진 특수 사례를 놓칠 수 있음 |
| 요구 사항에서도 조기에 적용됩니다. | 시퀀스나 조합을 잘 모델링하지 못합니다. |
가장 큰 위험은 잘못된 가정입니다. 코드에 하나의 특정 값에 대한 숨겨진 규칙이 있는 경우 선택한 테스트가 해당 값에 도달하지 못할 수도 있습니다. 탐색적 테스트 및 코드 적용 범위는 파티션에서 놓친 부분을 찾는 데 도움이 됩니다.
일반적인 실수
- 유효하지 않은 파티션을 잊어버립니다. 행복한 경로만 테스트하면 오류 처리가 선택되지 않은 채로 남습니다.
- 하나의 파티션에서 여러 값을 테스트합니다. 이는 새로운 정보 없이 비용을 추가합니다.
- 하나의 테스트에서 여러 잘못된 값을 결합합니다. 하나의 오류가 다른 오류를 숨길 수 있습니다.
- 경계 건너뛰기. 파티션 테스트만으로는 버그 하나하나를 놓치는 경우가 많습니다.
- 규칙을 추측합니다. 요구사항이 명확하지 않으면 물어보세요. 60세에는 60세 반인 사람도 포함되어야 합니까?
마무리
등가 분할은 “몇 개의 테스트를 작성해야 합니까?”를 대체합니다. 훨씬 더 나은 질문이 있습니다. “어떤 행동이 존재하며, 각 행동을 다 다루었나요?” 시도해 보려면 오늘 테스트 중인 양식을 사용하여 유효하지 않은 파티션을 포함하여 해당 파티션을 종이에 나열하십시오. 다음으로 경계를 추가하세요. 더 많은 버그를 발견하는 더 적은 수의 테스트로 끝나는 경우가 많습니다.
자주 묻는 질문
테스트에서 등가 분할이란 무엇입니까?
입력을 유사하게 동작할 것으로 예상되는 그룹으로 나누는 블랙박스 기술입니다. 그런 다음 모든 값이 아닌 각 그룹에서 하나의 대표 값을 테스트합니다.
등가 분할과 경계 값 분석의 차이점은 무엇입니까?
파티셔닝은 각 그룹 내에서 하나의 값을 선택합니다. 경계 값 분석은 해당 그룹의 가장자리에 있는 값을 테스트합니다. 그들은 일반적으로 함께 사용됩니다.
동등 분할에는 몇 개의 테스트 사례가 필요합니까?
일반적으로 유효하거나 유효하지 않은 파티션당 하나 이상입니다. 연령대 필드에는 일반적으로 약 3~5개의 테스트가 필요합니다.
등가분할은 블랙박스인가, 화이트박스인가?
파티션은 요구 사항에 따라 생성되고 코드가 필요하지 않기 때문에 이는 블랙박스 기술입니다. 그러나 개발자는 이를 단위 테스트에도 적용할 수 있습니다.
유효한 파티션과 유효하지 않은 파티션은 무엇입니까?
유효한 파티션에는 시스템이 허용해야 하는 값이 포함되어 있습니다. 유효하지 않은 파티션에는 범위를 벗어난 숫자, 잘못된 유형, 공백 등 거부해야 하는 값이 포함되어 있습니다.
계속 학습하세요
테스트, WordPress 또는 SEO에 도움이 필요하십니까?
우리는 팀이 더 나은 소프트웨어를 출시하고 사이트를 성장시킬 수 있도록 돕습니다. 현재 진행 중인 작업을 알려주시면 명확한 다음 단계를 제안해 드리겠습니다.
추가 가이드 테스트, AI 및 최신 개발
이 기사가 마음에 드셨나요? 주제를 선택하고 최신 튜토리얼로 바로 이동하세요.
AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법
AI 환각은 그것이 무엇인지, 언어 모델이 환각을 생성하는 이유, 일반적인 유형, 접지 및 프롬프트를 통해 환각을 줄이는 방법, 그리고 우리가 실행한 간단한 점검에 대해 설명했습니다.
기사 읽기 →DevOps환경 변수 설명: .env 파일, 비밀 및 구성이 올바르게 완료되었습니다.
우리가 실행한 Python 예제를 통해 설명된 환경 변수: 읽기 및 설정, 모든 값이 문자열인 이유, .env 파일, 프로세스 상속, 비밀 및 유효성 검사.
기사 읽기 →소프트웨어 개발API 속도 제한 설명: 알고리즘, 헤더 및 429 오류 처리
우리가 실행한 시뮬레이션을 통해 설명된 API 속도 제한: 토큰 버킷, 고정 창, 슬라이딩 창, 429 응답, 속도 제한 헤더, 백오프를 사용한 재시도 및 테스트 제한.
기사 읽기 →테스트 자동화Python에서 조롱: unittest.mock, 패치 및 테스트를 거짓말로 만드는 실수
Unittest.mock을 사용하여 Python에서 모의, 테스트됨: 모의 및 return_value, 부작용, 이름이 사용되는 패치, 사양 및 자동 사양, 모의 날짜 및 일반적인 실수.
기사 읽기 →소프트웨어 테스트코드 커버리지 설명: 회선 커버리지와 분기 커버리지 및 100%의 실제 의미
실제 Coverage.py 실행을 통해 설명되는 코드 적용 범위: 라인, 분기 및 조건 적용 범위, 보고서 읽기, 100% 적용 범위가 여전히 버그를 놓칠 수 있는 이유 및 합리적인 대상.
기사 읽기 →데이터베이스 및 SQLSQL의 DELETE vs TRUNCATE vs DROP: 차이점, 롤백 및 사용 시기
테스트된 SQL을 통해 DELETE 대 TRUNCATE 대 DROP에 대해 설명합니다. 각각의 제거, 롤백, 트리거, ID 재설정, 속도 및 PostgreSQL, MySQL, SQL Server 및 SQLite의 차이점.
기사 읽기 →데이터베이스 및 SQLSQL 뷰 설명: 예제를 통해 함정 생성, 사용 및 방지
우리가 실행한 쿼리로 설명된 SQL 뷰: 뷰 생성, 실시간 결과, 열 숨기기, 성능, 업데이트 가능하고 구체화된 뷰, 손상된 종속성 및 모범 사례.
기사 읽기 →소프트웨어 개발TypeScript 인터페이스와 유형: 실제 차이점, 컴파일러로 테스트
TypeScript 인터페이스 대 유형, 실제 컴파일러로 확인: 둘 다 할 수 있는 것, 하나만 할 수 있는 것, 선언 병합, 확장 대 교차점 및 따라야 할 간단한 규칙.
기사 읽기 →소프트웨어 개발Python *args 및 **kwargs 설명: 명확한 예가 포함된 유연한 함수
Python *args 및 **kwargs는 우리가 실행한 코드(패킹 및 언패킹, 매개변수 순서, 키워드 전용 및 위치 전용 인수, 데코레이터 및 일반적인 오류)를 설명했습니다.
기사 읽기 →소프트웨어 개발Python Lambda 함수: 구문, 실제 사용 및 사용하지 말아야 할 경우
Python 람다 함수는 구문, 키를 사용한 정렬, 맵 및 필터, 클로저, 후기 바인딩 트랩, 일반 def가 더 나은 선택인 경우 등 우리가 실행한 코드로 설명되었습니다.
기사 읽기 →인공지능AI 에이전트란 무엇입니까? 작동 방식, 간단한 에이전트 루프를 사용하여 실행할 수 있음
AI 에이전트란 무엇입니까? 우리가 실행한 작은 Python 루프, 실제 위험 및 간단한 챗봇이 더 나은 선택일 때 에이전트 루프, 도구, 메모리 및 가드레일에 대한 일반 가이드입니다.
기사 읽기 →DevOps모니터링과 관찰 가능성: 로그, 지표, 추적을 통한 실제 차이점
모니터링과 관찰 가능성 설명: 알려진 오류와 알려지지 않은 오류, 로그, 지표 및 추적, 결제 사건 안내, 골든 신호, OpenTelemetry 및 유용한 경고.
기사 읽기 →DevOpsDocker 볼륨과 바인딩 마운트: 컨테이너 데이터를 올바른 방식으로 유지
Docker 볼륨과 바인드 마운트 설명: 컨테이너 데이터가 사라지는 이유, 명명된 볼륨, 바인드 마운트, tmpfs, Compose 예제, 백업, 권한 및 각 사용 시기.
기사 읽기 →테스트 자동화TDD와 BDD: 주요 차이점, 두 가지 방식으로 구축된 하나의 기능 및 각 사용 시기
TDD와 BDD는 두 가지 방식으로 구축된 하나의 할인 기능, 즉 우리가 실행한 코드를 사용한 적록 리팩토링, 주어진 시점 시나리오, 도구, 장단점 및 각 사용 시기를 설명합니다.
기사 읽기 →소프트웨어 테스트UAT(사용자 승인 테스트): 프로세스, 체크리스트 및 실제 사례
사용자 승인 테스트는 누가 실행하는지, QA와 어떻게 다른지, 7단계 프로세스, UAT 테스트 사례 템플릿, 체크리스트, 승인 기준 및 일반적인 실수에 대해 설명했습니다.
기사 읽기 →데이터베이스 및 SQLSQL NULL 값 설명: IS NULL, COALESCE, NULLIF 및 피해야 할 함정
우리가 실행한 쿼리를 통해 설명된 SQL NULL 값: 3개 값 논리, IS NULL, COALESCE, NULLIF, 집계, 조인 및 정렬이 NULL을 처리하는 방법 및 조용히 발생하는 버그.
기사 읽기 →데이터베이스 및 SQLSQL CASE WHEN 문: 구문, 실제 예 및 일반적인 실수
우리가 실행한 쿼리로 설명된 SQL CASE: 단순 및 검색 양식, 조건 순서, SUM이 있는 피벗, COUNT 트릭, 사용자 정의 정렬, 업데이트 및 피해야 할 NULL 트랩.
기사 읽기 →소프트웨어 개발JWT란 무엇입니까? 실제 예제로 설명되는 JSON 웹 토큰
JWT란 무엇입니까? JSON 웹 토큰은 세 부분, 즉 우리가 실행한 코드에서 구축 및 변조된 토큰, JWT 대 세션, 저장소, 새로 고침 토큰 및 보안 실수를 설명했습니다.
기사 읽기 →소프트웨어 개발JavaScript 이벤트 루프 설명: 예제가 포함된 호출 스택, 마이크로태스크 및 타이머
호출 스택, 작업 및 마이크로태스크 대기열, setTimeout 0이 즉시 실행되지 않는 이유, 차단, 기아 및 인터뷰 퀴즈 등 우리가 실행한 코드로 JavaScript 이벤트 루프를 설명했습니다.
기사 읽기 →소프트웨어 개발Python 생성기 및 수율 설명: 실제 예제로 메모리 절약
Python 생성기와 항복은 우리가 실행한 코드로 설명됩니다. 일시 중지 및 재개 방법, 측정된 메모리 절약, 파이프라인, 무한 시퀀스, 항복, 전송 및 공통 트랩.
기사 읽기 →인공지능임베딩이란 무엇입니까? 벡터와 코사인 유사성을 간단하게 설명
임베딩이란 무엇입니까? 벡터, 코사인 유사성 및 의미론적 검색에 대한 일반 언어 가이드로, 우리가 실행한 작은 예, 일반적인 용도, 모델 선택 및 알려진 한계를 제공합니다.
기사 읽기 →DevOps블루-그린 배포와 카나리아 배포: 차이점, 장단점 및 선택 방법
블루-그린 배포와 카나리아 배포에 대한 설명: 각각의 작동 방식, 비용, 위험 및 롤백, 테스트한 안정적인 사용자 버킷팅, 데이터베이스 마이그레이션, 롤링 업데이트 및 선택 방법.
기사 읽기 →테스트 자동화불안정한 테스트: 원인과 해결 방법
우리가 실행한 데모를 통해 불안정한 테스트에 대해 설명했습니다. 주요 원인, 확인 및 진단 방법, 시기, 공유 상태 및 날짜, 격리 프로세스에 대한 적절한 수정 사항.
기사 읽기 →소프트웨어 테스트부하 테스트와 스트레스 테스트 비교: 차이점, 측정항목 및 k6 예
부하 테스트와 스트레스 테스트 비교 설명: 각각의 증명, 스파이크 및 흡수 테스트, 중요한 측정항목, 평균이 잘못된 이유, k6 예 및 테스트 계획 방법.
기사 읽기 →소프트웨어 테스트테스트 케이스와 테스트 시나리오: 주요 차이점, 예 및 각각의 사용 시기
테스트 케이스와 테스트 시나리오 설명: 명확한 정의, 병렬 테이블, 시나리오에서 케이스로 가져온 하나의 비밀번호 재설정 기능, 템플릿 및 각 사용 시기.
기사 읽기 →데이터베이스 및 SQLSQL 쿼리 최적화: 타이밍에 따라 실행 계획을 읽고 느린 쿼리를 수정합니다.
백만 개의 행에서 테스트된 SQL 쿼리 최적화: 실행 계획 읽기, 올바른 인덱스 추가, 분할할 수 없는 필터 수정, 복합 인덱스 및 키 세트 페이지 매김 사용.
기사 읽기 →데이터베이스 및 SQLSQL UNION 대 UNION ALL: 테스트된 차이점, 예 및 성능
SQL UNION과 UNION ALL은 우리가 실행한 쿼리(중복, 둘 다 따르는 규칙, 실제 데이터 버그, 측정된 성능, INTERSECT 및 EXCEPT, 각각의 사용 시기)를 설명합니다.
기사 읽기 →소프트웨어 개발JavaScript Fetch API 튜토리얼: GET, POST, 오류 처리 및 시간 초과
로컬 서버에 대해 테스트된 JavaScript Fetch API 튜토리얼: GET 및 POST, 404가 발생하지 않는 이유, 재사용 가능한 도우미, 쿼리 문자열, 시간 초과, CORS 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 파일 처리: 읽기, 쓰기, CSV, JSON 및 pathlib 예제 포함
우리가 실행한 코드로 설명된 Python 파일 처리: 개방형 모드, 대용량 파일 읽기, CSV, JSON, pathlib, 바이너리 파일, 안전한 쓰기, 오류 처리 및 일반적인 실수.
기사 읽기 →소프트웨어 개발Python 클래스 및 객체: 실제 예제가 포함된 OOP 튜토리얼
우리가 실행한 코드로 설명된 Python 클래스와 객체: __init__, 메소드, 클래스 대 인스턴스 속성, 상속, 속성, 던더 메소드, 데이터 클래스 및 일반적인 실수.
기사 읽기 →인공지능대규모 언어 모델이란 무엇입니까? LLM의 작동 방식, 과대광고 없이 설명
대규모 언어 모델이란 무엇입니까? LLM은 토큰, 임베딩, 주의, 훈련, 온도 및 컨텍스트 창, 작은 다음 단어 데모 및 실제 한계 등 일반 언어로 설명됩니다.
기사 읽기 →DevOps초보자를 위한 Linux 명령: 예제가 포함된 필수 터미널 가이드
탐색, 파일, 로그 보기, grep, 파이프, 권한, 프로세스 및 아카이브 등 작업별로 그룹화된 초보자를 위한 Linux 명령과 실용적인 로그 분석 예제가 포함되어 있습니다.
기사 읽기 →테스트 자동화셀레늄 대 극작가: 주요 차이점, 코드 비교 및 선택할 항목
Selenium과 Playwright 비교: 아키텍처, 대기, 브라우저 및 언어 지원, 디버깅, 두 도구 모두에서 동일한 테스트, 마이그레이션 조언 및 선택 방법.
기사 읽기 →소프트웨어 테스트등가 분할: 실제 예제를 통해 설명되는 테스트 설계 기법
등가 분할 설명: 유효한 파티션과 유효하지 않은 파티션을 찾는 방법, 연령, 비밀번호 및 쿠폰에 대한 작업 예제, 실행한 테스트, 경계와 쌍을 이루는 이유.
기사 읽기 →소프트웨어 테스트소프트웨어 테스팅의 심각도와 우선순위: 차이점, 매트릭스 및 실제 사례
소프트웨어 테스팅의 심각도와 우선순위에 대한 설명: 명확한 정의, 예제가 포함된 4방향 매트릭스, 수준 척도, 각 항목을 설정하는 사람 및 버그 분류 실행 방법.
기사 읽기 →데이터베이스 및 SQLSQL 하위 쿼리 자습서: 유형, 상관 하위 쿼리 및 EXISTS(예제 포함)
스칼라, IN, FROM 및 SELECT 하위 쿼리, 상관 하위 쿼리, EXISTS, NOT IN NULL 트랩 및 하위 쿼리 대 JOIN 대 CTE 등 우리가 실행한 쿼리가 포함된 SQL 하위 쿼리 자습서입니다.
기사 읽기 →데이터베이스 및 SQLSQL 트랜잭션 및 ACID 설명: COMMIT, ROLLBACK 및 격리 수준
COMMIT, ROLLBACK, 저장점, 잠금, 격리 수준, 더티 읽기, 교착 상태 및 모범 사례 등 우리가 실행한 은행 이체를 통해 SQL 트랜잭션 및 ACID를 설명했습니다.
기사 읽기 →소프트웨어 개발Git merge vs rebase: 차이점, 예제, 언제 무엇을 쓸까
Git merge vs rebase를 실제 로그 출력, 비교표, rebase의 황금률, 안전한 팀 워크플로로 설명합니다.
기사 읽기 →소프트웨어 개발파이썬 리스트 컴프리헨션: 문법, 예제, 피해야 할 때
파이썬 리스트 컴프리헨션 설명: 문법, 필터링, if-else, 중첩 반복문, 실제 측정 시간, 그리고 일반 for 반복문이 더 나은 경우.
기사 읽기 →데이터베이스 및 SQL예제로 쉽게 배우는 SQL JOIN (Inner, Left, Right, Full)
샘플 테이블과 쿼리로 SQL JOIN을 단계별로 이해하세요. INNER, LEFT, RIGHT, FULL, CROSS, SELF와 흔한 실수, 성능 팁까지 정리했습니다.
기사 읽기 →