Page 1 sur 1

Tests unitaires, profilage, tests de regression

Posté : 18 oct. 2011, 22:27
par katagoto
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

Re: Tests unitaires, profilage, tests de regression

Posté : 19 oct. 2011, 15:57
par Berzemus
Pour un projet ou les performances cruciales, il faut un langage ou la performance est cruciale.

J'ai été utile la ? :twisted:

Re: Tests unitaires, profilage, tests de regression

Posté : 19 oct. 2011, 17:01
par ouckileou
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/

Re: Tests unitaires, profilage, tests de regression

Posté : 19 oct. 2011, 17:06
par ouckileou
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.

Re: Tests unitaires, profilage, tests de regression

Posté : 20 oct. 2011, 20:07
par katagoto
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.

Re: Tests unitaires, profilage, tests de regression

Posté : 20 oct. 2011, 20:24
par ouckileou
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 ? ;)

Re: Tests unitaires, profilage, tests de regression

Posté : 20 oct. 2011, 22:22
par katagoto
Justement, je n'arrive pas à déterminer de quoi il s'agit...

Re: Tests unitaires, profilage, tests de regression

Posté : 02 déc. 2011, 16:48
par mere-teresa
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