Est-il raisonnable de ne pas avoir de critères de réussite / d'échec pour un test de résistance

10

Pour plus de clarté, le test de stress que j'ai écrit augmente régulièrement la charge sur le système jusqu'à ce qu'il atteigne un point de rupture. Il fonctionne théoriquement indéfiniment, mais comme les ressources du système sont limitées, il devrait échouer après un certain temps. J'ai une charge attendue pour le système, mais elle est testée séparément dans un test de charge . Le but de ce test de stress est de savoir quelle charge je peux mettre sur le système avant de devoir implémenter la mise à l'échelle.


Je suis en train d'écrire un test de résistance pour un système, et je me demande s'il est logique d'avoir des critères de réussite / échec. De par la nature du test, la charge augmente régulièrement jusqu'à ce qu'elle atteigne un point de rupture (c'est-à-dire qu'elle échoue ). Évidemment, je ne sais pas ce qu'est ce point de rupture à l'avance, et donc aucune attente de la charge que le système peut supporter (en théorie de toute façon).

Maintenant, j'ai d'autres tests de performance pour tester le système sous une charge attendue, etc., pour lesquels je peux facilement définir des critères de réussite / d'échec, et je pourrais utiliser ces critères comme base pour mon test de stress. En d'autres termes, je pourrais définir une ligne de base minimale pour que mon test de stress atteigne, mais je ne suis pas sûr que ce soit la bonne chose à faire (est-ce que cela "duplique" mon autre test?).

J'espère que quelqu'un avec plus d'expérience dans les tests de performance pourra m'aider ici. Quels critères de réussite / échec les autres ont-ils utilisés lors des tests de résistance (le cas échéant)?

Alex
la source
1
Si vous n'avez pas réussi / échoué, pourquoi faites-vous le test?
RemcoGerlich
@RemcoGerlich Je peux donc connaître les limites du système? Cela aidera à la planification des capacités, etc.
Alex
Je pense que la planification de la capacité est l'endroit où vous décidez de la charge minimale que votre système doit pouvoir gérer (vous avez donc un critère de réussite / d'échec).
RemcoGerlich
@RemcoGerlich Peut-être que mes termes sont mélangés, mais en gros j'ai une charge attendue (qui est testée séparément), mais j'utilise ce test de stress pour déterminer à quel moment (c'est-à-dire le nombre d'utilisateurs) je devrai faire évoluer l'infrastructure. Il s'agit d'un test distinct, car les modifications apportées au système peuvent modifier la charge que le système peut gérer, ce qui ne serait pas visible dans un test de charge.
Alex
@Alex, non, vous n'avez pas embrouillé vos termes. Vous décrivez précisément un test de résistance. Le problème que vous avez est qu'il n'y a pas de réussite / échec associé aux tests de stress, il ne peut donc pas être facilement exécuté à l'aide d'outils de «tests unitaires».
David Arno

Réponses:

10

Dans un test de stress, votre travail n'est pas de définir le stress que le sujet devrait être capable de supporter. C'est pour mesurer le stress qu'il faut avant qu'il échoue.

Vous pouvez utiliser les critères de performance pour définir ce qu'est une défaillance sous contrainte. Mais le résultat d'un test de résistance n'est pas réussi / échoué. Il "a échoué après 90 heures d'utilisation inférieure à 100% avec une ventilation compromise à 50%".

candied_orange
la source
une question. Le test de résistance doit-il provoquer une panne du système? En d'autres termes. Le crash est-il ce que nous considérons comme un "échec"?
Laiv
3
@laiv Le test de résistance doit provoquer du stress. Et montrez comment le sujet réagit à ce stress. S'il provoque un plantage du système, cela doit être documenté. Les tests de résistance sont censés provoquer des échecs et montrer ce qu'il faut pour les provoquer. Un plantage du système est un échec, en supposant que le système en panne échoue, ce sont ses exigences de performances. Ils le font généralement.
candied_orange
1

Cela dépend des exigences, si vos exigences spécifient que le résultat attendu pour les performances de l'application est X et que vous avez en fait Y, c'est donc un échec.
Si vous n'avez pas défini d'exigences, vous pouvez donc stresser votre système et collecter des données sur les limites, puis déterminer et documenter ces limites.

Thiago F. Peçanha
la source
0

Vous pouvez facilement mettre à jour votre test de stress principal pour prendre également en charge une vérification de réussite / échec de l'AQ, quelque chose comme «capable d'atteindre / de maintenir la charge X sans se casser». Idéalement, X étant configurable (pour différentes branches de version, par exemple).

Le résultat serait failsi le système se cassait avant que la charge n'atteigne X et passs'il ne se cassait pas. Il suffit d'arrêter d'augmenter la charge une fois qu'elle atteint la valeur X dans un scénario de "maintien".

À mon humble avis, un test automatisé comme celui-ci peut être très utile dans le contexte de CI / CD, en particulier sur les branches de production.

Dan Cornilescu
la source