Tests unitaires, profilage, tests de regression

Mammouth du PHP | 1668 Messages

18 oct. 2011, 22:27

Bonsoir/Bonjour à toutes et à tous,

Je vais rentrer dans un projet où les performances sont cruciales, ainsi je cherche un outils pour pouvoir effectuer des tests unitaires, profiler mon code (connaitre les endroits qui consomment le plus de temps, de mémoire, si possible le nombre d'itération moyen de chaque boucle, etc.). Dans l'ordre de mes préférences :
  • Qu'il soit un seul outil (pour l'instant je n'ai trouvé que Xdebug et PHPUnit)
  • Qu'il soit précis
  • Qu'il soit en ligne de commandes
  • Qu'il s'interface avec ViM et/ou Mercurial
  • Que la syntaxe des TU soit simple (mais pour être franc ça ne me dérange pas de faire un petit script...)
Le projet devrait comporter entre 5.000 et 100.000 tests et j'aimerais que le rapport de tests soit très détaillés (partie lentes, consommatrices, régressions, etc.)

Quels outils utilisez-vous ?

Par avance,
Merci
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4039 Messages

19 oct. 2011, 15:57

Pour un projet ou les performances cruciales, il faut un langage ou la performance est cruciale.

J'ai été utile la ? :twisted:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 oct. 2011, 17:01

Ca m'etonnerait que tu trouves du tout en un.

Pour les tests unitaires tu as Atoum: https://github.com/mageekguy/atoum
Je ne connais pas, j'en ai juste entendu parler. Profilage en PHP je ne connais rien.

Pour le reste, qu'est-ce que ca veut dire "qu'il soit precis". Et interface avec Vim et Mercurial ? Je ne comprends pas, Mercurial ou n'importe quel outil de suivi de version gere ce que tu veux donc tes tests unitaires aussi que voudrais-tu de plus ?

Enfin, ca n'est pas vraiment ta question mais pour realiser des tests de performances (voir comment ton appli repond face a une grosse montee en charge) il y a JMeter qui est tres bien : http://jakarta.apache.org/jmeter/

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 oct. 2011, 17:06

En cherchant "QA tools PHP" j'ai trouve cet article, il y a pas mal de liens : http://sebastian-bergmann.de/archives/8 ... r-PHP.html

Et apparamment, tu peux aussi utiliser Clover pour recuperer les resultats de PHPUnit, je ne savais pas : https://wiki.jenkins-ci.org/display/JEN ... PHP+Plugin

Jenkins ou tout autre plateforme d'integration continue, c'est a mettre dans ton projet aussi, je pense.

Mammouth du PHP | 1668 Messages

20 oct. 2011, 20:07

Bonsoir,

Merci pour les liens : ce sont des mines d'or :)

Pour moi précis ça signifie, dans ce cas là, qu'il soit capable de me dire que telle boucle me prends 5% de mon temps, qu'elle à fait 42 itérations, etc.
L'interfaçage avec Mercurial : en gros me dire que entre telle et telle commit, les performances d'une ou de tout mon code ont variées de tant de pour-cents.
L'interfaçage avec ViM, c'est que je puisse, simplement en coupant mon écran avoir les résultats.

Pour être franc je cherchais un outils dans le genre de la figure 6-8 de la page 147 dans Best Practices PHP 5 de Guillaume Ponçon, c'est à dire le pourcentage de temps d'exécution de chaque partie de mon code.
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 oct. 2011, 20:24

Precise je pense que c'est la base d'un outil de profilage, interface avec Mercurial je ne pense pas que ce soit du ressort de cet outil mais je dirais d'une plateforme d'integration qui elle peut integrer les resultats et afficher des variations entre les builds. Quand a l'interface avec Vim, je comprends toujours pas bien generalement un outil de profilage va te generer un rapport, en XML ou HTML par exemple, et tu l'ouvres avec ce que tu veux. Enfin bon peut-etre que tu connais des trucs en plus :)

Et c'est quoi l'outil de la figure 6-8 de la page 147 dans Best Practices PHP 5 de Guillaume Ponçon ? Parce que tu pourrais peut-etre le reutiliser directement non ? ;)

Mammouth du PHP | 1668 Messages

20 oct. 2011, 22:22

Justement, je n'arrive pas à déterminer de quoi il s'agit...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

02 déc. 2011, 16:48

Le pourcentage de temps d'exécution de chaque partie, tu peux l'avoir avec KCacheGrind/WinCacheGrind (qui exploite en fait un profiling fait par XDebug, voir la doc : http://xdebug.org/docs/profiler) ou XHProf.
Sinon, pas mal d'outils sont listés sur le site PHP To The Moon : http://phptothemoon.com/fr/content/tools-quality-php
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.