2010-11-19 81 views
1

Ce n'est pas une question de savoir quels outils de test de stress sont là. J'ai peur que ce soit beaucoup plus dur que ça. (Au moins pour moi)Comment mettre l'accent sur un site dynamique lorsque vous ne savez pas quelles seront les URL à l'avance?

Considérons une architecture reposante pour un forum ou un blog qui génère des ID aléatoires pour chaque publication.

Simuler la création de ces sujets/articles seraient simples, parce que vous souhaitez simplement afficherons des données de formulaire à un point final comme: /article, ou /topic

Mais comment voulez-vous ensuite test de stress commentant les articles/sujets? Ceci est différent, car les commentaires doivent appartenir à un article/sujet, ce qui signifie que vous avez besoin des identifiants de ces éléments. Cependant, si tout ce que vous pouvez faire est de publier des messages, et que vous n'avez aucun moyen d'extraire ces identifiants, vous ne pourrez pas les créer.

Je crée un site qui est similaire à cet égard, et je n'ai aucune idée de comment tester stress la création des commentaires.

J'ai deux idées, et ils sont tous les deux assez horrible:

  1. Générez un système massif à l'avance avec une sorte d'usine, puis le congeler. De là, je suppose que je devrais utiliser une sorte d'automatisation du navigateur pour créer mes «commentaires» sur tout cela. Je suppose que l'automatisation passe par un proxy d'enregistrement, comme le propose JMeter. Ensuite, pour exécuter le test, je recharge la base de données et rejoue le fichier journal massif.
  2. Utilisez l'automatisation du navigateur pour l'ensemble, en tirant parti des liens dynamiques fournis dans la page HTML. La seule option ici serait le sélénium, et vraiment, nous parlons d'une grille de sélénium massive qui serait extrêmement coûteuse. Probablement très difficile à maintenir aussi.

L'option 2 est complètement infaisable à ce que je peux dire, mais l'option 1 semble insupportable. J'espère vraiment que quelqu'un peut proposer quelque chose de plus intelligent.

Répondre

3

Option 1.

Je veux dire, la mise en œuvre relève de côté, vous fondamentalement juste demander un environnement de test. Donc, la réponse est d'en faire un. Quelle que soit la mode:

  • générer
  • Faites une fois recharger
  • aléatorisation il

Peu importe. C'est l'approche à suivre.

Comment tes tests sont-ils en quelque sorte un problème secondaire (test unitaire/navigateur/peu importe, à vous).

Mais vous avez atteint un point où vous devez tester avec des données réelles. Alors faites y arriver.

+0

Je pense que vous avez raison. J'ai cherché une manière sournoise autour de lui, et je ne peux tout simplement pas le voir. –

+0

+1 Je code un CMS pour vivre et c'est ainsi que nous le testons. Cependant, pour moi, les tests unitaires et les tests d'interface utilisateur (c'est-à-dire de navigateur) sont des choses très différentes, donc je ne tomberais pas dans la même affirmation. – orangepips

3

Ceci est un problème courant. Nous le gérons en extrayant les parties dynamiques des URL des réponses du serveur. Je suppose que ce système utilise un client de navigateur Web - ce qui implique que ces URL sont envoyées dans les réponses du serveur. Si elles sont dans les réponses, alors vous pouvez les obtenir. Cependant, puisque vous avez dit "si tout ce que vous pouvez faire est de publier des messages, et vous n'avez aucun moyen de tirer ces identifiants", alors peut-être que ce n'est pas le cas? Dans ce cas, pouvez-vous clarifier?

Nous avons récemment fait beaucoup de tests sur les systèmes Drupal pour nos clients - ce qui a exactement le problème que vous avez décrit. Nous le résolvons en extrayant dynamiquement les ID de la page lorsque l'utilisateur navigue vers la page sur laquelle il veut commenter, ou nous utilisons l'option 1, ou une combinaison des deux. Notez que si vous avez un outil de test de charge à portée de main, la génération de contenu n'est pas trop difficile - utilisez l'outil pour le faire. C'est à dire. exécuter un test de charge de "génération de contenu". En plus de fournir des données utiles de son propre chef, cela vous donnera une base de données de test que vous pourrez ensuite sauvegarder/restaurer si nécessaire pour maintenir votre infrastructure de test. Maintenant, vous pouvez exécuter le test sur un environnement plus réaliste - celui qui a déjà beaucoup de contenu (en supposant, bien sûr, que ce est réaliste pour vos besoins).

Si vous êtes intéressé, je serais heureux de démontrer comment nous résolvons le problème en utilisant notre logiciel (Web Performance Load Tester).

+0

Cela a mon vote, comme c'est comment j'ai testé les wikis et les blogs avant de – BlackGaff

+0

Je ne savais pas que vous pourriez analyser le code HTML résultant dans JMeter. Je pense que je vais utiliser une combinaison de ceci, et un travail de concombre/publication d'HTTP avec un proxy pour me lancer. Merci! –

0

J'ai utilisé Visual Studio pour résoudre ce genre de problème. Visual Studio permet des tests Web codés C# qui peuvent analyser par programme le code HTML retourné et prendre des mesures en fonction de cela.

J'étais en charge de tester un site Web SharePoint et les informations requises à remplir à l'avance. J'ai créé un test de chargement spécifique à la création de pages de contenu «aléatoires» à l'avance. J'ai peuplé une base de données de harnais de test avec les urls à l'avance, permettant un certain contrôle sur les pages qui ont été chargées. Avec une liste des "articles" disponibles et une liste de commentaires potentiels, il est possible de coder un générateur de nombres pseudo-aléatoires (dans une procédure stockée en raison de la nature asynchrone du faisceau de test) pour obtenir une charge reproductible tester. Cela signifiait que le site serait peuplé de la même manière chaque fois que le test de charge était exécuté.

Il faut un certain effort pour créer une manière décente de peupler le site de la chauve-souris, mais le retour de la pertinence du test de charge est assez bon.