ホームページ 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加载,<5.3的用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 オプションを変更することはお勧めできないと言っているのはこのためです。

< ;!--[endif]--> XDebug上記のメソッドに加えて、プログラムのコード セグメントのどこでも実行できる独自の関数ライブラリもいくつかあります。詳細については、 を参照してください。

http://xdebug.org/docs/all_functions

🎜の機能>http://xdebug.org/docs/公式の手順はこちらを参照してください。信頼性のある!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP開発でのモックテストにPHPUnitを使用する方法 PHP開発でのモックテストにPHPUnitを使用する方法 Jun 27, 2023 am 10:25 AM

PHP 開発において、テストは非常に重要なリンクであり、テストによりエラーの発生を大幅に減らし、コードの品質を向上させることができます。モック テストは、コードの特定の機能やシナリオをテストするために、偽のオブジェクトやデータをシミュレートできるテスト形式です。 PHPUnit は PHP で非常に人気のあるテスト フレームワークであり、モック テストをサポートします。この記事では、PHPUnit を模擬テストに使用する方法を検討します。 1. 模擬テストとは何ですか? 始める前に、まず説明しましょう

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 を使用する方法を説明します。ステップ 1: コード仕様を確認する PHP 開発では、PSR (PHP 標準仕様) と呼ばれる非常に一般的なコード仕様があります。 PSR 仕様の目的は、PHP コードをより読みやすく、保守しやすくすることです。で

PHP のコード検査ツール PHP のコード検査ツール May 24, 2023 pm 12:01 PM

コードの品質をチェックすることは、すべてのプログラマーが行う必要があるタスクです。PHP には、コードの品質とスタイルをチェックするために使用できるツールが多数あります。これにより、コードの可読性と保守性が向上し、コードの信頼性とセキュリティが向上します。コード、性別。この記事では、いくつかの一般的な PHP コード検査ツールを紹介し、それらの簡単な比較と評価を行います。読者が開発プロセス中に適切なツールを選択し、コードの品質と効率を向上させるのに役立つことを願っています。 PHP_CodeSnifferPHP_CodeSniffer は広く使用されています

PHPUnit と Mockery を単体テストに使用するにはどうすればよいですか? PHPUnit と Mockery を単体テストに使用するにはどうすればよいですか? May 31, 2023 pm 04:10 PM

PHP プロジェクト開発において、単体テストは非常に重要なタスクです。 PHPUnit と Mockery は、2 つの非常に人気のある PHP 単体テスト フレームワークです。PHPUnit は広く使用されている単体テスト ツールであり、Mockery は、オブジェクト モックを作成および管理するための統一された簡潔な API の提供に重点を置いたオブジェクト シミュレーション ツールです。 PHPUnit と Mockery を使用することで、開発者は単体テストを迅速かつ効率的に実行して、コード ベースの正確性と安定性を確認できます。

PHP プログラミングにおける一般的なコード品質ツールは何ですか? PHP プログラミングにおける一般的なコード品質ツールは何ですか? Jun 12, 2023 am 08:16 AM

PHP プログラミングにおける一般的なコード品質ツールは何ですか?現代のソフトウェア開発では、コードの品質が非常に重要です。コードの品質が良くないと、コードの可読性が低下し、メンテナンスが困難になるだけでなく、セキュリティの脆弱性などのさまざまな問題が発生します。 PHP プログラミングでは、いくつかのコード品質ツールを使用してコードの品質をチェックできます。この記事では、一般的な PHP コード品質ツールをいくつか紹介します。 PHP_CodeSnifferPHP_CodeSniffer は、PHP コードの静的分析のためのツールです。

PHP単体テストにPHPUnitを使用する方法 PHP単体テストにPHPUnitを使用する方法 May 12, 2023 am 08:13 AM

ソフトウェア開発業界の発展に伴い、テストは徐々に不可欠な部分になってきました。ソフトウェア テストの最も基本的な部分である単体テストは、コードの品質を向上させるだけでなく、開発者のコ​​ードの開発とメンテナンスを高速化することもできます。 PHP の分野では、PHPUnit は非常に人気のある単体テスト フレームワークであり、高品質のテスト ケースの作成に役立つさまざまな機能を提供します。この記事では、PHP 単体テストに PHPUnit を使用する方法について説明します。 PHPUnitをインストールしてPHPUnitを使用する

See all articles