- 코드 적용 범위는 테스트 중에 실행되는 코드의 양을 측정합니다.
- 분기 적용 범위는 회선 적용 범위보다 엄격하고 더 유용합니다.
- 테스트에서 어설션이 없는 제품군은 여전히 100% 적용 범위에 도달했습니다.
- 품질 증명이 아닌 테스트되지 않은 코드를 찾으려면 커버리지를 사용하세요.
팀은 95%의 코드 적용 범위를 자랑스럽게 보고한 다음 “커버된” 줄에 버그를 제공합니다. 이것은 모순이 아닙니다. Coverage는 하나의 좁은 질문에 답합니다. 테스트에서 이 코드를 실행했습니까? 결과를 확인했는지 여부는 완전히 다른 질문입니다.
우리는 Coverage.py 7.17 및 pytest 9.2와 함께 Python을 사용했습니다. 아래의 모든 숫자와 보고서는 우리가 직접 실행한 것입니다. 아이디어는 모든 언어에 적용됩니다.
코드 커버리지란 무엇입니까?
코드 적용 범위는 자동화된 테스트가 실행되는 동안 실행되는 코드의 비율입니다. 도구는 실행된 라인과 선택적으로 어떤 분기가 실행되었는지 기록한 다음 누락된 내용을 보고합니다.
역방향으로 가장 유용합니다. 특정 지역의 낮은 적용 범위는 테스트가 해당 지역을 실행하지 않는다는 것을 확실하게 알려줍니다. 높은 적용 범위는 훨씬 적은 것을 알려줍니다.
보장 유형
| 유형 | 질문에 대한 답변 |
|---|---|
| 기능 | 각 함수가 한 번 이상 호출되었나요? |
| 라인(문) | 각 라인이 최소한 한 번 이상 실행되었습니까? |
| 지점 | 각각의 if은 참과 거짓이라는 양방향으로 진행되었습니까? |
| 상태 | 결합된 조건(a and b)의 각 부분이 두 값을 모두 취했습니까? |
| MC/DC | 각 조건이 독립적으로 결과를 바꾸었나요? 안전이 중요한 소프트웨어에 사용됩니다. |
각 레벨은 그 위의 레벨보다 더 엄격합니다. 대부분의 팀은 회선 및 지점 범위를 추적합니다. 조건 적용 범위와 MC/DC는 툴링 지원이 전문화된 항공 및 자동차 표준에 나타납니다.
우리가 측정한 코드
def shipping_fee(total, is_member, express=False):
if total < 0:
raise ValueError("total cannot be negative")
fee = 0 if total >= 1000 else 50
if is_member:
fee = max(fee - 25, 0)
if express:
fee += 100
return fee
첫 번째 테스트 파일에는 두 가지 테스트가 있었습니다.
def test_regular_order():
assert shipping_fee(500, False) == 50
def test_member_express():
assert shipping_fee(500, True, express=True) == 125
분기 측정을 켠 상태에서 실행했습니다.
coverage run --branch -m pytest test_shipping.py
coverage report -m
보고서 읽기
Name Stmts Miss Branch BrPart Cover Missing
---------------------------------------------------------
shipping.py 9 1 6 1 87% 3
- Stmts 9, Miss 1: 실행 가능한 문 9개 중 하나는 실행되지 않았습니다.
- 분기 6, Br파트 1: 세 가지
if결정은 여섯 가지 가능한 결과를 제공합니다. 단 하나의 결정은 한 방향으로만 진행되었습니다. - 3번 누락: 3번째 줄인
raise ValueError는 실행되지 않았습니다. 마이너스 합계를 통과한 테스트가 없습니다.
수정은 오류 경로에 대한 테스트입니다. 또한 대량 주문에 대한 테스트도 추가했습니다.
def test_free_over_1000():
assert shipping_fee(1000, False) == 0
def test_negative_total():
with pytest.raises(ValueError):
shipping_fee(-1, False)
두 파일 모두 보고서에 100%가 표시되었으며 누락된 줄이나 부분 분기가 없었습니다. 오류 경로는 고전적인 간격 범위 찾기이므로 등가 분할과 같은 기술로 설계된 유효하지 않은 입력에 대한 테스트가 오류 경로와 매우 잘 어울립니다.
보고서가 숨긴 것
첫 번째 보고서를 다시 살펴보세요. 3호선만 빠졌다고 하더군요. 그러나 처음 두 테스트에서는 모두 총 500개를 사용했기 때문에 1000개 이상 주문에 대한 무료 배송 규칙은 테스트되지 않았으며 보고서에서 이를 표시하지 않았습니다.
그 이유는 fee = 0 if total >= 1000 else 50이 한 줄에 있기 때문입니다. Coverage.py는 줄 사이의 분기를 측정하므로 단일 줄 내의 조건식은 하나의 실행된 문으로 계산됩니다. 해당 규칙에 >= 대신 >와 같은 버그가 있는 경우 첫 번째 모음은 힌트 없이 여전히 87%를 표시했을 것입니다. 경계 값 분석에 설명된 대로 경계 자체에 대한 테스트를 통해 이를 포착할 수 있습니다.
별도의 확인 없이 100% 보장
다음으로, 우리는 모든 경로를 호출하지만 아무것도 주장하지 않는 의도적으로 잘못된 테스트를 작성했습니다.
def test_runs_everything_but_checks_nothing():
shipping_fee(500, True, express=True)
shipping_fee(1000, False)
shipping_fee(500, False)
try:
shipping_fee(-1, False)
except ValueError:
pass
shipping.py 9 0 6 0 100%
회선 및 지점 범위 100%에 도달했습니다. 이 함수는 어떤 숫자든 반환할 수 있으며 이 테스트는 여전히 통과할 것입니다. 이것이 적용 범위의 핵심 한계입니다. 검증이 아닌 실행을 측정합니다.
팁: 끌어오기 요청을 검토할 때 적용 범위 변경뿐만 아니라 어설션도 읽어보세요. 의미 있는 주장 없이 적용 범위를 추가하는 테스트는 잘못된 신뢰도만 추가합니다.
테스트가 실제로 버그를 잡는지 여부를 측정하려면 돌연변이 테스트를 사용하세요. Python용 mutmut, Java용 PIT 또는 JavaScript용 Stryker와 같은 도구는 >=를 >으로 바꾸는 등 코드를 약간 변경하고 테스트가 실패하는지 확인합니다. 우리의 비주장 테스트는 모든 돌연변이가 살아남도록 해줄 것입니다.
어떤 목표를 세워야 할까
보편적으로 정확한 숫자는 없습니다. 실용적인 지침:
- 100%를 쫓지 마세요. 마지막 몇 퍼센트는 종종 사소한 코드를 테스트하거나 라인만 터치하는 테스트를 작성하는 것을 의미합니다.
- 많은 팀이 전체적으로 약 70~85%를 목표로 하며 핵심 비즈니스 로직에 대한 기대치가 더 높습니다.
- 숫자가 아닌 추세를 살펴보십시오. 각 릴리스마다 감소하는 적용 범위는 경고 신호입니다.
- 이전 코드를 한꺼번에 강제 적용하는 대신 풀 요청에 새 코드 적용을 요구합니다.
- 생성된 코드와 같이 명확한 규칙을 사용하여 중요하지 않은 것은 제외합니다.
Goodhart의 법칙이 적용됩니다. 측정값이 목표가 되면 더 이상 좋은 측정값이 아닙니다. 하드 타겟은 no-assert 예시와 같은 테스트를 권장합니다.
언어별 도구
| 언어 | 일반적인 도구 |
|---|---|
| 파이썬 | Coverage.py, pytest-cov |
| 자바스크립트/타입스크립트 | Jest 및 Vitest에 내장된 이스탄불(nyc) |
| 자바 | 자코코 |
| .NET | 이불 |
| 이동 | 시험해 보세요 |
| 보고 | Codecov, SonarQube, 작업복 |
CI의 적용 범위
CI 파이프라인의 일부로 적용 범위를 실행하고 보고서를 게시하여 검토자가 어떤 새로운 라인이 테스트되지 않았는지 확인할 수 있습니다. Coverage.py를 사용하면 coverage report --fail-under=80가 임계값 미만의 빌드에 실패합니다. 임계값을 적당한 수준으로 유지하고 이를 새 코드에 대한 규칙과 결합하면 하나의 대규모 레거시 파일이 모든 변경 사항을 차단하지 않습니다.
적용 범위 너머: 더 나은 질문을 물어보세요
- 테스트가 위험하고 자주 변경되는 코드 부분을 다루나요?
- 행복한 경로뿐만 아니라 경계와 오류 경로도 테스트됩니까?
- 이 줄이 틀리면 테스트가 실패할까요?
- 테스트가 모든 변경 사항에 대해 실행될 수 있을 만큼 빠르고 안정적입니까?
이는 모든 테스트 전략에 속합니다. 적용 범위는 첫 번째 답변에만 도움이 됩니다.
코드 제외 및 HTML 보고서 읽기
디버그 도우미나 스크립트가 직접 시작될 때만 실행되는 블록과 같은 일부 코드는 직접 테스트할 가치가 없습니다. Coverage.py를 사용하면 주석이 있는 줄을 제외할 수 있습니다.
if __name__ == "__main__": # pragma: no cover
main()
예를 들어 pyproject.toml과 같이 구성에서 측정할 제외 항목과 소스 폴더를 설정할 수도 있습니다.
[tool.coverage.run]
branch = true
source = ["shop"]
[tool.coverage.report]
show_missing = true
exclude_also = ["if TYPE_CHECKING:"]
제외를 드물게 사용하고 코드처럼 검토하세요. 각각은 일부 라인을 절대 확인하지 않겠다는 결정입니다. 숫자를 늘리기 위해 테스트하기 어려운 오류 처리기를 제외하면 목적이 무산됩니다.
일상적인 작업에서는 HTML 보고서가 터미널 테이블보다 더 유용합니다. coverage html을 실행하고 htmlcov/index.html를 엽니다. 각 파일은 실행된 줄이 녹색으로, 누락된 줄이 빨간색으로, 부분 분기가 노란색으로 표시되므로 if이 다른 경로를 사용하지 않은 것을 한 눈에 알 수 있습니다. 많은 편집자들은 여백에 적용 범위를 표시할 수도 있는데, 이는 코드를 작성한 이후가 아니라 코드를 작성하는 동안 공백을 눈에 띄게 만듭니다.
리팩토링 전 적용 범위
Coverage는 리팩토링 전 안전 점검이기도 합니다. 모듈을 재구성하려는 경우 먼저 해당 보고서를 살펴보십시오. 빨간색 영역에는 동작 변경 시 경고하는 테스트가 없으므로 시작하기 전에 현재 동작을 캡처하는 특성화 테스트를 추가하세요. 이러한 방식을 사용하면 적용 범위가 더 이상 목표가 되지 않고 실용적인 계획 도구가 됩니다.
동일한 보고서는 버그가 프로덕션 환경으로 빠져나갈 때 도움이 됩니다. 버그가 발생한 줄을 찾아 테스트가 실행되었는지 확인하세요. 그렇지 않다면, 메울 가치가 있는 격차를 발견한 것입니다. 테스트가 실행되었다면 문제는 약한 주장이며, 이는 우리의 no-assert 예제에서 보여준 상황과 정확히 같습니다. 두 답변 모두 제품군을 개선하는 방법을 알려줍니다.
마무리
코드 적용 범위는 등급이 아니라 손전등입니다. 분기 적용 범위를 사용하여 테스트가 건드리지 않는 코드, 특히 오류 처리를 찾은 다음 실제 어설션을 작성하는 테스트를 작성하세요. 우리 실행의 한 가지 결과를 기억한다면 다음과 같이 하십시오. 아무것도 확인하지 않은 테스트에서 100% 적용 범위에 도달했습니다.
자주 묻는 질문
테스트에서 코드 적용 범위는 무엇입니까?
라인, 분기 또는 조건으로 측정되는 자동화된 테스트가 실행되는 동안 실행된 코드의 비율입니다. 검증 여부가 아니라 테스트 내용이 무엇인지 보여줍니다.
라인 커버리지와 브랜치 커버리지의 차이점은 무엇입니까?
라인 커버리지는 각 라인이 실행되었는지 확인합니다. 지점 적용 범위는 각 결정이 양방향으로 진행되었는지 확인합니다. 분기 커버리지는 회선 커버리지가 놓친 테스트되지 않은 경로를 찾습니다.
100% 코드 적용 범위가 좋은가요?
그 자체로는 아닙니다. 우리 테스트에서는 어설션이 없는 스위트가 100%에 도달했습니다. 완벽한 숫자보다는 중요한 코드에 대한 의미 있는 테스트를 목표로 하세요.
좋은 코드 적용률은 얼마입니까?
많은 팀이 전체적으로 대략 70~85%를 목표로 하고 있으며 중요한 논리에 대해 더 많은 것을 다루고 있습니다. 주장의 추세와 품질은 정확한 숫자보다 더 중요합니다.
돌연변이 테스트는 적용 범위와 어떻게 다릅니까?
돌연변이 테스트는 코드를 약간 변경하고 테스트가 실패하는지 확인합니다. 테스트에서 테스트가 수행할 수 없는 버그를 감지하는지 여부를 측정합니다.
계속 학습하세요
테스트, 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와 흔한 실수, 성능 팁까지 정리했습니다.
기사 읽기 →