首頁 php教程 php手册 使用XDebug调试及单元测试覆盖率分析

使用XDebug调试及单元测试覆盖率分析

Jun 21, 2016 am 08:55 AM
output pear phpunit 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, tsthread_safety, 目前5.3以上才支持zend_extension加载,的用zend_extension_ts加载(或者你可以查看phpinfo是否启用了zts),然后重启apache,查看phpinfo,就发现XDebug选项了。


可以看到xdebug.profiler_enablexdebug.profiler_output_dirxdebug.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

需要注意的是现在最新版的phpunit3.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库函数

XDebug除了上述方式外,还有自己的一些函数库提供,可以在你程序的代码段任何地方执行,具体的请看http://xdebug.org/docs/all_functions

XDebug的功能,还不止这些,因为他的选项·好大的一页,所以还是去http://xdebug.org/docs/这里看看官方的说明。靠谱!



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP開發中如何使用PHPUnit進行Mock測試 PHP開發中如何使用PHPUnit進行Mock測試 Jun 27, 2023 am 10:25 AM

在PHP開發中,測試是非常重要的環節,測試可以大幅減少錯誤的發生,並提高程式碼品質。 Mock測試是測試中的一種形式,它可以模擬出虛假的物件或數據,以便測試我們程式碼的某個特定功能或場景。 PHPUnit是PHP中非常流行的一個測試框架,它支援Mock測試。在這篇文章中,我們將探討如何使用PHPUnit進行Mock測試。一、什麼是Mock測試在開始之前,我們先來了

PHP中的測試報告工具 PHP中的測試報告工具 May 24, 2023 am 08:24 AM

PHP是一種常見的開源程式語言,廣泛應用於Web開發中,它的優點就在於易學、易用、可拓展性強等優點。而作為開發者,我們為了在保證程式碼品質的同時提高開發效率,不可或缺的就是測試和測試報告的使用。在PHP開發中,有許多測試和測試報告工具,其中最常見的就是PHPUnit。然而,PHPUnit雖然簡單易用,但需要一些編寫測試案例的基礎知識,如果不熟悉,使用起來還是

在生產伺服器上啟用XDebug會使PHP變慢嗎? 在生產伺服器上啟用XDebug會使PHP變慢嗎? Sep 22, 2023 pm 10:41 PM

是的,像XDebug這樣的偵錯器會降低PHP伺服器的效能。這就是調試器不放置在伺服器環境中的原因。它們部署在不同的環境中,以避免不必要的開銷。偵錯訊息無法在已處於生產階段的應用程式中顯示。當將偵錯行為加入伺服器上,偵錯引擎附加到PHP進程。它開始接收訊息以在斷點處停止,但這不是必需的行為,因為它會給其他進程帶來高效能打擊,從而停止PHP解析器。另一方面,當調試器安裝後,它們往往會在伺服器中打開端口,因為它們不打算在生產環境中使用。在伺服器中打開連接埠就像為駭客打開一扇窺探之門一樣糟糕。

如何使用PHP和PHPUnit檢查程式碼規格和質量 如何使用PHP和PHPUnit檢查程式碼規格和質量 Jun 25, 2023 pm 04:57 PM

在現代的軟體開發中,程式碼品質和規範是極為重要的因素。不僅可以讓程式碼更加整潔易於維護,還可以提高程式碼的可讀性和可擴充性。但是,如何檢查程式碼的品質和規範呢?本文將介紹如何使用PHP和PHPUnit來實現這一目標。第一步:檢查程式碼規範在PHP開發中,有一個非常流行的程式碼規範,它被稱為PSR(PHP標準規範)。 PSR規範的目的是使PHP程式碼更具可讀性和可維護性。其中

PHP程式設計有哪些常見的程式碼品質工具? PHP程式設計有哪些常見的程式碼品質工具? Jun 12, 2023 am 08:16 AM

PHP程式設計有哪些常見的程式碼品質工具?在現代的軟體開發中,程式碼品質是非常重要的。如果程式碼品質不好,不僅會降低程式碼的可讀性,增加維護難度,還會造成安全漏洞等一系列問題。而在PHP程式設計中,我們可以使用一些程式碼品質工具來檢查程式碼的品質。本文將介紹一些常見的PHP程式碼品質工具。 PHP_CodeSnifferPHP_CodeSniffer是用來靜態分析PHP程式碼的

如何使用PHPUnit進行PHP單元測試 如何使用PHPUnit進行PHP單元測試 May 12, 2023 am 08:13 AM

隨著軟體開發產業的發展,測試逐漸成為了不可或缺的一部分。而單元測試作為軟體測試中最基礎的一環,不僅能夠提高程式碼質量,還能夠加快開發者開發和維護程式碼的速度。在PHP領域,PHPUnit是一個非常流行的單元測試框架,它提供了各種功能來幫助我們編寫高品質的測試案例。在本文中,我們將介紹如何使用PHPUnit進行PHP單元測試。安裝PHPUnit在使用PHPUnit

PHP中的程式碼檢查工具 PHP中的程式碼檢查工具 May 24, 2023 pm 12:01 PM

檢查程式碼品質是每個程式設計師都必須要做的任務,而PHP中也有很多工具可以用於檢查程式碼的品質和風格,從而提高程式碼的可讀性和可維護性,提高程式碼的可靠性和安全性。本文將介紹幾種常見的PHP程式碼檢查工具,並對它們進行簡單的比較和評估,希望可以幫助讀者在開發過程中選擇合適的工具,提高程式碼品質和效率。 PHP_CodeSnifferPHP_CodeSniffer是廣泛應用

php如何使用PHPUnit和Mockery進行單元測試? php如何使用PHPUnit和Mockery進行單元測試? May 31, 2023 pm 04:10 PM

在PHP專案開發中,單元測試是一項很重要的任務。 PHPUnit和Mockery是兩個相當流行的PHP單元測試框架,其中PHPUnit是一個被廣泛使用的單元測試工具,而Mockery則是一個專注於提供統一而簡潔的API以創建和管理對象Mock的對像模擬工具。透過使用PHPUnit和Mockery,開發人員可以快速且有效率地進行單元測試,以確保程式碼庫的正確性和穩定性

See all articles