PHP로 커버리지를 내면 phpdbg
최근에는 PCOV이 좋은 것 같습니다.
PCOV는 PHPUnit8 이후의 대응이므로, 이 기사는 PHPUnit8 미만의 방향입니다.
2021년 8월 2일 추가
그러나 phpdbg에 비해 커버리지가 떨어지는 경우도있는 것 같습니다.
단위 테스트를 평가하기 위해 코드 커버리지를 사용하는 것이 자주 있다고 생각합니다.
종래부터, PHPUnit 에는 코드 커버리지 해석 기능이 구현되고 있어 HTML 를 비롯한 몇개의 형식으로, 리포트를 출력 가능합니다.
PHP5는 xdebug가 제공하는 명령문 커버리지 기능을 사용해 왔지만, 매우 느리고 1100 Assertions 정도의 EC-CUBE3 커버리지를 출력하는 데 2시간 이상 걸립니다.
게다가 빠른 CPU로 해도 상당히 빠르지 않습니다.
Windows 환경에서는 특히 느린 것처럼 6시간 정도 걸립니다.
PHP7 + PHP_CodeCoverage 2.2부터는 phpdbug을 사용할 수 있습니다.
HTML 보고서를 인쇄하려면 다음을 수행합니다.
phpdbg -qrr path/to/phpunit --coverage-html <output dir>
xdebug 에서는 2시간 이상 걸리고 있었던 것이, phpdbg 에서는, 무려 6분 정도로 끝났습니다!
Time: 6.01 minutes, Memory: 218.00Mb
보고서도 xdebug 와 같이 출력할 수 있습니다.
Coveralls.io에서 이러한 보고서를 만들 수도 있습니다.
다만, xdebug 에서는 정상이었던 테스트가 몇개의 에러가 되어 버리는 경우가 있는 것 같습니다만, PHP7 의 버전 업에 수반해 개선되고 있습니다.
완벽이라고는 할 수 없지만, 커버리지 리포트를 내는 정도라면 큰 지장은 없다고 생각합니다.
2021년 8월 2일 추가
phpdbg와 xdebug3 비교
2020년 11월에 xdebug3이 출시되었습니다. xdebug2에 비해 성능이 향상된 것 같습니다.
2000 Assertion 약한 EC-CUBE4에서는 30분 미만으로 출력할 수 있습니다.
phpdbg의 경우 20 분이 걸립니다. 그래서 큰 차이는 없어졌습니다.
또, xdebug3 쪽이 정확한 커버리지 계측을 할 수 있다고 합니다만, 0.1% 정도의 차이 와 같습니다.
Too many open files 라고 할 때는
큰 프로젝트에서 phpdbg를 실행하면 Too many open files 오류가 발생합니다. 이를 피하려면 Docker Container를 통해 phpdbg를 실행하는 것이 좋습니다.
Travis-CI에서는 ulimit -n 30000에 대한 제한이 있지만 Docker Container에서는 ulimit -n 524288까지 사용할 수 있습니다.
docker run -v "$PWD":/usr/src/myapp:cached -w /usr/src/myapp --rm nanasess/phpdbg phpdbg -qrr -dmemory_limit=-1 ./path/to/bin/phpunit --coverage-clover=coverage.clover
Dockerfile은 여기
htps : // 기주 b. 코 m / 나나세 s / phpdbg
See Also
Reference
이 문제에 관하여(PHP로 커버리지를 내면 phpdbg), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nanasess/items/f5f8483e92c76ef408ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)