Question

J'utilise JMeter pour tester en charge un webservice SOAP. Le webservice existe dans un tas d'endroits, comme mon localhost, une boîte de dev, une boîte d'intégration, une boîte de production, etc.

J'utilise un webservice (SOAP) Demande Sampler et fixer la "Nom du serveur de la propriété intellectuelle", "chemin", et "Action SOAP" paramaters comme ceci:

Server Name of IP: ${SERVER}
Path: ${PATH}/service
SOAPAction: http://${SERVER}${PATH}service#action

Cela fonctionne bien lorsque vous utilisez un élément de configuration « utilisateur Variables définies ». Je viens de changer SERVER et PATH pour tout ce qui est spécifique à l'endroit que je suis en train de frapper. Cependant, cela est plus d'une douleur dans le cul alors je veux traiter. Ce que j'espérais faire (et essayé) était d'ajouter plusieurs Si automates dans mon groupe de discussion et de vérifier $ {MODE} (autre UDV) et agir en conséquence, la mise en place mon serveur et PATH. Donc, j'avais quelque chose comme

"${MODE}" == "dev"
"${MODE}" == "local"
"${MODE}" == "production"

L'un sur chaque contrôleur Si, j'avais un enfant élément UDV configurer le serveur et PATH approprié. Les valeurs de la dernière UDV (par ordre d'apparition dans mon groupe de discussion) a toujours été utilisés, en dépit de mon hypothèse, le contrôleur Si le retour faux garderait le UDV d'être évalué. Cependant, je vois dans les documents que tous les UDVs sont évaluées indépendamment de l'emplacement avant que les discussions sont démarrés. Donc, j'ai essayé d'utiliser Paramaters de l'utilisateur à la place, mais les valeurs de $ {SERVEUR} et $ {PATH} dans mon sampler SOAP ne suis pas remplacé et je fais des demandes à l'adresse http: // $ {SERVEUR} $ {PATH} qui est pas bon.

Il y une façon élégante de gérer cela? Actuellement, je suis simplement copier coller une des valeurs pour le serveur et PATH chaque fois que je dois changer le serveur je frappe. Je sais que je pourrais aussi avoir plusieurs plans de test, un pour chaque serveur, je vais charger test, mais je fais des mises à jour fréquentes à la structure, y compris l'ajout de nouveaux tests, la désactivation de tests existants et la modification de certaines parties des requêtes SOAP afin d'avoir un groupe de eux ne semble pas une bonne solution.

Toute aide?

Était-ce utile?

La solution

Nous avons résolu ce problème avec un échantillonneur BeanShell et des variables définies dans le plan de test lui-même.

Au lieu d'utiliser l'élément « défini par l'utilisateur Variables », vous pouvez définir des variables pour l'ensemble de plan de test. Il suffit de cliquer sur l'élément racine de l'arbre et ajouter une variable appelée « mode » avec le contenu « dev », « local » ou la « production ».

Dans le cas de test ajoutez le Sampler "Bean Sampler Shell" et ajoutez le code suivant:

if ("dev".equals(vars.get("mode"))) {
 vars.put("server","x.y.z");
}
if ("local".equals(vars.get("mode"))) {
 vars.put("server","127.0.0.1");
}
if ("production".equals(vars.get("mode"))) {
 vars.put("server","10.0.0.10");
}

Vous pouvez alors définir toutes les variables dont vous avez besoin et ajouter d'autres environnements en cas de besoin.

Mais vous pouvez aussi aller plus loin une étape: Créer un contrôleur simple et de mettre votre Bean Sampler interpréteur de commandes. Dans tous les ThreadGroups, vous pouvez accéder à ce contrôleur simple avec un contrôleur de module. Dans ce cas, vous devez définir votre sélecteur d'environnement juste une fois pour l'ensemble de plan de test.

Autres conseils

Personnellement, je trouve beaucoup plus facile d'avoir plusieurs modules UDV, tous au niveau supérieur.

Je les garde tous désactivés, sauf celui que je veux utiliser.

Je vois qu'il ya tellement de façons de faire la même chose; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top