View Issue Details

IDProjectCategoryView StatusLast Update
0001066Common[All Projects] Generalpublic2016-04-01 17:34
ReporterXenosAssigned ToXenos 
PrioritynoneSeverityfeatureReproducibilityN/A
Status CloseResolutionfixed 
Product Version 
Target VersionFixed in Version1.0.7 
Summary0001066: Intégrer des tests de perf avec Apache Benchmark (ab.exe)
DescriptionL'idée serait de les intégrer aux projets pour pouvoir tester les performances des différentes pages et d'assurer qu'elles ne sont pas dégradées. A voir si je le fait via ab.exe (simple) ou via Siege (plus complexe, mais avec plus de possibilités).

A voir aussi si c'est vraiment utile (c'est pas nécessaire ni urgent donc bon... ab.exe sera surement simple à mettre en place donc ce sera peut-être une bonne solution pour faire ce genre de tests sans se prendre la tête).
TagsNo tags attached.
Attach Tags

Activities

Xenos

Xenos

2016-03-20 15:39

administrator   ~0001625

C'est mis en place. Je peux donc tester des URIs, déclarées dans un fichier XML. ApacheBenchmark se charge d'exécuter les tests (on peut d'ailleurs définir des cookies, des headers, etc donc il y aura surement moyen d'étendre le XML pour intégrer ces autres options simplement), et les résultats sont alors envoyés à Sonar.

Le tout est fait en pré-déploiement, donc à Chaque déploiement, j'aurai les infos dans Sonar pour savoir si les pages du projet ralentissent ou accélèrent (ou restent stables). Avec, en plus, un mécanisme de pondération de chaque URI (car la page d'accueil aura plus d'importance que la page d'aide, qui aura elle-même plus d'importance qu'une image perdue au fond du projet).

Cela me fait également une bonne référence pour ajouter des métriques customs à Sonar.
Xenos

Xenos

2016-03-30 13:01

administrator   ~0001654

Last edited: 2016-04-01 17:34

En fait, apache benchmark, c'est de la merde, puisqu'on ne peut pas récupérer les résultats dans le stdout (bande de c*ns!)

Du coup, je vais faire autrement:
• J'utilise un fichier de log Apache enregistrant l'URI, le fichier, le code HTTp de la réponse, la durée de traitement et la taille de la réponse => Cela me permet d'avoir ces informations pour n'importe quelle requête reçue par Apache
• Avant de lancer les tests Selenium, je vide ce log
• Je lance les tests Selenium (donc, le log se remplira)
• Une fois ces tests passés, j'ouvre le log et je parse son contenu pour savoir ce qui a été appelé et ce qu'Apache a répondu ainsi que la vitesse de réponse

Ensuite, grâce à un fichier d'uris, je sais quel fichier doit être servi par quelle URI, et quel était le statut HTTP attendu. Si je trouve des requêtes reçues par Apache mais non déclarées dans le uris.xml, alors j'émet une erreur: cela veut dire que j'ai des requêtes que je ne vérifie pas.
Je vérifie que chaque réponse d'Apache a le bon code HTTP (aka, si je ne trouve pas le triplet URI+Fichier+Code HTTP dans uris.xml, alors je considère que la requête est pas bonne)
Je fais ensuite la moyenne des temps de réponse, ainsi que le max, et la moyenne de la taille des réponses, que j'envoie à Sonar (il sauvera ces résultats au prochain scan du projet).
Chaque uri peut enfin être pondérée dans le uris.xml (pour que les URIs les plus visités aient le plus de poids; bien que les URIs les plus visités aient aussi le plus de chances d'apparaitre plusieurs fois dans les tests Selenium)

Ainsi, j'ai Selenium qui simule un utilisateur, et le log Apache qui sauve les infos de performances.

Ce log est de la forme:

    LogFormat "%U %f %>s %{ms}T %B" codecoverage
    CustomLog "E:\Projets\Web\misc\common\tmp\apache-coverage.log" codecoverage

Issue History

Date Modified Username Field Change
2016-03-12 22:20 Xenos New Issue
2016-03-12 22:20 Xenos Status New => Understood
2016-03-12 22:20 Xenos Priority normal => none
2016-03-20 12:28 Xenos Assigned To => Xenos
2016-03-20 12:28 Xenos Status Understood => In progress
2016-03-20 15:39 Xenos Note Added: 0001625
2016-03-20 15:39 Xenos Status In progress => Close
2016-03-20 15:39 Xenos Resolution open => fixed
2016-03-30 13:01 Xenos Note Added: 0001654
2016-04-01 17:34 AutoUpdater Fixed in Version => 1.0.7