web-dev-qa-db-fra.com

Test d'un site Web à partir de la ligne de commande Linux

Je recherche un outil pour tester un site web depuis une ligne de commande Linux.

À partir de la sortie, j'ai besoin de connaître la réponse http (codes d'état) mais aussi de comparer le temps qu'il faut pour télécharger les différents éléments du site.

Merci d'avance.

30
Embreau

Vous pouvez essayer wget avec -p option:

wget -p http://site.com

Il vous dira combien de temps il faut pour télécharger chaque élément et les codes retour pour chaque demande.

38
Dan Andreatta

Veuillez consulter Apache Benchmark:

Apache Benchmark

Cela devrait vous donner un aperçu des performances de votre page.

9
andre

Vous voudrez peut-être regarder les options suivantes de curl:

  • --write-out - affiche l'une des variables liées au temps
  • --trace-time - Ajoute un horodatage à chaque trace ou ligne verbeuse
  • --verbose
  • --include - (HTTP) Inclut l'en-tête HTTP dans la sortie.
  • --trace-ascii <file> - Permet un vidage de trace complet de toutes les données entrantes et sortantes, y compris les informations descriptives

Et l'option suivante de wget:

  • --timestamping - Activer l'horodatage

Le sélénium et le curl sont de bonnes options selon votre objectif. De plus, un utilitaire que j'aime beaucoup est twill. Plus d'informations sont disponibles sur http://twill.idyll.org/ .

C'est sympa car il a sa propre langue peu spécialisée pour remplir les formulaires, valider les liens et vérifier les codes de réponse. Comme c'est juste Python, vous pouvez facilement importer les bibliothèques et automatiser vos tests vous-même si vous souhaitez faire quelque chose de différent.

3
McJeff

Utilisez curl pour obtenir l'en-tête de la page et chronométrez le processus:

time curl -I http://yourpage.com | grep HTTP

envelopper cela dans une boucle de temps et vous êtes prêt à partir. De la même manière, vous pouvez vérifier tous les éléments si vous connaissez l'URL.

2
Sideshowcoder

L'outil que vous choisissez dépend de ce que vous voulez mesurer et de la complexité du site.

Si le comportement du site dépend des cookies (par exemple, l'utilisateur doit se connecter), ab/curl/wget (décrit dans d'autres réponses) ne suffira pas. Une solution consiste à utiliser http :: recorder/www :: mechanize .

Toutes les données que vous demandez se trouvent dans vos journaux de serveur Web - et un simple script awk les renverra sous une forme plus lisible.

évaluer le temps nécessaire pour télécharger les différents éléments du site.

Il s'agit d'un très mauvais indicateur de performance (bien qu'il soit utile pour surveiller la santé d'un système de production). À l'exception des ressources volumineuses/lentes telles que les rapports volumineux, les images ISO, les fichiers multimédias, la perception des performances a très peu à voir avec le temps pris pour traiter une seule demande - et il est vraiment difficile de mesurer cela avec précision (simplement en ajoutant% D dans votre journal Apache semble résoudre le problème mais ignore TCP poignées de main, négociation SSL, effets de mise en cache, temps de recherche DNS).

Une meilleure solution consiste à utiliser quelque chose comme Boomerang - mais qui s'exécute dans un navigateur compatible Javascript. Bien que cela donne un meilleur indicateur des performances perçues que le suivi des requêtes HTTP individuelles, il s'appuie sur les événements du navigateur pour dériver une valeur pour les performances - mais les performances reçues concernent tout le temps nécessaire au rendu de la fenêtre d'affichage (encore une fois, il existe des outils pour cela - jetez un œil aux outils filmstrip dans WebPageTest ).

Il y a également l'argument concernant la mesure des performances réellement fournies aux utilisateurs du site (RUM) par rapport aux tests synthétiques.

1
symcbean

essayez un outil en ligne de commande appelé 'siège' comme indiqué ici

1
lefterav

Pour vérifier les en-têtes, j'aime httpie ( docs ).

Installation

pip install httpie --user

Usage

$ http -h http://serverfault.com/q/124952/113899
HTTP/1.1 302 Found
Accept-Ranges: bytes
Age: 0
Cache-Control: private
Connection: keep-alive
Content-Length: 198
Content-Type: text/html; charset=utf-8
Date: Fri, 06 Jan 2017 10:01:06 GMT
Location: http://serverfault.com/questions/124952/testing-a-website-from-linux-command-line
Set-Cookie: prov=392298d9-103e-7dfc-5b55-8738be46cf3b; domain=.serverfault.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Via: 1.1 varnish
X-Cache: MISS
X-Cache-Hits: 0
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
X-Request-Guid: 07a25de4-6e16-4aa8-acfc-12b1bbbc6180
X-Served-By: cache-hhn1543-HHN
X-Timer: S1483696865.976259,VS0,VE187
0
Martin Thoma

Je pense que pour exécuter le test de performance, vous pouvez essayer JMeter . Vous pouvez enregistrer votre test à l'aide du proxy intégré. Il s'exécute également en mode texte, local ou distribué. Vous pouvez enregistrer vos résultats au format csv ou xml. Si vous utilisez le format xml, vous pouvez également stocker le contenu de la page.

0
ghm1014

Si vous avez besoin de quelque chose de plus grand que curl et/ou wget, il y a aussi Selenium

0
Unreason