使用XDebug调试及单元测试覆盖率分析
今天我就就自己对XDebug使用的一些体验做一小段分享。XDebug也是因为需要是用来生成覆盖率分析文件才安装的,刚接触不久,平时用的也不是很频繁,但是这个的确是一个好工具,如果想要依赖它来分析程序的性能还是需要自己亲手去试试。具体它有多好,请听我一一道来。
一、安装篇(XDebug 和PHPUnit)
A:安装XDebug:
Xdebug网下载xdebug dll文件,存放到php加载的ext目录下(可以选择重命名,比如php_xdebug.dll,然后打开php.ini文件,添加配置
[xdebug]
zend_extension_ts = php_xdebug.dll
xdebug.profiler_enable = on
xdebug.trace_output_dir = D:\PHPAPP\XDebug
xdebug.profiler_output_dir=D:\PHPAPP\XDebug
xdebug需要采用zend引擎加载的方式加载,所以用zend_extension_ts或是zend_extension, ts是thread_safety, 目前5.3以上才支持zend_extension加载,的用zend_extension_ts加载(或者你可以查看phpinfo是否启用了zts),然后重启apache,查看phpinfo,就发现XDebug选项了。
可以看到xdebug.profiler_enable,xdebug.profiler_output_dir,xdebug.trace_output_dir这三个是我们刚刚配置的项,可以安装自己的需要配置剩余项,xdebug.profiler_enable:开启性能分析,
开启这个之后会在xdebug.profiler_output_dir这个目录下生成cachegrind.out.XXX的分析文件,如果指定了xdebug.profiler_output_name这个,则输出来的文件就会是指定的名字.xxx的格式(此方法不适合分析,原因稍后说明),
xdebug.trace_options:这个是开启跟踪项,
开启该项之后,会在xdebug.trace_output_dir下生产跟踪文件,注意该项会影响运行速度,因为他需要记录跟踪过程中的一系列事件。
关于XDebug还有一点需要注意的:XDebug是调试的,也就是说配置了XDebug那程序运行的就是一个Debug状态,所以这时候zend_optimizer就不能用了,总不能让程序即调试状态又处于优化状态哈。
更多关于XDebug的,大家去网上发掘吧~~然后一起探讨哈
友情提醒:对于使用集成环境的同学,比如Wamp,它拥有两个PHP.ini配置文件,一个在Apache下,一个在PHP下,Apache下是影响web的,而PHP下是影响命令行的,所以····(感谢俊哥的提醒)
B:安装PHPUnit:
关于PHPUnit的安装过程,网上也已经很多了,之前自己为了终于安装成功之后也小写了篇安装篇(http://user.qzone.qq.com/414073277/blog/1292122868),所以这里就不再赘述了,网上的一些安装教程大都能完成安装。就简单说下过程:
PHPUnit安装用的是pear的安装方式,所以如果机子没有安装过pear包需要先安装下,一般在php安装的时候在其安装目录下都有一个go-pear.bat文件,直接执行即可完成安装,【这里安装需要注意扩展exif,这个扩展会用到mbstring扩展中的方法,所以mbstring的加载顺序需要再exif之上。】完成pear的安装之后就可以执行pear,查看pear的命令参数,
然后依次执行:
pear channel-discover pear.phpunit.de
pear install –alldeps phpunit/PHPUnit
需要注意的是现在最新版的phpunit是3.5的··但是这个只有pear的版本是1.6以上及PHP5.2.X才会安装得到最新版·否则是安装的是第一次的版本(不过不影响使用)。
安装好后就可以执行phpunit查看相关信息:
可以看到有—coverage-html –coverage-clover –coverage-source这三个选项·就是因为在XDebug安装成功之后才能用,这三个对于导出覆盖率文件可是很重要的选项。
二、PHPUnit 单元测试覆盖率分析
单元测试,最重要的指标之一就是覆盖率。这点虽然Zend Studio上可以很清晰的看出来,可是要导出成一分文档就不太好使了,所以这时候XDebug就又可以帮上忙了,使用的时候也挺简单,调用命令即可:
phpunit –coverage-html D:\PHPAPP\XDebug\ YouTest
这样就会将生成的覆盖文件(html格式的)放在D:\PHPAPP\XDebug\目录下了,
然后就可以在放置的目录下找到一堆的html文件,运行下index.html
就可以看到这样的图了,英文字母很简单··意思也明了就不解释了,说明一点:
测试结果说明:一共有5种,上图的例子出现了两种。
. :代表正确
F :代表断言错误
E :代表PHP程序错误或是异常
I : 代表没有实现的方法
S : 代表是跳过的方法
生产的覆盖文件说明:
Classes: 只有一个类中的所有方法都被覆盖的时候,这个类才算是被测试完的
Functions/Methods :只有一个方法或是函数的所有有效的语句代码都被执行到了才算这个方法或是函数是被测试完的
Lines: 总行数将会不饱行注释,空行, 标签, 及类及方法的声明。
使用phpunit –coverage-clover D:\PHPAPP\XDebug\first.xml YouTest
生产的将会是一个xml格式的文件,这个格式的文件效果不明显,没有html格式的好,这边的效果被我删掉了所以么有效果图可看,第三个覆盖文件的参数我没测试过,大家有兴趣可以试试。
三、程序执行性能分析
XDebug除了有效的帮助分析单元测试覆盖率之外,还可以帮组分析程序执行的瓶颈所在,开启分析的功能:
xdebug.profiler_enable = on
xdebug.profiler_output_dir=D:\PHPAPP\XDebug
设置上面两项,然后执行你要分析的程序,就会在上面的目录下看到cachegrind.out.XXX的文件,这个文件直接打开就是一些记录,需要借助第三方的cachegrind查看工具才行,一个好用的工具是winCacheGrind,查看起来很方便。
可以看到执行的总时间,及每个函数执行的时间。
因为这个工具在打开文件的时候,只能打开cachegrind.out.*的文件,所以待分析的文件必须是这个名字的,所以为了省去重命名,这也就是为啥我说不建议修改xdebug.profiler_output_name这个选项的原因。
XDebug除了上述方式外,还有自己的一些函数库提供,可以在你程序的代码段任何地方执行,具体的请看http://xdebug.org/docs/all_functions

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 개발에서 테스트는 오류 발생을 크게 줄이고 코드 품질을 향상시킬 수 있는 매우 중요한 연결 고리입니다. 모의 테스트는 코드의 특정 기능이나 시나리오를 테스트하기 위해 가짜 개체나 데이터를 시뮬레이션할 수 있는 테스트 형식입니다. PHPUnit은 모의 테스트를 지원하는 PHP에서 매우 인기 있는 테스트 프레임워크입니다. 이 기사에서는 모의 테스트에 PHPUnit을 사용하는 방법을 살펴보겠습니다. 1. 모의테스트란 무엇인가요? 시작하기 전에 먼저 알아볼까요?

PHP는 웹 개발에 널리 사용되는 일반적인 오픈 소스 프로그래밍 언어로, 배우기 쉽고 사용하기 쉬우며 확장성이 높다는 장점이 있습니다. 개발자로서 코드 품질을 보장하면서 개발 효율성을 높이려면 테스트 및 테스트 보고서를 사용하는 것이 필수적입니다. PHP 개발에는 많은 테스트 및 테스트 보고 도구가 있으며, 그 중 가장 일반적인 것은 PHPUnit입니다. 하지만 PHPUnit은 간단하고 사용하기 쉽지만 테스트 케이스 작성에 대한 기본 지식이 필요하므로 익숙하지 않은 경우에는 여전히 사용하기 어렵습니다.

예, XDebug와 같은 디버거는 PHP 서버 성능을 저하시킬 수 있습니다. 이것이 디버거가 서버 환경에 배치되지 않는 이유입니다. 불필요한 오버헤드를 피하기 위해 다양한 환경에 배포됩니다. 이미 프로덕션 중인 애플리케이션에는 디버그 메시지를 표시할 수 없습니다. 디버깅 동작이 서버에 추가되면 디버깅 엔진이 PHP 프로세스에 연결됩니다. 중단점에서 중지하라는 메시지 수신을 시작하지만 이는 다른 프로세스에 성능 저하를 주어 PHP 파서를 중지하므로 필수 동작은 아닙니다. 반면에 디버거를 설치하면 프로덕션 환경에서 사용하기 위한 것이 아니기 때문에 서버에서 포트를 여는 경향이 있습니다. 서버에서 포트를 여는 것은 해커가 엿볼 수 있도록 문을 여는 것만큼 나쁩니다.

현대 소프트웨어 개발에서는 코드 품질과 사양이 매우 중요한 요소입니다. 코드를 더 깔끔하고 유지 관리하기 쉽게 만들 수 있을 뿐만 아니라 코드의 가독성과 확장성을 향상시킬 수도 있습니다. 하지만 코드의 품질과 사양을 어떻게 확인합니까? 이 글에서는 PHP와 PHPUnit을 사용하여 이 목표를 달성하는 방법을 설명합니다. 1단계: 코드 사양을 확인하세요. PHP 개발에는 PSR(PHP Standard Spec)이라는 매우 널리 사용되는 코드 사양이 있습니다. PSR 사양의 목적은 PHP 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만드는 것입니다. ~에

코드 품질을 확인하는 것은 모든 프로그래머가 반드시 수행해야 하는 작업이며, PHP에는 코드의 품질과 스타일을 확인하는 데 사용할 수 있는 도구가 많이 있으므로 코드의 가독성과 유지 관리성이 향상되고 코드의 신뢰성과 보안이 향상됩니다. 코드. 이 기사에서는 몇 가지 일반적인 PHP 코드 검사 도구를 소개하고 이에 대한 간단한 비교 및 평가를 수행하여 독자가 개발 과정에서 적절한 도구를 선택하고 코드 품질과 효율성을 향상시키는 데 도움이 되기를 바랍니다. PHP_CodeSnifferPHP_CodeSniffer는 널리 사용되는

PHP 프로젝트 개발에서 단위 테스트는 매우 중요한 작업입니다. PHPUnit과 Mockery는 매우 인기 있는 두 가지 PHP 단위 테스트 프레임워크입니다. PHPUnit은 널리 사용되는 단위 테스트 도구인 반면, Mockery는 객체 모의 객체를 생성하고 관리하기 위한 통합되고 간결한 API를 제공하는 데 중점을 둔 객체 시뮬레이션 도구입니다. 개발자는 PHPUnit 및 Mockery를 사용하여 빠르고 효율적으로 단위 테스트를 수행하여 코드 기반의 정확성과 안정성을 보장할 수 있습니다.

PHP 프로그래밍의 일반적인 코드 품질 도구는 무엇입니까? 현대 소프트웨어 개발에서는 코드 품질이 매우 중요합니다. 코드 품질이 좋지 않으면 코드의 가독성이 떨어지고 유지 관리의 어려움이 커질 뿐만 아니라 보안 취약점 등 일련의 문제가 발생합니다. PHP 프로그래밍에서는 일부 코드 품질 도구를 사용하여 코드 품질을 확인할 수 있습니다. 이 기사에서는 몇 가지 일반적인 PHP 코드 품질 도구를 소개합니다. PHP_CodeSnifferPHP_CodeSniffer는 PHP 코드의 정적 분석을 위한 도구입니다.

소프트웨어 개발 산업이 발전하면서 테스트는 점차 필수적인 부분이 되었습니다. 소프트웨어 테스팅의 가장 기본적인 부분인 단위 테스팅은 코드 품질을 향상시킬 뿐만 아니라 개발자의 코드 개발 및 유지 관리 속도를 높일 수 있습니다. PHP 분야에서 PHPUnit은 고품질 테스트 케이스를 작성하는 데 도움이 되는 다양한 기능을 제공하는 매우 인기 있는 단위 테스트 프레임워크입니다. 이 기사에서는 PHP 단위 테스트에 PHPUnit을 사용하는 방법을 다룹니다. PHPUnit 설치 및 PHPUnit 사용
