# 소프트웨어 테스트

[원문](https://www.linkymeadow.com/w/ac7642/)

마지막 수정: 2026-10-05 21:30 (KST)

테스트의 범위와 설계 원칙부터 언어별 실행 도구, 통합·브라우저·계약·부하 테스트까지 모았습니다. Node.js·Java·Python은 실행·테스트 더블·비동기 처리·커버리지를 중심으로 살펴보고 다른 주요 언어의 공식 자료도 함께 연결합니다.

## 테스트의 범위와 설계

- [The Practical Test Pyramid — Ham Vocke](https://martinfowler.com/articles/practical-test-pyramid.html)

  단위·통합·계약·UI 테스트의 범위와 역할, 테스트 더블과 자동화 구성의 균형을 설명합니다.
- [Test Double — Martin Fowler](https://martinfowler.com/bliki/TestDouble.html)

  더미·페이크·스텁·스파이·목을 구분하고 각각 어떤 의존성을 대체하는지 설명합니다.
- [Test Driven Development — Martin Fowler](https://martinfowler.com/bliki/TestDrivenDevelopment.html)

  실패하는 테스트 작성, 동작 구현, 리팩터링으로 이어지는 TDD의 반복을 설명합니다.
- [Unit testing best practices — Microsoft](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices)

  격리·반복 가능성·가독성과 동작 중심 검증을 다루며 높은 커버리지가 품질을 보장하지 않는 이유를 설명합니다.

## Node.js와 JavaScript 및 TypeScript

- [Test runner — Node.js](https://nodejs.org/api/test.html)

  내장 node:test의 테스트 실행, 비동기 테스트·훅·격리·모킹과 커버리지 기능을 설명합니다.
- [Getting Started — Vitest](https://vitest.dev/guide/)

  JavaScript·TypeScript 테스트 작성과 Vite 설정 연동, 테스트 실행의 시작점을 제공합니다.
- [Getting Started — Jest](https://jestjs.io/docs/getting-started)

  테스트·단언 작성과 실행, TypeScript 등 프로젝트 환경에 맞춘 설정을 설명합니다.
- [Mocking — Vitest](https://vitest.dev/guide/mocking)

  함수·모듈·시간·요청 등 의존성을 대체하고 테스트 사이의 모킹 상태를 정리하는 방법을 다룹니다.
- [Coverage — Vitest](https://vitest.dev/guide/coverage)

  V8·Istanbul 기반 측정과 보고서·대상 파일 설정 등 커버리지 수집 방법을 설명합니다.
- [Guiding Principles — Testing Library](https://testing-library.com/docs/guiding-principles/)

  사용자가 화면과 상호작용하는 방식을 중심으로 UI 테스트를 작성하는 원칙을 설명합니다.

## Java와 Kotlin

- [JUnit User Guide](https://docs.junit.org/current/overview.html)

  JUnit Platform·Jupiter의 역할과 테스트 작성·실행·확장 문서로 연결합니다.
- [Mockito](https://site.mockito.org/)

  Java 테스트에서 의존 객체의 동작을 설정하고 호출을 검증하는 모킹 프레임워크의 공식 안내입니다.
- [Testing — Spring Boot](https://docs.spring.io/spring-boot/reference/testing/index.html)

  Spring 애플리케이션을 검증하는 테스트 지원 모듈과 자동 설정을 안내합니다.
- [JaCoCo](https://www.jacoco.org/jacoco/)

  Java 바이트코드 실행에 기반한 코드 커버리지 수집과 빌드 도구 연동 자료를 제공합니다.
- [Test Java code using Kotlin and JUnit — Kotlin](https://kotlinlang.org/docs/jvm-test-using-junit.html)

  Java와 Kotlin이 함께 있는 프로젝트에서 JUnit 테스트를 구성하고 Maven·Gradle로 실행하는 방법을 설명합니다.

## Python

- [unittest — Python](https://docs.python.org/3/library/unittest.html)

  표준 라이브러리의 테스트 케이스·단언·준비와 정리·테스트 탐색 기능을 설명합니다.
- [pytest documentation](https://docs.pytest.org/en/stable/)

  함수 기반 테스트와 단언, 매개변수화·플러그인·테스트 실행 문서로 연결합니다.
- [How to use fixtures — pytest](https://docs.pytest.org/en/stable/how-to/fixtures.html)

  테스트 자원의 준비·정리, 재사용 범위와 의존 관계를 fixture로 관리하는 방법을 설명합니다.
- [unittest.mock — Python](https://docs.python.org/3/library/unittest.mock.html)

  Mock·patch·AsyncMock 등으로 외부 의존성과 비동기 호출을 대체하는 방법을 설명합니다.
- [pytest-asyncio](https://pytest-asyncio.readthedocs.io/en/stable/)

  pytest에서 asyncio 코루틴을 테스트하고 이벤트 루프와 비동기 fixture를 구성하는 플러그인입니다.
- [Hypothesis](https://hypothesis.readthedocs.io/en/latest/)

  입력 생성과 실패 예제 축소를 이용해 코드가 만족해야 할 속성을 검증하는 Python 도구입니다.
- [Coverage.py](https://coverage.readthedocs.io/)

  Python 코드의 실행 구문·분기를 측정하고 미실행 영역을 보고서로 살펴보는 도구입니다.

## Go와 Rust

- [Add a test — Go](https://go.dev/doc/tutorial/add-a-test)

  testing 패키지와 go test를 이용한 기본 테스트 작성·실행을 설명합니다.
- [Getting started with fuzzing — Go](https://go.dev/doc/tutorial/fuzz)

  퍼즈 입력 생성과 실패 입력의 재현을 통해 예외적인 입력을 탐색하는 공식 실습입니다.
- [Writing Automated Tests — The Rust Programming Language](https://doc.rust-lang.org/book/ch11-00-testing.html)

  Rust의 테스트 속성·단언과 cargo test의 기본 실행 흐름을 설명합니다.
- [Test Organization — The Rust Programming Language](https://doc.rust-lang.org/book/ch11-03-test-organization.html)

  모듈 내부 단위 테스트와 공개 API를 사용하는 통합 테스트의 파일·디렉터리 구성을 설명합니다.

## C#과 .NET

- [Testing in .NET — Microsoft](https://learn.microsoft.com/en-us/dotnet/core/testing/)

  테스트 종류와 프레임워크·실행 플랫폼, dotnet test의 역할을 정리합니다.
- [Write tests with MSTest — Microsoft](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-mstest-writing-tests)

  테스트 식별·단언·데이터 기반 검증과 실행 생명주기를 구성하는 방법을 설명합니다.
- [Unit testing C# with xUnit — Microsoft](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-csharp-with-xunit)

  애플리케이션과 테스트 프로젝트를 나누고 xUnit 테스트를 실행하는 공식 실습입니다.
- [NUnit Documentation](https://docs.nunit.org/articles/nunit/intro.html)

  NUnit의 테스트 작성과 실행 도구·확장 기능을 찾아볼 수 있는 공식 문서입니다.

## C와 C++

- [GoogleTest Primer](https://google.github.io/googletest/primer.html)

  C++의 단언·테스트 케이스·fixture와 독립적으로 반복 가능한 테스트의 작성 방법을 설명합니다.
- [Unity — Throw The Switch](https://www.throwtheswitch.org/unity)

  C 코드와 임베디드 환경에서 단위 테스트를 작성하는 프레임워크와 관련 도구를 소개합니다.

## Ruby와 PHP 및 Swift

- [RSpec](https://rspec.info/)

  Ruby의 예제 기반 명세, 기대값과 테스트 더블을 다루는 테스트 도구 모음의 공식 사이트입니다.
- [Testing Rails Applications — Ruby on Rails](https://guides.rubyonrails.org/testing.html)

  Minitest 기반 모델·요청·통합·시스템 테스트와 fixture·데이터베이스 격리를 다룹니다.
- [PHPUnit Manual](https://docs.phpunit.de/en/12.5/)

  PHP의 테스트 케이스·fixture·테스트 더블·코드 커버리지와 실행 설정을 설명합니다.
- [Writing Tests — Pest](https://pestphp.com/docs/writing-tests)

  PHP에서 test·it와 기대값 API를 이용해 테스트를 작성하는 방법을 설명합니다.
- [Swift Core Libraries — Swift.org](https://www.swift.org/documentation/core-libraries/)

  Swift Testing과 XCTest의 역할 및 관련 공식 문서를 안내합니다.

## 통합 테스트와 계약 테스트

- [Getting Started — Testcontainers](https://testcontainers.com/getting-started/)

  테스트 중 데이터베이스 등 컨테이너 의존성을 실행하는 접근과 Java·Node.js·Python·Go·.NET 등 언어별 구현으로 연결합니다.
- [Pact Documentation](https://docs.pact.io/)

  소비자와 제공자 사이의 요청·응답 계약을 검증하는 방법과 언어별 도구를 안내합니다.

## 브라우저 E2E와 부하 테스트

- [Supported languages — Playwright](https://playwright.dev/docs/languages)

  Node.js의 Playwright Test, Python의 pytest 연동, Java·.NET의 테스트 프레임워크 연동 차이를 설명합니다.
- [Why Cypress? — Cypress](https://docs.cypress.io/app/get-started/why-cypress)

  브라우저 E2E와 컴포넌트 테스트의 실행 방식 및 개발 중 디버깅 기능을 설명합니다.
- [Grafana k6 documentation](https://grafana.com/docs/k6/latest/)

  가상 사용자·시나리오·지표·임계값을 이용해 서비스의 부하와 성능을 검증하는 방법을 안내합니다.

## 관련 문서

- [코드 편집·API·테스트 도구](https://www.linkymeadow.com/w/834c7e/)
- [Git·코드 협업·CI/CD](https://www.linkymeadow.com/w/a35bcc/)
- [API 보안](https://www.linkymeadow.com/w/63f1cf/)
- [소프트웨어 설계와 아키텍처](https://www.linkymeadow.com/w/a6c95f/)
- [백엔드 개발 학습 자료](https://www.linkymeadow.com/w/e48b27/)
