LARAVEL 애플리케이션을 테스트 할 때 피할 수있는 일반적인 함정에는 다음이 포함됩니다.
자동 테스트를 무시합니다
많은 개발자들이 유닛 테스트 용 PhPunit 및 브라우저 테스트를위한 Laravel Dusk와 같은 Laravel의 강력한 자동화 테스트 도구를 활용하지 않는 실수를합니다. 수동 테스트에만 의존하는 것은 비효율적이며 특히 응용 프로그램이 복잡 해짐에 따라 버그가 누락 될 위험이 있습니다. 테스트 자동화는 테스트 단계에서 더 빠른 피드백, 테스트 범위가 높고 인간 오류를 줄입니다.
테스트 중심 개발 무시 (TDD)
자주 감독은 응용 프로그램 코드 자체 전에 테스트가 작성되는 테스트 중심의 개발을 건너 뛰는 것입니다. TDD가 없으면 코드가 모듈식이 덜, 유지하기가 어렵고, 비를 테스트 할 수 없어 기술 부채가 축적 될 수 있습니다. TDD는 깨끗하고 테스트 가능한 코드를 작성하도록 권장하며 버그를 일찍 잡는 데 도움이됩니다.
테스트 범위가 부적절합니다
특정 기능 또는 에지 사례를 무시하는 데만 테스트를 집중하면 테스트 범위가 부적절합니다. 이는 응용 프로그램의 많은 부분이 테스트되지 않은 상태로 유지되므로 결함이 감지되지 않을 수 있습니다. 포괄적 인 테스트는 모든 중요한 경로를 포괄해야하며 견고성을 보장하기 위해 에지 케이스를 포함해야합니다.
테스트 업데이트가 아닙니다
Laravel 애플리케이션은 종종 기능 추가 및 리팩토링을 겪습니다. 이러한 변경 사항을 반영하기 위해 테스트를 업데이트하지 않으면 더 이상 응용 프로그램의 올바른 동작을 확인하지 않는 쓸모없는 테스트 스위트가됩니다. 오 탐지 나 네거티브를 피하기 위해 코드베이스와 함께 테스트를 유지해야합니다.
열악한 테스트 환경 관리
생산 환경과 크게 다른 테스트 환경이 있으면 신뢰할 수없는 테스트 결과가 발생합니다. 구성 차이로 인해 테스트가 로컬로 전달되지만 생산에 실패하거나 그 반대도 마찬가지입니다. 테스트 환경은 진정한 신뢰할 수있는 결과를 위해 생산 설정을 밀접하게 반영해야합니다.
외관과 정적 통화를 과도하게 사용합니다
비즈니스 로직에서 Laravel Facades를 정적으로 직접 호출하면 이러한 통화가 종속성을 숨기므로 단위 테스트를 분리하기가 더 어려워 지므로 테스트를 복잡하게 할 수 있습니다. 의존성 주입은 더 나은 모듈성과 테스트를위한 조롱이 쉬운 것을 촉진하기 때문에 선호되는 접근법입니다.
컨트롤러에서 유효성 검사 및 권한 부여 로직을 혼합합니다
컨트롤러에 직접 유효성 검사 및 인증 로직을 포함 시키면 컨트롤러가 부풀어 오른 유효성 검사 규칙으로 이어져 테스트가 더욱 복잡해집니다. Laravel Form Request 클래스를 사용하여 검증 및 인증을 캡슐화하면 테스트 가능성 및 코드 유지 관리가 향상됩니다.
테스트의 성능을 무시합니다
과도한 데이터베이스 쿼리와 같은 성능 영향을 고려하지 않는 테스트는 테스트 실행 속도를 늦추고 개발자 생산성을 줄일 수 있습니다. 예를 들어, 열망하는 하중을 사용하지 않으면 N+1 쿼리 문제가 발생하여 테스트 런타임이 불필요하게 팽창 할 수 있습니다. 적용 범위를 희생하지 않고 효율성을 위해 테스트를 최적화해야합니다.
보안 테스트 건너 뛰기
CSRF 보호, 입력 소독 및 암호화와 같은 보안 관련 측면을 테스트하지 않으면 전반적인 응용 프로그램 보안 자세가 약화됩니다. 테스트는 예를 들어 CSRF 토큰이 형태로 검증되도록하여 일반적인 취약점이 완화되었는지 확인해야합니다.
연속 통합을 사용하지 않음 (CI)
지속적인 통합 파이프 라인의 일환으로 실행중인 테스트에서 자동화를 건너 뛰면 버그 감지가 지연되고 코드 품질이 줄어 듭니다. CI 도구로 테스트를 자동화하면 모든 코드 변경에 대한 테스트가 실행되도록하여 회귀가 생산에 도달하지 못하게됩니다.
테스트를 분리하지 않습니다
적절한 분리가없는 데이터베이스와 같은 외부 시스템에 의존하는 테스트를 작성하면 상태 또는 외부 요인으로 인해 플라킹 테스트가 실패하여 디버깅이 어려워 질 수 있습니다. 조롱과 가짜를 사용하여 단위 테스트를 분리하고 통합 테스트를 특정 시나리오로 제한하십시오.
테스트에서 오류 처리가 잘못되었습니다
테스트 실패 중에 Laravel의 자세한 오류 메시지와 DD ()와 같은 디버깅 도구를 사용하지 않으면 효과적인 문제 해결을 방해합니다. 이러한 도구를 올바르게 사용하면 실패한 테스트의 디버깅이 가속화됩니다.
테스트에서 기술 부채가 축적되도록 허용합니다
많은 Laravel 프로젝트는 서두르거나 최소한의 테스트로 시작하여 유지하기 어려운 대규모 레거시 테스트 기반으로 이어집니다. 테스트를 점진적으로 리팩토링하고 중복 또는 부서지기 쉬운 테스트를 제거하면 제품군을 효과적이고 빠르게 유지할 수 있습니다.