Scripting Vugen 11.52- Création et utilisation de DLL
Lorsque nous créons une librairie .h dans Vugen, nous aurons rapidement des problèmes de performance lors de l’utilisation de celle-ci qui ne nous permettra pas d’atteindre à terme l’exigence de transaction par seconde.
Pour augmenter la rapidité d’exécution de la librairie, la solution est de créer une DLL.
Les étapes sont les suivantes :
Etape 1 : Configuration de Visual C++ 2010 Express
Télécharger et exécuter la version gratuite Visual C++ 2010 Express
Fichier/Nouveau/Projet :
Coller le code :
Exemple complet de convertion Ebcdic/Ascii : ebdicascii.h (Clic droit sur le fichier, enregistrer sous)
Ajouter les lignes (dont les définition des fonctions utilisées) en début du code source (la librairie lrun.h est présente dans l’installation de Vugen/Analysis) :
// Librairie Loadrunner
#include “C:\CreatDLL\lrun.h”
// Compilation avec Visual C++ 2010 Express
extern “C” __declspec( dllexport ) int etoa(char* src, char *lrvar);
extern “C” __declspec( dllexport ) int atoe(char* src, char *lrvar);
Créer un répertoire C:\CreatDLL qui contiendra toutes les librairies (DLL, lib, …). Ce répertoire devra être présent sur l’injecteur.
Ajouter le chemin vers la lrun50.lib (cette librairie n’est pas présente dans l’installation de Vugen/Analysis, mais elle est présente dans QTP), voici la V11 : lrun50.zip
Compiler :
Copier la Dll dans C:\CreatDLL.
Etape 2 : Déterminer les DLL dépendantes de la DLL à créer avec MS dependency walker
Charger la Dll avec Dependency Walker :
Copier toutes les DLL manquantes dans C:\CreatDLL jusqu’à ce qu’il n’y ait plus d’erreurs. (les DLL doivent toutes être en 32 bits x86).
Etape 3 : Création d’un script utilisant la DLL
Dans un script Vugen (Web Html/Http), ajouter les lignes suivantes (en commençant par les DLL dépendantes puis notre dll créée).
Action()
{
lr_load_dll(“C:\\CreatDLL\\IEShims.dll”);
lr_load_dll(“C:\\CreatDLL\\msvcr100d.dll”);
lr_load_dll(“C:\\CreatDLL\\shlwapi.dll”);
lr_load_dll(“C:\\CreatDLL\\sysntfy.dll”);
lr_load_dll(“C:\\CreatDLL\\ebcdicascii.dll”);
lr_start_transaction(“EbcdicToAscii”);
etoa(lr_eval_string(“{Ebcdic}”), “Ascii” );
lr_end_transaction(“EbcdicToAscii”,LR_AUTO);
lr_output_message(“Resultat Ascii: %s”, lr_eval_string(“{Ascii}”) );
lr_start_transaction(“AsciiToEbcdic”);
atoe(lr_eval_string(“{Ascii}”), “Ebcdic”);
lr_end_transaction(“AsciiToEbcdic”,LR_AUTO);
lr_output_message(“Resultat Ebcdic: %s”, lr_eval_string(“{Ebcdic}”) );
return 0;
}
Résultat :
Consultant Testing Senior en poste chez Sogeti
Bon article, il faudrait le même en 64 bits.