WordPress 플러그인을 위한 10가지 PHP 테스트 도구
게시 됨: 2022-08-05버그가 없는 소프트웨어는 없습니다. 이것은 모든 프로그래밍 언어와 모든 응용 프로그램에 적용되는 공리입니다.
이러한 버그가 프로덕션 환경의 웹 사이트에 배포되면 다양한 심각도의 부정적인 결과를 겪을 수 있습니다. 다음은 성가신 것부터 경제적으로 해로운 것까지의 몇 가지 예입니다.
- 약함: 사용자가 깨진 링크를 클릭할 수 없습니다.
- 심각: 사용자가 메시지를 작성한 후에만 발견되는 문의 양식의 "제출" 버튼이 작동하지 않습니다.
- 심각: 지불 게이트웨이가 제대로 구성되지 않아 사용자가 전자 상거래 상점에서 제품을 구매할 수 없도록 하여 사이트를 이탈합니다.
가능한 모든 각도에서 애플리케이션 테스트의 모든 측면을 처리하는 데 단일 도구로는 충분하지 않습니다. 실제로 버그를 찾는 것 외에도 다음과 같은 애플리케이션의 다른 기능을 검증하기 위해 추가 테스트를 실행하는 것이 중요합니다.
- 접근성 및 사용성
- 허용 가능한 성능
- 트래픽 및 부하 처리
이 기사에서는 WordPress 플러그인에서 PHP 코드를 테스트하기 위한 스택을 구성하는 데 도움이 될 수 있는 오픈 소스 커뮤니티에서 만든 10가지 도구를 검토합니다. 이러한 도구 중 일부는 PHP 코드 테스트를 위해 특별히 설계되었습니다. 다른 것들은 WordPress 코드를 테스트하기 위한 것입니다. 테스트에 유용한 몇 가지 일반적인 기능을 처리하기 위해 몇 가지 다른 도구가 만들어졌습니다.
1. 데브킨스타
DevKinsta는 WordPress 사이트용 로컬 개발 제품군입니다. 몇 가지 기본 세부 정보를 제공하기만 하면 WordPress 사이트의 로컬 인스턴스가 즉시 설치되고 이메일 받은 편지함, 데이터베이스 관리자 및 더 쉬운 문제 해결을 위한 로깅과 같은 몇 가지 유용한 개발 도구가 번들로 제공됩니다.
DevKinsta는 일반적으로 개발자와 디자이너가 WordPress 테마 및 플러그인을 만들 때 사용합니다. 그러나 통합 및 기능 테스트를 실행하기 위한 로컬 웹 서버로도 사용할 수 있습니다. 이는 응답 내용과 헤더가 올바른지 확인하는 데 도움이 되는 HTTP 도구와 함께 수행됩니다.
DevKinsta의 주요 기능은 다음과 같습니다.
- 새로운 WordPress 환경을 쉽게 가동하고 더 이상 필요하지 않으면 삭제할 수 있습니다.
- 지원되는 모든 PHP 및 WordPress 버전 및 이들의 조합에 대한 테스트 허용
- 사용자가 사이트 및 데이터의 외부 백업을 생성할 수 있는 MyKinsta와 원활하게 통합됩니다.
2. PHPUnit
PHPUnit은 PHP용 프로그래머 지향 테스트 프레임워크입니다. 소스 코드의 개별 단위를 검증하기 위한 목적으로 PHP 코드에서 단위 테스트를 실행하는 데 가장 널리 사용되는 프레임워크입니다.
PHPUnit 테스트를 통해 개발자는 개발 주기 내에서 가능한 한 빨리 문제를 찾을 수 있으므로 코드 회귀가 도입되지 않았는지 확인하는 데 도움이 됩니다(예: 코드의 일부를 변경해도 다른 곳에서 문제가 발생하지 않음).
PHPUnit의 주요 기능은 다음과 같습니다.
- 새로운 기능 테스트
- 새로 리팩터링된 코드 유효성 검사
- 선택한 연속 통합 프로세스 내에서 완전 자동화 및 실행 가능
- 디버깅
- 기능 호출 및 제약을 통한 예상 사용에 대한 자동 문서화
- 개발자가 먼저 테스트를 만든 다음 기능을 만드는 테스트 주도 개발(TDD) 접근 방식을 허용합니다.
3. 두뇌 원숭이
Brain Monkey는 PHP 및 WordPress용 테스트 유틸리티입니다. PHP 메소드를 재정의하고 모든 PHP 애플리케이션의 동작을 테스트할 수 있는 프레임워크에 구애받지 않는 도구를 제공합니다. 또한 WordPress 코드 테스트와 관련된 도구를 제공합니다.
Brain Monkey의 주요 기능은 다음과 같습니다.
- 단위 테스트가 외부의 언로드된 라이브러리와 상호 작용할 수 있습니다.
- WordPress 환경을 로드할 필요 없이 WordPress 기능 호출 허용
- WordPress 기능(예:
add_filter
또는do_action
)이 예상대로 기능을 호출한다고 주장할 수 있습니다.
4. 브레인 페이커
Brain Faker는 Faker(가짜 데이터 생성을 위한 인기 있는 PHP 라이브러리) 및 Brain Monkey를 사용하여 다음을 포함하여 테스트할 수 있는 가짜 WordPress 개체 및 관련 기능을 쉽게 생성할 수 있도록 합니다.
-
WP_Post
인스턴스 및get_post
및get_post_field
와 같은 모의 관련 함수 -
WP_User
인스턴스 및get_userdata
,get_user_by
,user_can
등과 같은 모의 관련 함수 -
WP_Term
인스턴스 및get_term
및get_term_by
와 같은 모의 관련 함수 -
WP_Comment
인스턴스 -
WP_Site
인스턴스 및get_site
와 같은 모의 관련 기능 -
WP_Post_Type
인스턴스 및get_post_type_object
및post_type_exists
와 같은 모의 관련 함수 -
WP_Taxonomy
인스턴스 및get_taxonomy
및taxonomy_exists
와 같은 모의 관련 함수 -
WP_Error
인스턴스
Brain Faker의 주요 기능은 다음과 같습니다.
- 가짜지만 사실적인 WordPress 데이터를 단위 테스트에 삽입합니다. 가짜 게시물의 수정 날짜에 액세스하면 날짜로 작동하고(예:
2022-04-17T13:06:58+00:00
) 사용자 이름이 적합합니다(예:"John Smith"
), 가짜 게시물 인스턴스는 가짜 사용자 인스턴스에 의해 작성됩니다. - 가짜 데이터는 미리 제공되거나 무작위로 생성될 수 있습니다.
- 확장 가능 — 개발자는 자신의 WordPress 플러그인에서 클래스와 기능을 모의할 수 있습니다.
5. 조롱
Mockery는 PHPUnit, PHPSpec 또는 기타 단위 테스트 프레임워크와 함께 사용하기 위한 단순하면서도 유연한 PHP 모의 객체 프레임워크입니다. 사람이 읽을 수 있는 DSL(Domain Specific Language)을 사용하여 가능한 모든 개체 작업 및 상호 작용을 정의할 수 있는 테스트 이중 프레임워크를 제공합니다.
Mockery의 주요 기능은 다음과 같습니다.
- 모의 객체 및 스텁의 유연한 생성 가능(테스트 중 특정 호출에 대해 미리 정의된 미리 준비된 답변 제공)
- PHPUnit의 테스트 격리 기능 향상
- 가능한 한 자연어 설명을 모방하여 조롱된 기대치를 표현하는 유연한 API(예:
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - 느린 시스템(예: 데이터베이스, 파일 시스템 또는 외부 서비스)에 액세스할 필요가 없도록 메모리 내 모의 개체를 사용하는 단위 테스트
- 결정적 행동과 비결정적 행동을 모두 조롱할 수 있습니다.
6. 워드프레스 기본 내보내기 도구
WordPress의 기본 내보내기 도구는 게시물, 페이지, 사용자 지정 게시물 유형, 댓글, 사용자 정의 필드, 카테고리, 태그, 사용자 정의 분류, 사용자 및 미디어를 포함하여 사이트의 WordPress 데이터를 XML 파일로 장치에 다운로드합니다. XML 파일에는 모든 WordPress 사이트로 가져올 수 있는 사용자 지정 형식(WordPress eXtended RSS 또는 WXR 파일이라고 함)이 있습니다.
이 도구는 테스트용으로 특별히 설계되지 않았습니다. 그러나 그 유용성은 테스트에 사용할 수 있는 적절한 데이터 세트가 포함된 WordPress 데이터베이스의 스냅샷을 생성할 수 있다는 점에서 나옵니다. 즉, 실제 데이터가 포함된 프로덕션의 WordPress 사이트를 내보내고 새 기능을 테스트하기 위해 개발 또는 스테이징 인스턴스로 가져올 수 있습니다.
WordPress 내보내기 도구의 주요 기능은 다음과 같습니다.
- 실제 워드프레스 사이트를 이용한 테스트 데이터 생성
- 전체 데이터베이스의 공유 가능한 내보내기 파일
- 통합 및 단위 테스트 모두에 유용
7. 거즐
Guzzle은 쉽게 HTTP 요청을 보내고 웹 서비스와 통합할 수 있는 PHP HTTP 클라이언트입니다.
Guzzle은 일반적인 도구이므로 테스트는 가능한 사용 사례 중 하나일 뿐입니다. DevKinsta와 같은 로컬 웹 서버와 함께 Guzzle을 사용하면 통합 테스트를 실행할 수 있습니다. Guzzle을 사용하여 개발 웹 서버에 대해 HTTP 요청을 보낸 다음 콘텐츠 및 헤더를 확인하는 PHPUnit의 단위 테스트에 응답을 전달할 수 있습니다. 예상대로 설정됩니다.
Guzzle의 주요 기능은 다음과 같습니다.
- 공급업체 종속을 방지하는 PHP 표준 권장 사항 "PSR-7"(HTTP 메시지 인터페이스용)을 충족합니다.
- 간단하고 빠름
- 실제 WordPress 사이트에 대해 테스트를 수행하여 안정성을 높입니다.
- 쉽고 빠르게 PHPUnit 내에서 실행할 수 있습니다.
- 통합 테스트를 자동화하고 지속적 통합 프로세스에 추가할 수 있습니다.
8. WP-CLI
WP-CLI는 WordPress용 명령줄 인터페이스입니다. 이를 통해 웹 브라우저를 사용하지 않고도 플러그인을 업데이트하고 다중 사이트 설치 등을 구성할 수 있습니다.
WP-CLI는 특별히 테스트 도구는 아니지만 테스트는 많은 사용 사례 중 하나입니다. 예를 들어, 새로운 개발 웹 서버를 가동한 후 WP-CLI 명령이 포함된 bash 스크립트를 실행하여 테스트 데이터를 WordPress 사이트로 가져오고, 적절한 역할과 기능을 가진 사용자를 만들고, 필요한 타사 플러그인을 설치하고, 기타 그러한 작업.
WP-CLI 명령이 있는 스크립트를 Git 리포지토리에 저장할 수 있으므로 통합 테스트를 실행하는 프로세스를 자동화하고 지속적 통합 프로세스 내에서 통합할 수 있습니다.
- WordPress 내보내기 도구를 사용하여 실제 테스트 데이터를 생성하고 Git 저장소에 저장합니다.
- DevKinsta를 사용하여 새 WordPress 인스턴스로 웹 서버를 시작합니다.
- WP-CLI를 사용하여 테스트 데이터를 WordPress 사이트로 가져옵니다(DevKinsta는 WP-CLI를 통해 작동할 수 있음).
- Guzzle이 웹 서버에 대해 HTTP 요청을 실행하여 응답 내용과 헤더를 확인하도록 하는 PHPUnit에서 단위 테스트를 만듭니다.
WP-CLI의 주요 기능은 다음과 같습니다.
- 명령줄 인터페이스를 통해 WordPress 인스턴스에 대한 원격 명령 실행 허용
- 다른 도구로 확장 가능
- 테스트 스택의 기능 향상
- 프로세스의 완전한 자동화 가능
9. X디버그
XDebug는 디버깅, PHP의 오류 보고 개선, 추적, 프로파일링 및 코드 검사 분석을 포함하여 PHP 개발 경험을 개선하기 위한 다양한 기능을 제공하는 PHP용 확장입니다.
XDebug는 코드 테스트에는 도움이 되지 않지만 버그가 있는 위치를 찾는 데 도움이 됩니다. XDebug와 PHPUnit을 결합하면 특히 효과적입니다. 테스트가 실패하고 문제의 원인을 찾을 수 없는 경우 XDebug를 사용하여 단위 테스트 코드에 중단점을 추가할 수 있습니다. 단위 테스트를 다시 실행하면 PHP 스크립트가 각 중단점에서 일시 중지되어 현재 실행 상태(호출 스택, 속성 및 개체 값 등)를 검사하고 무엇이 잘못되었는지 발견할 수 있습니다.
XDebug의 주요 기능은 다음과 같습니다.
- VS Code, PHPStorm 및 Sublime을 포함한 인기 있는 PHP 편집기를 위한 통합 기능
- 모든 함수 호출에 소요된 시간과 메모리 소모량을 프로파일링합니다.
- 단순히
var_dump
를 사용하여 코드를 디버그하는 것보다 훨씬 강력합니다. - 중단점에서 일시 중지할 때 즉석에서 변수 값을 수정할 수 있습니다.
10. PHP스탄
PHPStan은 테스트를 작성하기 전에도 코드에서 버그를 찾을 수 있도록 설계된 PHP용 정적 분석 도구입니다.
PHPStan의 목표는 개발자가 작성해야 하는 테스트 수를 줄이는 것입니다. 이 도구는 테스트 스택에서 가장 먼저 실행되어 가능한 한 많은 버그를 선제적으로 잡아냅니다. 정적 분석에서 추론할 수 없는 버그(예: 논리에 결함이 있는 버그)만 단위 테스트를 통해 검증해야 합니다.
PHPStan은 전체 코드베이스를 스캔하고 불일치를 찾는 방식으로 작동합니다. 예를 들어, float를 반환하는 함수의 응답 값은 정수 유형의 함수 매개변수에 할당할 수 없습니다. 코드에 이러한 발생이 포함될 때마다 이는 잠재적인 버그이며 PHPStan은 애플리케이션 코드를 작성하는 동안 바로 개발 단계에서 이를 경고합니다.
PHPStan의 주요 기능은 다음과 같습니다.
- 기존 지속적 통합 프로세스 내 자동화 및 통합
- 유형 불일치와 같은 많은 까다로운 버그를 찾습니다.
- 전체 코드베이스를 스캔하여 거의 실행되지 않는 코드 부분에서 버그를 찾습니다.
- 점진적인 통합을 허용하기 위해 증가하는 복잡성 수준으로 구성
- Symfony, Laravel, Doctrine, Nette 및 WordPress를 포함하여 가장 널리 사용되는 PHP 프레임워크 및 CMS용 확장 기능
요약
프로덕션에서 애플리케이션에 버그가 눈에 띄지 않게 들어가게 하는 비용은 평판과 수입에 해를 끼칠 수 있으므로 사용자에게 영향을 미치기 전에 버그를 근절해야 합니다.
WordPress 플러그인
복잡한 응용 프로그램에서 버그가 없을 것이라고 100% 확신하는 것은 거의 불가능합니다. 이 때문에 초기 개발 주기 동안 최대한 많은 버그를 찾아 제거하는 프로세스를 설정해야 합니다.
잘 설계된 테스트 툴킷을 사용하면 애플리케이션이 예기치 않은 방식으로 작동할 가능성을 크게 최소화할 수 있습니다. 오픈 소스 커뮤니티는 응용 프로그램의 다양한 측면을 테스트할 수 있는 많은 도구를 만들고 사용할 수 있도록 했습니다. — 포괄적인 테스트 스택을 생성하는 데 사용합니다.
이 기사에서는 WordPress 플러그인에서 PHP 코드를 테스트하기 위한 목표를 달성하는 데 도움이 되는 10가지 도구를 검토했습니다.
다음 중 최신 프로젝트에 어떤 도구를 사용하셨습니까? 아래 코멘트 섹션에서 무엇을 구축했는지 알려주십시오!