본문 바로가기
Jetbrains

PhpStorm에서 Pest PHP로 TDD 워크플로 끝내기: 2026년형 실전 가이드

by CodeByJin 2026. 3. 29.
반응형

개발자라면 누구나 한 번쯤 "테스트 코드 짜는 게 코드 짜는 것보다 더 오래 걸리는데, 이게 맞나?"라는 고민을 해보셨을 거예요. 특히 PHPUnit의 장황한 클래스 구조를 보고 있으면 시작도 하기 전에 힘이 빠지기도 하죠.

하지만 2026년 현재, PHP 생태계에서 Pest는 단순한 도구를 넘어 하나의 표준으로 자리 잡았습니다. 솔직히 말씀드리면, 저도 처음엔 Pest가 '그냥 예쁜 PHPUnit'인 줄 알았는데, PhpStorm과 제대로 결합했을 때 나오는 속도감은 차원이 다릅니다. 오늘은 군더더기 다 빼고, 실제 현업에서 바로 써먹을 수 있는 TDD 워크플로를 정리해 드릴게요.

[핵심 요약]
*
도구: PHP 8.2+ 이상, PhpStorm 2024.x+, Pest 3.0+ 조합 추천.
* 핵심: 클래스 없이 작성하는 간결한 문법과 IDE의 시각적 피드백 활용.
* 효과: 코드 변경 시 사이드 이펙트 0%에 도전하는 안정성 확보.

  • 준비물: PHP 인터프리터와 Pest 플러그인 세팅
  • 실전! Red-Green-Refactor 3단계 루틴
  • 자주 묻는 질문: Pest vs PHPUnit, 성능 차이는?
  • 디버깅과 커버리지로 코드 품질 굳히기

시작하기 전, 이것만은 꼭 체크하세요

무작정 코드부터 치기보다는 환경이 잘 잡혀 있는지 확인하는 게 우선입니다. 이 단계를 대충 넘기면 나중에 테스트가 안 돌아가서 삽질할 확률이 99%거든요.

항목권장 사양 / 설정비고
PHP Version8.3 또는 8.4 (LTS)최신 문법 지원 확인
IDEPhpStorm (Pest 플러그인 설치 필수)설정 창에서 'Pest' 검색 후 활성화
ExtensionXdebug 3.3 이상테스트 중단점(Breakpoint) 활용용
Composerpestphp/pest: ^3.02026년 기준 최신 안정 버전

 
표를 보시면 아시겠지만, 사실 PHP 버전과 IDE 플러그인만 제대로 맞춰도 절반은 성공입니다. PhpStorm 설정(Settings -> Languages & Frameworks -> PHP -> Test Frameworks)에서 Pest가 정상적으로 인식되는지 꼭 확인하세요.

무조건 실패부터! Red 단계의 미학

TDD의 첫 단추는 '실패하는 테스트'를 만드는 겁니다. 개인적으로 이 단계가 가장 중요하다고 생각하는데, 구현해야 할 기능의 '명세서'를 미리 작성하는 과정이기 때문입니다.

예를 들어, 간단한 포인트 계산 로직을 만든다고 가정해 볼게요. 클래스를 만들기 전에 tests/Unit/PointCalculatorTest.php 파일부터 만듭니다.
 


test('10,000원 결제 시 1% 포인트가 적립된다', function () {
    $calculator = new App\Services\PointCalculator();
    $points = $calculator->calculate(10000);
    expect($points)->toBe(100);
});

이 상태에서 PhpStorm의 재생 버튼(녹색 화살표)을 누르면 당연히 빨간색 에러가 뜹니다. Class PointCalculator not found. 이게 정상입니다. 이제 우리는 무엇을 만들어야 할지 명확히 알게 된 거죠.

가장 빠르게 통과시키기 (Green)

이제 빨간 막대를 초록색으로 바꿀 차례입니다. 여기서 주의할 점은 '완벽한 코드'를 짜려고 노력하지 마세요. 일단 테스트가 통과할 만큼의 최소한의 코드만 작성합니다.


namespace App\Services;
class PointCalculator {
    public function calculate(int $amount): int {
        return 100; // 일단 100을 반환해서 테스트만 통과시킴
    }
}

다시 테스트를 돌리면 초록색 체크 표시가 뜹니다. "이게 뭐야?" 싶겠지만, 이게 TDD의 핵심인 '심리적 안정감'을 주는 단계입니다.

많이 궁금해하시는 질문

Q1. 기존 PHPUnit 테스트와 섞어서 써도 되나요?

네, 전혀 문제없습니다! Pest는 PHPUnit 위에서 돌아가기 때문에 한 프로젝트 안에 두 형식이 공존해도 PhpStorm은 알아서 둘 다 잘 실행해 줍니다. 모르면 손해 보는 팁인데, 기존 PHPUnit 클래스를 Pest의 uses() 기능을 통해 점진적으로 이관하는 것도 좋은 전략입니다.

Q2. Pest를 쓰면 테스트 속도가 느려지지 않나요?

오히려 반대입니다. Pest 3.0부터는 병렬 실행(Parallel) 최적화가 굉장히 잘 되어 있어서, 대규모 프로젝트일수록 PHPUnit보다 체감 속도가 빠릅니다. 특히 --parallel 옵션을 주면 CPU 코어를 모두 활용해 순식간에 끝납니다.

진짜 실력은 여기서 나옵니다 (Refactor)

초록색 불이 들어왔다면, 이제 하드코딩했던 부분을 실제 로직으로 바꿉니다. 사실 여기서부터가 진짜 핵심입니다. 로직을 수정해도 이미 테스트가 우리를 지켜주고 있기 때문에 두려움 없이 코드를 고칠 수 있거든요.


public function calculate(int $amount): int {
    return (int)($amount * 0.01);
}

로직을 고친 후 다시 테스트를 돌려봅니다. 여전히 초록색인가요? 그럼 성공입니다. 이제 5,000원일 때, 0원일 때 같은 다양한 케이스를 추가하며 코드를 단단하게 다듬어 가세요.

2026년형 생산성 극대화 꿀팁

PhpStorm을 쓰면서 이 기능들을 안 쓰면 정말 아깝습니다.

  • Run with Coverage: 내가 짠 코드 중 어느 줄이 테스트 안 됐는지 IDE 편집기 옆면에 색상(빨강/초록)으로 바로 보여줍니다. 100%에 집착하진 마시되, 핵심 로직이 빨간색이면 반성해야 합니다.
  • Continuous Testing: 설정에서 'Toggle auto-test'를 켜보세요. 코드를 수정하고 저장할 필요도 없이 IDE가 알아서 테스트를 돌려 결과를 실시간으로 알려줍니다. 마치 옆에서 사수가 피드백을 주는 느낌이에요.
  • Dataset 활용: with() 메서드를 사용하면 하나의 테스트 케이스에 여러 데이터를 넣어서 돌릴 수 있습니다. "대형마트 오픈런"처럼 몰려드는 데이터를 처리할 때 아주 유용하죠.

결국 중요한 건 도구가 아닙니다

Pest와 PhpStorm은 우리가 더 좋은 설계를 고민할 시간을 벌어주는 도구일 뿐입니다. 결국 핵심은 속도가 아니라 정확도, 그리고 나중에 이 코드를 볼 동료(혹은 미래의 나)에 대한 배려라고 생각합니다.

처음에는 test(...) 한 줄 적는 게 어색할 수 있지만, 딱 일주일만 버텨보세요. 어느새 테스트 코드 없이는 불안해서 비즈니스 로직을 못 짜는 자신을 발견하게 될 겁니다. 여러분의 즐거운 코딩 생활을 응원합니다!

함께 읽으면 좋은 글

CLion vcpkg 연동 가이드: C++ 외부 라이브러리 설치부터 CMake 설정까지 완벽 정리

C++ 개발을 시작할 때 사실 이 부분이 가장 번거로우시죠? 코드 한 줄 짜는 것보다 라이브러리 하나 불러오다가 하루가 다 가는 경우가 허다합니다. 특히 윈도우 환경은 패키지 관리가 까다롭기

byteandbit.tistory.com

반응형