Rumah 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/这里看看官方的说明。靠谱!



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1273
29
Tutorial C#
1253
24
Cara menggunakan PHPUnit untuk ujian Mock dalam pembangunan PHP Cara menggunakan PHPUnit untuk ujian Mock dalam pembangunan PHP Jun 27, 2023 am 10:25 AM

Dalam pembangunan PHP, ujian adalah pautan yang sangat penting dapat mengurangkan berlakunya ralat dan meningkatkan kualiti kod. Ujian olok-olok ialah satu bentuk ujian yang boleh mensimulasikan objek atau data palsu untuk menguji fungsi atau senario tertentu kod kami. PHPUnit ialah rangka kerja ujian yang sangat popular dalam PHP, yang menyokong ujian Mock. Dalam artikel ini, kami akan meneroka cara menggunakan PHPUnit untuk ujian olok-olok. 1. Apakah ujian Mock Sebelum kita mulakan, mari kita mulakan

Alat pelaporan ujian dalam PHP Alat pelaporan ujian dalam PHP May 24, 2023 am 08:24 AM

PHP ialah bahasa pengaturcaraan sumber terbuka biasa yang digunakan secara meluas dalam pembangunan Web Kelebihannya ialah ia mudah dipelajari, mudah digunakan dan sangat berskala. Sebagai pembangun, untuk meningkatkan kecekapan pembangunan sambil memastikan kualiti kod, adalah penting untuk menggunakan laporan ujian dan ujian. Dalam pembangunan PHP, terdapat banyak alat pelaporan ujian dan ujian, yang paling biasa ialah PHPUnit. Walau bagaimanapun, walaupun PHPUnit mudah dan mudah digunakan, ia memerlukan beberapa pengetahuan asas menulis kes ujian Jika anda tidak biasa dengannya, ia masih sukar untuk menggunakannya.

Adakah dengan mendayakan XDebug pada pelayan pengeluaran menjadikan PHP lebih perlahan? Adakah dengan mendayakan XDebug pada pelayan pengeluaran menjadikan PHP lebih perlahan? Sep 22, 2023 pm 10:41 PM

Ya, penyahpepijat seperti XDebug boleh memperlahankan prestasi pelayan PHP. Inilah sebabnya mengapa penyahpepijat tidak diletakkan dalam persekitaran pelayan. Mereka digunakan dalam persekitaran yang berbeza untuk mengelakkan overhed yang tidak perlu. Mesej nyahpepijat tidak boleh dipaparkan dalam aplikasi yang sudah dalam pengeluaran. Apabila tingkah laku penyahpepijatan ditambahkan pada pelayan, enjin penyahpepijatan dilampirkan pada proses PHP. Ia mula menerima mesej untuk berhenti pada titik putus, tetapi ini tidak diperlukan kelakuan kerana ia akan memberikan prestasi prestasi kepada proses lain, sekali gus menghentikan penghurai PHP. Sebaliknya, apabila penyahpepijat dipasang, mereka cenderung untuk membuka port dalam pelayan kerana ia tidak bertujuan untuk digunakan dalam persekitaran pengeluaran. Membuka port dalam pelayan anda sama buruknya dengan membuka pintu untuk penggodam mengintai.

Cara menggunakan PHPUnit untuk ujian unit PHP Cara menggunakan PHPUnit untuk ujian unit PHP May 12, 2023 am 08:13 AM

Dengan perkembangan industri pembangunan perisian, ujian secara beransur-ansur menjadi bahagian yang sangat diperlukan. Sebagai bahagian paling asas dalam ujian perisian, ujian unit bukan sahaja boleh meningkatkan kualiti kod, tetapi juga mempercepatkan pembangunan dan penyelenggaraan kod pembangun. Dalam bidang PHP, PHPUnit ialah rangka kerja ujian unit yang sangat popular, yang menyediakan pelbagai fungsi untuk membantu kami menulis kes ujian berkualiti tinggi. Dalam artikel ini, kami akan membincangkan cara menggunakan PHPUnit untuk ujian unit PHP. Pasang PHPUnit dan gunakan PHPUnit

Cara menyemak spesifikasi dan kualiti kod menggunakan PHP dan PHPUnit Cara menyemak spesifikasi dan kualiti kod menggunakan PHP dan PHPUnit Jun 25, 2023 pm 04:57 PM

Dalam pembangunan perisian moden, kualiti dan spesifikasi kod adalah faktor yang sangat penting. Ia bukan sahaja boleh menjadikan kod lebih bersih dan lebih mudah diselenggara, ia juga boleh meningkatkan kebolehbacaan dan kebolehskalaan kod. Tetapi bagaimana anda menyemak kualiti dan spesifikasi kod anda? Artikel ini akan menerangkan cara menggunakan PHP dan PHPUnit untuk mencapai matlamat ini. Langkah 1: Semak spesifikasi kod Dalam pembangunan PHP, terdapat spesifikasi kod yang sangat popular, yang dipanggil PSR (Spesifikasi Standard PHP). Tujuan spesifikasi PSR adalah untuk menjadikan kod PHP lebih mudah dibaca dan diselenggara. dalam

Alat pemeriksaan kod dalam PHP Alat pemeriksaan kod dalam PHP May 24, 2023 pm 12:01 PM

Menyemak kualiti kod ialah tugas yang mesti dilakukan oleh setiap pengaturcara, dan terdapat banyak alat dalam PHP yang boleh digunakan untuk menyemak kualiti dan gaya kod, dengan itu meningkatkan kebolehbacaan dan kebolehselenggaraan kod, dan meningkatkan kebolehpercayaan dan keselamatan kod. kod. Artikel ini akan memperkenalkan beberapa alat pemeriksaan kod PHP yang biasa dan menjalankan perbandingan dan penilaian ringkas mengenainya. Saya harap ia dapat membantu pembaca memilih alatan yang sesuai semasa proses pembangunan dan meningkatkan kualiti dan kecekapan kod. PHP_CodeSnifferPHP_CodeSniffer adalah digunakan secara meluas

Apakah alat kualiti kod biasa dalam pengaturcaraan PHP? Apakah alat kualiti kod biasa dalam pengaturcaraan PHP? Jun 12, 2023 am 08:16 AM

Apakah alat kualiti kod biasa dalam pengaturcaraan PHP? Dalam pembangunan perisian moden, kualiti kod adalah sangat penting. Jika kualiti kod tidak baik, ia bukan sahaja mengurangkan kebolehbacaan kod dan meningkatkan kesukaran penyelenggaraan, tetapi juga menyebabkan beberapa masalah seperti kelemahan keselamatan. Dalam pengaturcaraan PHP, kita boleh menggunakan beberapa alat kualiti kod untuk menyemak kualiti kod. Artikel ini akan memperkenalkan beberapa alat kualiti kod PHP biasa. PHP_CodeSnifferPHP_CodeSniffer ialah alat untuk analisis statik kod PHP

Bagaimana untuk menggunakan PHPUnit dan Mockery untuk ujian unit? Bagaimana untuk menggunakan PHPUnit dan Mockery untuk ujian unit? May 31, 2023 pm 04:10 PM

Dalam pembangunan projek PHP, ujian unit adalah tugas yang sangat penting. PHPUnit dan Mockery ialah dua rangka kerja ujian unit PHP yang sangat popular PHPUnit ialah alat ujian unit yang digunakan secara meluas, manakala Mockery ialah alat simulasi objek yang memfokuskan pada penyediaan API bersatu dan ringkas untuk mencipta dan mengurus olok-olok objek. Dengan menggunakan PHPUnit dan Mockery, pembangun boleh melakukan ujian unit dengan cepat dan cekap untuk memastikan ketepatan dan kestabilan asas kod mereka

See all articles