手机版

用XDebug调试和单元测试覆盖分析

时间:2021-10-21 来源:互联网 编辑:宝哥软件园 浏览:

今天,我想分享一些我使用XDebug的经验。还安装了XDebug,因为需要用它来生成覆盖率分析文件,平时用的不是很频繁,但这确实是一个很好的工具。如果想靠它来分析程序的性能,还是需要自己去尝试。有多好,请一起听我说。XML:NAMESPACE PREFIX=O /!-[如果!支持列表] -一,一!--(endif)-安装(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。目前zend_extension加载只支持5.3以上,zend_extension_ts用于5.3(也可以在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:这是一个打开的跟踪项。打开此项后,将在xdbug.trace _ output _ dir下生成一个跟踪文件。注意,这个项目会影响运行速度,因为它需要记录跟踪过程中的一系列事件。关于XDebug还有一点需要注意:XDebug是Debug,也就是说在配置XDebug的时候,程序是在调试状态下运行的,所以此时不能使用zend_optimizer,程序不能同时处于调试和优化状态。关于XDebug的更多信息,让我们在线探索~ ~然后一起讨论。友好提醒:对于使用集成环境的同学,比如Wamp,它有两个PHP.ini配置文件,一个在Apache下,一个在PHP下。Apache影响web,而PHP影响命令行。所以(谢谢葛军的提醒)B:安装PHPUnit:有很多在线安装程序。之前为了最后安装成功写了一篇安装文章(http://user.qzone.qq.com/414073277/blog/1292122868),这里就不赘述了。大多数在线安装教程都可以完成安装。只说过程:phpUnit是用梨的方式安装的,所以如果机器还没有安装梨包,就需要先安装。一般安装PHP时,其安装目录中有一个go-pear.bat文件,可以直接安装。【这里安装的时候要注意扩展exif,会用到mbstring扩展中的方法,所以mbstring的加载顺序需要在exif以上。】安装pear后,可以执行pear,检查pear的命令参数。

然后依次执行: pencil-discoverpear . phpunit . departinstallall deps phpunit/phpunit。需要注意的是,phpunit的最新版本现在是3.5。但是只有pear的版本在1.6以上,PHP5.2.X会安装最新版本。否则,将安装第一个版本(但不会影响使用)。安装后可以执行phpunit查看相关信息:

可以看到有三个选项——coverage-html-coverage-三叶草-coverage-source,只有在成功安装XDebug后才能使用,这三个选项对于导出coverage文件非常重要。-[如果!支持列表] -二!-[endif]-phpunit单元测试覆盖率分析单元测试,最重要的指标之一就是覆盖率。虽然这一点在Zend Studio中可以看得很清楚,但是导出到文档中并不是很好,所以此时XDebug可以再次提供帮助,而且使用起来相当简单,可以调用命令到: phpunitcoverage-html d: \ phpapp \ xdebug \ YouTest会将生成的覆盖文件(以html格式)放入目录d : \ PHPAPP \ XDebug \。

然后,您可以在放置的目录中找到一堆html文件,并运行index.html(9504 . 163.com)。

你可以看到这张照片。英文字母非常简单。意思清楚了就不解释了。说明一点:测试结果显示有5种,上图有2种例子。代表正确f:代表断言错误e:代表PHP程序错误或异常I:代表未实现的方法S :代表跳过的方法产生的覆盖文件说明:Classes:当仅一个类中的所有方法都被覆盖时,这个类可以被视为已测试Functions/Methods:只有当一个方法或函数的所有有效语句代码都已执行时,这个方法或函数才能被视为已测试。行:的总数不会充满注释,空行,php?类和方法的标记和声明。使用phpunitcoverage-三叶草d : \ phpapp \ xdebug \ first . xmlyoutest将生成一个xml格式的文件。这种格式的文件不明显,不如html格式。这里的效果已经被我删除了,没有效果图可以看。我还没有测试第三个覆盖率文件的参数。如果你感兴趣,你可以试试。-[如果!支持列表] -三!--[endif]-程序执行性能分析XDebug不仅可以有效帮助分析单元测试覆盖率,还可以帮助分析程序执行的瓶颈,并启用分析功能:XDebug . profiler _ enable=on XDebug . profiler _ output _ dir=d : \ phpapp \ XDebug设置以上两项,然后执行想要分析的程序,就会看到上面目录中的文件cachegrind.out.XXX。这个文件直接打开时只是一些记录,需要第三方cachegrind查看工具的帮助。winCacheGrind就是一个很好的工具,查看起来非常方便。

您可以看到每个函数的总执行时间和执行时间。因为此工具在打开文件时只能打开cachegrind.out.*文件,所以要分析的文件必须具有此名称。因此,为了保存重命名,这就是为什么我说不建议修改选项xdebug.profiler_output_name。-[如果!支持列表] -四,-[endif]-XDebug库函数XDebug除了上面的方法之外,它还有一些自己提供的函数库,可以在你程序的代码段的任何地方执行。详情请看http://xdebug.org/docs/all_functionsXDebug,的功能,不止这些。因为他的选择余地太大,我还是去http://xdebug.org/docs/看官方说明。可靠!

版权声明:用XDebug调试和单元测试覆盖分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。