Pourquoi nous avons développé un outil de test automatisé pour Reporting Services

Cet article est le premier d’une série visant à présenter les différents outils développés par Syntell inc. afin d’augmenter notre productivité lors de la réalisation de projets BI sous la plate-forme de Microsoft.

Nous avions besoin d’un outil pour réaliser différents types de test sur la plate-forme Microsoft Reporting Services (SSRS):

  • D’intégrité
    Il n’y a pas d’erreurs lors de l’exécution d’un rapport
  • De non régression
    Ce qui fonctionnait fonctionne toujours (test comparatif)
  • De performance
    Permet d’identifier les rapports trop lents
  • Sécurité applicative et personnalisation
    Chaque utilisateur peut voir quelque chose de différent

Avant d’envisager le développement d’une solution maison, nous avons d’abord demandé à notre ami Google si cela n’existait pas déjà:

SSRS Automated Testing
http://consultingblogs.emc.com/stevewright/archive/2009/08/27/unit-testing-report-within-reporting-services-my-theory.aspx

SSRS unit testing suite
http://rsunit.codeplex.com/
http://www.innosphere.ca/Products/SSRSUnitTestingSuite/tabid/110/Default.aspx

Unit Testing SSRS Reports
http://colinramsay.co.uk/diary/2008/03/12/unit-testing-ssrs-reports/

Reporting Services unit testing
http://andrewbutenko.wordpress.com/2009/08/04/reporting-services-2008-unit-testing/

Les solutions présentées par ces différents blogues ne nous convenaient pas pour plusieurs raisons. Voici les principales:

  1. Les rapports que nous développons sont complexes, ont plusieurs paramètres et forment une application où le contexte est maintenu d’un rapport à l’autre.La création d’un jeu d’essai devait donc pouvoir être réalisée simplement en naviguant dans les rapports et en choisissant les bons paramètres (import à partir des journaux (logs) de Reporting Services.Comme il y a un grand nombre de paramètres, les rapports doivent être lancés en HTTP POST et non en HTTP GET. Lors d’une erreur, le détail n’est pas retourné en mode HTTP POST, l’outil doit donc utiliser les services Web d’exécution de rapport afin d’obtenir le détail de ce qui a échoué.
  2. L’intégration à Visual Studio ne faisait pas de sens pour nous car nous modifions fortement les rapports lors du déploiement (via un outil de déploiement permettant l’application d’une configuration propre à un client).Ce que nous voulons tester c’est le rapport tel que déployé dans SharePoint.
  3. L’outil doit pouvoir tester les performance et la charge. Il doit donc pouvoir lancer plusieurs rapports en parallèle (multithreading).
  4. Après l’exécution d’un jeu d’essai, le QA doit pouvoir consulter le statut de l’exécution de chaque rapport (succès/échec, date et heure, durée de l’exécution avec seuils pour alarmes) ainsi que de voir le résultat (MHTML, TIFF et XML) ou le message d’erreur.
  5. Afin de tester la sécurité applicative ou la personalisation de nos rapports, il faut que l’outil puisse lancer les rapports sous une autre identité configurable …
  6. L’outil doit pouvoir être lancé sur la ligne de commande afin d’automatiser des tests ou réchauffer un serveur avant une démonstration (programme hybride Console / Windows Forms).

Comme les solutions proposées ne pouvaient pas répondre à ces exigences, nous avons développé un outil en .NET 4.0 et LINQ to SQL.

Les cas d’utilisation (use case) principaux étaient les suivants:

Besoin Fonctionnalité de l’outil
Vérifier qu’aucun rapport ne retourne d’erreur  Visualisation du statut de chaque exécution
S’assurer qu’aucun rapport n’est trop lent  Seuils configurables pour mettre en évidence les exécutions plus lentes (2 seuils)
Réchauffer un serveur SSRS avant de faire une démonstration Le programme peut s’exécuter en mode console et prendre ses paramètres dans un fichier XML
Voir comment un serveur réagit à la charge Il y a un mode multithread permettant de bombarder un serveur avec une seule instance du programme.
Utiliser une identité spécifique pour exécuter les rapports L’outil permet de stocker l’information de connexion de plusieurs utilisateurs de manière sécuritaire dans la base de données et de les associer à une instance de jeu d’essai.
Exécuter un jeu d’essai sur un autre serveur que celui où le jeu d’essai a été créé / importé Fonctionnalité de recherche / remplacement dynamique pour les instances de jeu d’essai.
Importer les hyperliens à partir des journaux natifs de SSRS La boîte de dialogue d’import permet de filtrer par utilisateur, date, et texte de l’hyperlien. Définir un jeu d’essai est aussi simple que de naviguer sur l’application SSRS puis importer les hyperliens avec la fonction d’import.
Créer une base de données pour héberger des tests individuels L’outils a une fonction pour créer automatiquement la base de données SQL Server et le schéma. Le processus est le même que pour l’ouverture d’une base de données existante à l’exception près qu’il faut taper le nom de la base de données à créer.
Visualiser le résultat d’une exécution précédente dans différents formats Si l’option pour stocker les résultat est activée, l’outil sauvegarde (et permet de visualiser) les rapports en MHTML, TIFF et XML.

Mon prochain article vous présentera l’outil de manière plus visuelle mais voici toujours une capture d’écran:

clip_image001

Si vous avez des questions sur Syntell ou sur nos outils, n’hésitez pas à me contacter.

5 réflexions sur “Pourquoi nous avons développé un outil de test automatisé pour Reporting Services

  1. Bonjour Frédérick,

    Votre article m’a beaucoup intéressé et votre outil correspond à un besoin fort dans mon entreprise.
    Est-ce que vous avez une version d’essai que l’on pourrait tester ?
    Merci,

    Fred :)

    • Bonjour, pouvez-vous m’écrire sur Frederick.Samson@syntell.com? Je serai en mesure de vous envoyer la fiche technique ainsi que la liste détaillée des cas d’utilisation et des fonctionnalités. Si par la suite vous êtes toujours intéressé, une version d’évaluation pourrait vous être fournie. Merci et bonne journée.

    • Bonjour, je n’ai toujours pas eu de vos nouvelles. Donnez-moi votre courriel pour que je puisse vous envoyer de l’information sur notre outil de test. Il y a eu beaucoup d’ajouts cette année et il faudrait que je refasse une nouvelle entrée de blogue avec les details.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s