Aller au contenu
tests-performanceRechercherCtrl K
VuGen3 min de lecture

Scripting Vugen 11.52- Création et utilisation de DLL

Pour gagner en vitesse d'exécution avec VuGen 11.52, remplacer une bibliothèque .h par une DLL : création avec Visual C++ 2010 Express, recherche des dépendances, puis chargement dans le script.

L’essentiel

  • Une bibliothèque .h pose vite des problèmes de performance pour atteindre l'exigence de transactions par seconde.
  • La solution est une DLL créée avec Visual C++ 2010 Express.
  • Les DLL dépendantes se déterminent avec Dependency Walker avant de charger la DLL dans le script VuGen.

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 :

1 – Création d’une DLL avec Visual C++ 2010 Express 2 – Déterminer les DLL dépendantes de la DLL à créer avec MS dependency walker 3 – Créer le script Vugen afin que celui-ci charge correctement la DLL lors d’un test unitaire et en charge

Etape 1 : Configuration de Visual C++ 2010 Express

Télécharger et exécuter la version gratuite Visual C++ 2010 Express

Fichier/Nouveau/Projet :

Visual C++ 2010 Express : menu Fichier, Nouveau, Projet
Fenêtre Nouveau projet : modèle Visual C++ Win32, « Application console Win32 » choisie, projet nommé test
Assistant Application Win32, page d’accueil : cliquer sur Suivant
Assistant, Paramètres de l’application : type DLL, option Projet vide cochée, puis Terminer
Explorateur de solutions : clic droit sur Fichiers sources, Ajouter, Nouvel élément
Fenêtre Ajouter un nouvel élément : catégorie Code, Fichier C++ (.cpp) nommé test, bouton Ajouter

Coller le code :

Code collé dans test.cpp : fonction atoe qui convertit une chaîne en EBCDIC par une table et la range dans une variable LoadRunner avec lr_save_string

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

Clic droit sur le projet test : menu contextuel, entrée Propriétés
Propriétés du projet, Éditeur de liens, Entrée : lrun50.lib du dossier CreatDLL ajoutée en tête des dépendances supplémentaires

Compiler :

Clic droit sur le projet test, entrée Générer
Fenêtre Sortie : génération réussie, test.dll créée dans le dossier Debug du projet (1 a réussi, 0 a échoué)

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 :

Dependency Walker : ouverture de ebcdicascii.dll dans le dossier CreatDLL

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).

Dependency Walker : arbre des dépendances de ebcdicascii.dll, LRUN50.DLL introuvable et erreur « dependency was not found » en rouge

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 :

Journal de rejeu VuGen 11.52 réussi : transactions EbcdicToAscii et AsciiToEbcdic en Pass, résultats ASCII puis EBCDIC affichés

Dans la même catégorie.

↑ ↓ choisirEntrée ouvrirÉchap fermer