how automate repetitive qa tasks using excel macros
Ce guide détaillé sur l'état d'esprit des macros de QA explique comment automatiser les tâches répétitives de QA à l'aide de macros Excel avec des exemples et des captures d'écran de feuilles Excel:
Le besoin d’automatisation dans le monde d’aujourd’hui est l’une des demandes essentielles et croissantes. Aujourd'hui, tout le monde cherche quelque chose qui facilite son travail ou les tracas liés au travail de routine.
De nos jours, personne ne veut visiter un magasin mobile, faire la queue pour recharger son téléphone, il est pratique de ne se rendre physiquement nulle part mais de recharger le téléphone en ligne en une fraction de seconde.
En commençant par le paiement de vos factures de services publics via la banque en ligne, la réservation et le suivi de votre taxi en ligne, l'achat en ligne sur divers sites de commerce électronique jusqu'à l'utilisation de différents appareils automatisés tels que des machines à laver, un micro-ondes, un geyser et les smartphones en constante évolution, etc., le monde d'aujourd'hui est vraiment envie de produits intelligents et automatisés sous forme de services ou de gadgets.
Dans cet article, nous n'allons pas discuter de l'utilisation d'un outil d'automatisation ou de quoi que ce soit sur l'intelligence artificielle ou l'apprentissage automatique, mais l'accent sera mis sur la simple utilisation d'Excel pour automatiser les tâches de routine quotidiennes d'un AQ.
Ce que vous apprendrez:
- L'état d'esprit macro du contrôle qualité
- Réglage du contexte rapide
- Exemple d'utilisation n ° 1
- Exemple d'utilisation n ° 2
- Exemple d'utilisation n ° 3
- Exemple d'utilisation n ° 4
- Code VBA (macro) pour la feuille d'estimation
- Code VBA (macro) pour la feuille de graphiques
- Façons d'exécuter une macro
- Ajouter un bouton de contrôle de formulaires dans Excel
- Conclusion
L'état d'esprit macro du contrôle qualité
Les testeurs manuels pensent généralement que le fait d’être un testeur manuel n’a rien à voir avec quoi que ce soit de technique ou en d’autres termes, «le savoir-faire en matière de codage n’est pas ma tasse de thé». C'est probablement le mauvais état d'esprit qui pourrait arrêter notre croissance en tant qu'ingénieurs.
Un contrôle qualité manuel comporte de nombreuses tâches quotidiennes qui peuvent être répétitives suivant le même flux de travail. Un AQ peut très bien identifier ces tâches et les automatiser à l'aide de macros Excel et / ou des formules.
Cela pourrait aider de deux manières:
- Réduit le temps consacré aux efforts manuels.
- En outre, inspire l'AQ à apprendre et à s'adapter à la pensée logique et à l'amélioration des compétences sur le plan technique.
Les choses peuvent être automatisées pour toutes les phases de test répertoriées ci-dessous:
- Planification et estimation des tests.
- Conception de test ou préparation de cas de test.
- Mise à jour de l'état d'exécution des tests.
- Rapport de test et création de métriques.
Réglage du contexte rapide
#1) Un excel enregistré avec. L'extension xlsxm est un Excel prenant en charge les macros.
#deux) Afin d'activer la macro sur un Excel, sélectionnez Fichier -> Options -> Centre de gestion de la confidentialité -> Paramètres du centre de confiance -> Paramètres des macros -> Sélectionnez le bouton radio 'Activer toutes les macros' et cochez la case «Faire confiance à l'accès au modèle objet du projet VBA». Cliquez sur OK.

# 3) Sélectionnez le menu Affichage -> Macros -> Enregistrer les macros -> Effectuer une activité et arrêter les macros . Vous pouvez modifier la macro et afficher le code VBA enregistré dans le Éditeur VBA la fenêtre. De même, vous pouvez ajouter vos codes explicitement pour créer une macro.

# 4) Nous allons jeter un œil à certains exemples de telles tâches répétitives qui pourraient être de bons candidats pour l'automatisation via des macros / formules Excel.
Exemple d'utilisation n ° 1
À la fin de chaque phase fonctionnelle, certains cas de test doivent être identifiés pour la régression à partir de la suite fonctionnelle. C'est un processus à suivre dans chaque sprint ou itération.
Solution
Pour réduire l'effort d'identification et de création manuelle d'une suite de régression, le processus innovant ci-dessous peut être mis en œuvre.
- Vous pouvez créer une feuille avec des cas de test fonctionnel avec une colonne supplémentaire pour marquer les cas de test / scénarios comme Oui / Non pour la régression.
- Ensuite, créez une macro pour la même chose, de sorte que lorsque la macro s'exécute, tous les cas de test / scénarios avec une régression marquée comme «Oui» soient copiés sur une autre feuille.
- Ainsi, cela évitera un exercice supplémentaire consistant à parcourir tous les cas de test fonctionnels à la fin du sprint, puis à faire des efforts supplémentaires pour extraire chaque cas de test dans la suite de régression.
Démo
- La première feuille «FunctionalTestScenarios» contient tous les scénarios de test fonctionnel / cas de test.
- Il y a une colonne supplémentaire 'Inclure dans la suite de régression?' ajouté à la fin des colonnes de test pour marquer «Oui» ou «Non» en identifiant si chacun des scénarios de test doit être inclus dans la suite de régression.
- Il y a une deuxième feuille créée comme «RegressionSuite» et cela récupérera automatiquement tous les scénarios de test de régression via la macro.
- CTRL + SHIFT + S est défini comme le raccourci pour la macro à exécuter.
Scénarios de test fonctionnel

RegressionSuite

Code VBA (macro)
Sub RegressionSuite() ' Keyboard Shortcut: Ctrl+Shift+S Sheets('FunctionalTestScenarios').Activate Rows('1:1').Select Selection.AutoFilter Sheet1.Range('$A:$D').AutoFilter Field:=4, Criteria1:='Yes' Lastrow=Sheets('FunctionalTestScenarios') .Cells(Sheets('FunctionalTestScenarios').Rows.Count, 'A').End(xlUp).Row Range('A2:C2' & Lastrow).Select Selection.Copy Sheets('RegressionSuite').Select Range('A2').Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False End Sub Explication du code
- Feuilles («FunctionalTestScenarios»). Activer: Lorsqu'il existe plusieurs feuilles dans Excel, la méthode Activate active la première feuille et, par conséquent, le focus est explicitement défini sur la première feuille.
- Lignes («1: 1»). Sélectionnez: Cette instruction sélectionne la première ligne pour toutes les colonnes de la première feuille.
- Selection.AutoFilter: Cette instruction applique le filtre sur la première ligne sélectionnée.
- Sheet1.Range ('$ A $ 1: $ D $ 38'). Champ de filtre automatique: = 4, Criteria1: = 'Oui': Cette déclaration applique le filtre automatique sur la colonne numéro 4, c'est-à-dire 'Inclure dans la suite de régression?' et filtre les enregistrements pour la valeur «Oui».
- Lastrow = Sheets («FunctionalTestScenarios»). Cells (Sheets («FunctionalTestScenarios») .Rows.Count, «A»). End (xlUp) .Row: Cette instruction obtient le dernier nombre de lignes de la première feuille.
- Plage («A2: C2» et Lastrow). Sélectionnez: Cette instruction sélectionne toutes les lignes et colonnes de la première feuille avec Inclure dans la suite de régression? = Oui.
- Selection.Copy: Cette instruction copie tous les enregistrements sélectionnés.
- Sheets («RegressionSuite»). Sélectionnez: Cette déclaration ouvre le 2ndfeuille.
- Plage («A2»). Sélectionnez: Cette instruction sélectionne la cellule A2 du 2ndfeuille.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Cette instruction copie la valeur de la cellule sélectionnée source dans la feuille de destination. La plage de cellules de destination contient uniquement les valeurs calculées à l'aide des formules. Alternativement, Paste: = xlValues peut également être utilisé. Aucun espace n'est ignoré. Les cellules sources ne sont pas transposées et aucune opération mathématique n'est effectuée.
Exemple d'utilisation n ° 2
Il y a des moments où vous devez créer des cas de test pour, par exemple, 100 États ou 1000 entités (comme 1000 formulaires d'assurance). Les étapes de test pour cette énorme liste d'états ou d'entités pourraient être les mêmes et répétitives.
Malgré cela, la préparation des cas de test pourrait être l'une des activités les plus chronophages, il est très important d'avoir le document de cas de test en place pour adhérer aux estimations requises du client et demander à l'équipe d'assurance qualité de tester chacun des cas de test dans les délais correctement estimés.
Solution
Dans de tels cas, de longues heures d'efforts de préparation de cas de test peuvent être réduites à une fraction de secondes à l'aide de la macro.
- Vous pouvez créer une feuille dans laquelle vous fournissez simplement l'entrée en tant qu'ID de cas de test et la liste unique d'entités.
- Créez une macro qui, une fois exécutée, ajoute des lignes répétitives d'étapes de test pour chacune de ces entités et le document de cas de test est prêt en quelques secondes sans avoir à dépenser les efforts manuels nécessaires pour préparer les cas de test.
Démo
- La première feuille «GetTestcasesASAP» est la seule feuille pilotée par macro ici qui est vierge au départ.
- Une autre feuille «Exemple de données d’entrée» ne joue aucun rôle dans la macro. Il contient simplement les exemples de données d'entrée à des fins de démonstration.
- Copiez-collez les données de la plage de données d'entrée d'échantillon A2 à B12 dans la première feuille.
- Vous pouvez copier-coller les données d'entrée au format - Colonne A = ……. et Colonne B =.
- Une fois que les données d'entrée sont prêtes, appuyez sur CTRL + MAJ + T comme touches de raccourci pour la macro à exécuter.
- Des étapes de test sont automatiquement ajoutées pour chaque ID de scénario de test et le document de scénario de test est préparé en quelques secondes.
GetTestcasesASAP

Exemple de données d'entrée

Les données d'entrée sont collées dans la première feuille.

Image pendant l'exécution de la macro en appuyant sur CTRL + SHIFT + T.

Code VBA (macro)
Sub GetTestcasesQuick() ' GetTestcasesQuick Macro ' Keyboard Shortcut: Ctrl+Shift+T Sheets('GetTestcasesASAP').Activate lastrow =Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row Dim AddRows As Integer AddRows = 5 Dim i As Integer i = lastrow Do While i <> 1 Rows(i & ':' & i + AddRows).Insert i = i - 1 Loop ScreenUpdating = True lastrow = Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row i = 2 While i <= lastrow + 6 Sheets('GetTestcasesASAP').Cells(i, 3) = 'Validate rates-factor combinations' Sheets('GetTestcasesASAP').Cells(i + 1, 3) = 'Batch job schedules and runs. ' Sheets('GetTestcasesASAP').Cells(i + 2, 3) = 'Commissioning calculations settlements' Sheets('GetTestcasesASAP').Cells(i + 3, 3) = 'Quick and detailed quote' Sheets('GetTestcasesASAP').Cells(i + 4, 3) = 'Benefit illustration ' Sheets('GetTestcasesASAP').Cells(i + 5, 3) = 'Benefit summary validation' i = i + 7 Wend End Sub Explication du code
(a) Sheets («GetTestcasesASAP»). Activez: Cette instruction active la première feuille.
questions et réponses pour les entretiens
(b) lastrow = Sheets ('GetTestcasesASAP'). Cells (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp) .Row: Cette instruction obtient le dernier nombre de lignes. Cette fois, il obtiendra le nombre total de lignes pour les ID de cas de test initiaux qui viennent d'être ajoutés en tant que partie des données d'entrée avant l'exécution de la macro.
(c) Dim AddRows As Integer: Cette instruction déclare la variable AddRows comme un type de données entier.
(d) AddRows = 5: Cette instruction initialise AddRows avec 5. La variable est utilisée pour insérer quelques lignes après chaque id de cas de test afin que des étapes de test statiques puissent être ajoutées pour chaque cas de test.
(e) Dim i As Integer: Cette instruction déclare la variable i comme entier.
(f) i = lastrow : Cette instruction affecte le nombre initial de dernières lignes à la variable i.
(g) Faire pendant que je 1 : Cette boucle while insère 6 lignes vides après chaque id de cas de test. La boucle commence à partir du dernier identifiant de cas de test en cours jusqu'au premier identifiant de cas de test.
Lignes (i & «:» & i + AddRows) .Insérer
i = i - 1
Boucle
(h) ScreenUpdating = Vrai : Cette déclaration rend visible chaque mise à jour d'écran. Par conséquent, les performances de la macro peuvent être légèrement lentes. Afin d'optimiser les performances de la macro, vous pouvez également définir ScreenUpdating = Faux .
La définition de ScreenUpdating sur False améliore les performances de la macro et accélère son exécution. Cependant, vous ne pourrez pas voir les modifications intermittentes qui ont lieu pendant l'exécution de la macro. Au lieu de cela, les modifications n'apparaîtront qu'une fois l'exécution de la macro terminée.
(i) lastrow = Sheets ('GetTestcasesASAP'). Cells (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp) .Row : Cette instruction calcule à nouveau le nombre de dernières lignes après l'ajout de 6 nouvelles lignes pour chaque scénario de test.
(j) i = 2
(k) Alors que je<= lastrow + 6
Sheets ('GetTestcasesASAP'). Cells (i, 3) = 'Valider les combinaisons taux-facteurs'
Sheets ('GetTestcasesASAP'). Cells (i + 1, 3) = 'Le travail par lots planifie et s'exécute. '
Sheets ('GetTestcasesASAP'). Cells (i + 2, 3) = 'Mise en service des règlements des calculs'
Sheets ('GetTestcasesASAP'). Cells (i + 3, 3) = 'Devis rapide et détaillé'
Sheets ('GetTestcasesASAP'). Cells (i + 4, 3) = 'Illustration de l'avantage'
Sheets ('GetTestcasesASAP'). Cells (i + 5, 3) = 'Validation du résumé des avantages'
i = i + 7
Appliquer
Cet extrait de la boucle while ajoute 6 étapes d'étapes de test statiques pour chaque testcase en définissant ces lignes ultérieurement après chaque ID de testcase.
Les étapes de test statique ajoutées pour chaque scénario de test sont les suivantes:
- Étape 1: Validez les combinaisons taux-facteurs.
- Étape 2: Le travail par lots planifie et s'exécute.
- Étape 3: Mise en service des calculs des règlements.
- Étape 4: Devis rapide et détaillé.
- Étape 5: Illustration des avantages.
- Étape 6: Validation du résumé des avantages.
En outre, il pousse également le prochain cas de test Id dans la séquence à 6 + 2, c'est-à-dire 8erangée.
Par exemple: Si TC1 est sur la première ligne, les étapes sont ajoutées de la deuxième à la septième lignes et TC2 est poussé vers la huitième ligne. Une méthode similaire est suivie pour le reste des ID de cas de test.
Exemple d'utilisation n ° 3
Il y a des cas où un énorme fichier de données quelque part près de 1000 enregistrements ou plus est fourni par le client et l'écriture de cas de test pour ces enregistrements colossaux et la mise en correspondance de chaque donnée avec chaque étape de test est un travail fastidieux. La macro peut réduire les jours d'effort à quelques minutes, économisant ainsi le temps de préparation du cas de test.
Solution
Le fichier de données fourni par le client peut être copié dans la feuille prenant en charge les macros. Lors de l'exécution de la macro, les cas de test sont créés automatiquement dans la deuxième feuille en mappant automatiquement les données de test avec chaque étape de test pour chaque cas de test.
Démo
- La première feuille «InputFile» et la deuxième feuille «ReadyTestCases» sont les principaux contributeurs de la macro.
- Une autre feuille «Sample -InputFile» ne joue aucun rôle dans la macro. Il contient simplement l'exemple de fichier de données d'entrée à des fins de démonstration.
- Une fois les données de «Sample-InputFile» ou le fichier de données fourni par le client est copié dans la première feuille, c'est-à-dire «InputFile»,
- Exécutez la macro et les cas de test sont automatiquement créés pour chaque cas de test où les ID de commande sont définis comme ID de cas de test ( Noter: N'oubliez pas de placer l'identifiant unique placé dans la première colonne du InputFile).
- Pour le moment, nous n'avons pas de touche de raccourci définie pour l'exécution de la macro au lieu de cela, nous devons l'exécuter via l'option d'exécution sur le Affichage -> Macros -> Sélectionnez la macro -> Modifier -> Fenêtre VBA.
- Le code de macro gère l'ajout d'étapes de test de manière dynamique. Il vérifie, à la fin, si l'une des valeurs de champ est vide, si oui, il supprime l'étape de test pour la même chose que l'étape ne serait pas requise pour un champ vide. Par exemple, si vous regardez le fichier d'entrée ci-dessous, le 2ndrecord n'a aucune valeur pour la date d'expédition et la troisième ligne n'a aucune valeur pour la région. Par conséquent, après l'exécution de la macro, les cas de test qui sont créés automatiquement n'auront pas d'étapes de test correspondant à ces valeurs vides.
Échantillon- InputFile

InputFile: après avoir copié les données de collage de l'échantillon InputFile vers InputFile
Noter:
- Ne collez pas l’en-tête de colonne de la feuille ‘Sample-InputFile’.
- Les champs surlignés en jaune sont vides, donc les étapes de test correspondant à ces valeurs vides ne doivent pas être créées via la macro.

Image de la feuille ReadyTestcases après l'exécution de la macro.

Code VBA (macro)
Sub Macro1() ScreenUpdating = False '-------- Assign the first column value of Inputfile sheet to first column of ReadyTestCases sheet' This is the TC Id -- ThisWorkbook.Sheets('InputFile').Activate nrow = ThisWorkbook.Sheets('InputFile').Cells(Rows.Count, 1).End(xlUp).Row ncol = ThisWorkbook.Sheets('InputFile').Cells(1, Columns.Count).End(xlToLeft).Column i = 1 j = 1 For i = 1 To nrow ThisWorkbook.Sheets('ReadyTestCases').Cells(i, 1) = ThisWorkbook.Sheets('InputFile').Cells(i, 1) Next i ' ---------------------Inserting 20 buffer blank rows for each row in InputFile sheet--------- lastrow = Sheets('InputFile').Cells(Sheets('InputFile').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('InputFile').Activate AddRows = 21 i = lastrow Do While i <> 1 Rows(i &; ':' & i + AddRows - 1).Insert i = i - 1 Loop ' Inserting 21 buffer blank rows for each row in ReadyTestCases sheet----------- lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('ReadyTestCases').Activate AddRowsTC = 21 j = lastrow Do While j <> 1 ' 1 because we dont need extra blank lines after last row Rows(j & ':' & j + AddRowsTC - 1).Insert j = j - 1 Loop '------- Input values into ReadyTestCases sheet from each row of inputfile sheet lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row Dim a a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a,3) = ThisWorkbook.Sheets('InputFile').Cells(a, 2) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 3) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 4) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 5) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 6) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 7) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 8) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 9) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 10) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 11) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 12) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 13) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 14) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 15) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 16) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 17) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 18) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 19) a = a + 21 Next a '------- Add verbiages reserved for each row lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'C').End(xlUp).Row a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a, 2) = 'Verify Order Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 2) = 'Verify Ship Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 2) = 'Verify Ship Mode' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 2) = 'Verify Customer Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 2) = 'Verify Customer Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 2) = 'Verify Segment' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 2) = 'Verify City' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 2) = 'Verify State' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 2) = 'Verify Postal Code' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 2) = 'Verify Region' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 2) = 'Verify Product Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 2) = 'Verify Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 2) = 'Verify Sub-Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 2) = 'Verify Product Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 2) = 'Verify Sales' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 2) = 'Verify Quantity' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 2) = 'Verify Discount' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 2) = 'Verify Profit' a = a + 21 Next a '------Second last step- remove blank rows from ReadyTestCases and InputFile----- Deleteblankrows ('ReadyTestCases') 'call Delete blank row function for TC sheet ScreenUpdating = True End Sub ‘-------------------------------------------------------------------------------- Sub Deleteblankrows(ByVal Sheet As String) Dim wks As Worksheet Set wks = ThisWorkbook.Worksheets(Sheet) Dim i As Long wks.Activate lastrow = wks.Cells(Sheets(Sheet).Rows.Count, 'C').End(xlUp).Row With ActiveSheet For i = 1 To lastrow 'check each row of column B , if any row is empty then countA=0, delete that entire row If WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 3))) = 1 Then Selection.Rows(i).EntireRow.Delete End If Next i End With End Sub Explication du code
# 1) ScreenUpdating = False: Les mises à jour d'écran ne seront pas visibles en définissant ScreenUpdating sur False.
# 2) ThisWorkbook.Sheets («InputFile»). Activer: Cette instruction active la feuille «InputFile».
# 3) nrow = ThisWorkbook.Sheets ('InputFile'). Cells (Rows.Count, 1) .End (xlUp) .Row: Cette instruction obtient le nombre de lignes totales.
# 4) ncol = ThisWorkbook.Sheets ('InputFile'). Cells (1, Columns.Count) .End (xlToLeft) .Column: Cette instruction obtient le nombre de colonnes totales.
# 5) i = 1: Cette instruction initialise i avec 1.
# 6) j = 1: Cette instruction initialise j avec 1.
# 7) Pour i = 1 To nrow
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (i, 1) = ThisWorkbook.Sheets ('InputFile'). Cellules (i, 1)
Ensuite je : Cet extrait de copie de la boucle For colle la valeur de la première colonne (ID de commande dans ce cas) de la feuille «InputFile» dans chaque ligne de la feuille «ReadyTestCases» en tant qu'ID du scénario de test.
# 8) lastrow = Sheets («InputFile»). Cells (Sheets («InputFile»). Rows.Count, «A»). End (xlUp) .Row: Cette instruction recalcule le nombre de dernières lignes de InputFile.
# 9) AddRows = 21: Cette instruction affecte 21 à la variable AddRows. Cette variable a été assignée 21 avec l'intention d'insérer 21 lignes vierges supplémentaires pour chaque cas de test pour l'ajout d'étapes de test.
# 10) i = lastrow: Cette instruction attribue le dernier nombre de dernières lignes à i.
# 11) Faire pendant que je 1
Lignes (i & «:» & i + AddRows - 1) .Insérer
i = i - 1
Boucle : Cette instruction ajoute 20 lignes pour chaque cas de test en commençant par le bas vers le haut.
# 12) lastrow = Sheets («ReadyTestCases»). Cellules (Sheets ('ReadyTestCases'). Rows.Count, 'A'). End (xlUp) .Row: Cette instruction recalcule le dernier nombre total de lignes.
# 13) ThisWorkbook.Sheets («ReadyTestCases»). Activer: La deuxième feuille est activée via cette instruction.
# 14) Dim à: Cette instruction déclare la variable a.
# 15) a = 1: Cette instruction affecte 1 à a.
# 16) Pour a = 1 To lastrow
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 2)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 1, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 3)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 2, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 4)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 3, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 5)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 4, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 6)
ThisWorkbook.Sheets («ReadyTestCases»). Cells (a + 5, 3) = ThisWorkbook.Sheets («InputFile»). Cellules (a, 7)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 6, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 8)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 7, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 9)
ThisWorkbook.Sheets («ReadyTestCases»). Cells (a + 8, 3) = ThisWorkbook.Sheets («InputFile»). Cellules (a, 10)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 9, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 11)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 10, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 12)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 11, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 13)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 12, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 14)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 13, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 15)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 14, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 16)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 15, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 17)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 16, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 18)
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 17, 3) = ThisWorkbook.Sheets ('InputFile'). Cellules (a, 19)
a = a + 21
Suivant a: L'extrait de boucle for mappe les valeurs de chaque colonne de la feuille InputFile avec chaque étape de test pour chaque id de cas de test.
# 17) lastrow = Sheets («ReadyTestCases»). Cells (Sheets («ReadyTestCases»). Rows.Count, «C»). End (xlUp) .Row : Cette instruction recalcule le nombre total de lignes de la feuille ReadyTestCases après l'ajout de 21 lignes pour chaque id de scénario de test.
# 18) a = 1: Cette instruction affecte 1 à la variable a.
# 19) ThisWorkbook.Sheets («ReadyTestCases»). Activez: Cette instruction active la feuille ReadyTestCases.
# 20) Pour a = 1 To lastrow
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a, 2) = 'Verify Order Date'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 1, 2) = 'Verify Ship Date'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 2, 2) = 'Vérifier le mode d'expédition'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 3, 2) = 'Verify Customer Id'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 4, 2) = 'Vérifier le nom du client'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 5, 2) = 'Vérifier le segment'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 6, 2) = 'Verify City'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 7, 2) = 'Vérifier l'état'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 8, 2) = 'Vérifier le code postal'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 9, 2) = 'Vérifier la région'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 10, 2) = 'Verify Product Id'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 11, 2) = 'Vérifier la catégorie'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 12, 2) = 'Vérifier la sous-catégorie'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 13, 2) = 'Vérifier le nom du produit'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 14, 2) = 'Vérifier les ventes'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 15, 2) = 'Vérifier la quantité'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 16, 2) = 'Vérifier la remise'
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a + 17, 2) = 'Verify Profit'
a = a + 21
Suivant a - Cet extrait de la boucle For ajoute des étapes de test statiques pour chaque cas de test.
# 21) Deleteblankrows («ReadyTestCases»): Appelez la fonction Deleteblankrow function pour la feuille «Ready TestCases’sheet».
# 22) ScreenUpdating = True: Cela vous permet de visualiser les mises à jour d'écran se produisant dans le cadre de l'exécution de la macro.
# 23) Sub Deleteblankrows (ByVal Sheet As String): Le code ci-dessous est pour la fonction Deletblankrows qui vérifiera dynamiquement s'il y a des valeurs vides dans les champs de données. Si oui, l'étape de test créée pour les données vides sera supprimée à son tour en supprimant ces lignes.
# 24) Dim wks comme feuille de travail: Cette instruction déclare la variable wks comme Worksheet.
# 25) Définissez wks = ThisWorkbook.Worksheets (Sheet): Cette instruction affecte la feuille wks fournie comme paramètre d'entrée.
# 26) Dim i As Long: Cette doublure déclare que je suis Long.
# 28) semaines. Activer: Cette instruction active la feuille.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, «C»). End (xlUp) .Row: Cette instruction obtient le nombre de la dernière ligne de la feuille.
# 30) Pour i = 1 Pour lastrow: La boucle For itère de la première ligne à la dernière ligne.
# 31) Si WorksheetFunction.CountBlank (Range (Cells (i, 2), Cells (i, 3))) = 1 Alors: Cette condition vérifie si pour chaque ligne, la deuxième et la troisième colonne comptent pour la valeur vide comme 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Cette instruction supprime la ligne sélectionnée si la condition est vraie.
Exemple d'utilisation n ° 4
Les formules Excel du modèle Test Estimates peuvent également être exécutées à l'aide d'une macro. Un graphique est également créé à l'aide de la macro.
Démo
- Une feuille «Estimations» qui permettra aux utilisateurs d'ajouter des heures estimées pour les phases de test à partir de la compréhension des exigences de l'entreprise jusqu'à la création, l'exécution et la retouche de la mise à jour des scripts de test est conservée.
- Les cellules surlignées en vert sont activées pour l'entrée utilisateur. Ce sont les champs de saisie.
- Les bleus surlignés sont automatiquement dérivés.
- La deuxième feuille comprend les métriques Rework et la troisième feuille comprend les métriques de complexité.
- L'utilisateur entre la taille de complexité en termes de H, L et M dans la colonne D, et la colonne E récupère automatiquement le facteur de complexité à l'aide du vlookup du «Mesures de complexité» feuille.
- L'utilisateur entre la taille de retouche en termes de H, L et M dans la colonne F, et la colonne G récupère automatiquement le facteur de complexité à l'aide du vlookup de la feuille 'Métriques de retravail'.
- Les facteurs sont ensuite utilisés dans la colonne H pour obtenir le total des efforts d'estimation.
- Une autre macro une fois exécutée prépare le graphique et l’ajoute sur la quatrième feuille «Graphique».
- Les formules incluses sont pilotées via la macro à l'aide de la touche de raccourci CTRL + SHIFT + E.
Estimations

Retravailler les métriques

Mesures de complexité

Graphique

Code VBA (macro) pour la feuille d'estimation
' Keyboard Shortcut: Ctrl+Shift+E ThisWorkbook.Sheets(1).Activate Sheets('Estimates').Cells(4, 8) = Sheets('Estimates').Cells(4, 2) * Sheets('Estimates').Cells(4, 3) * Sheets('Estimates').Cells(4, 5) * Sheets('Estimates').Cells(4, 7) Sheets('Estimates').Cells(5, 8) = Sheets('Estimates').Cells(5, 2) * Sheets('Estimates').Cells(5, 3) * Sheets('Estimates').Cells(5, 5) * Sheets('Estimates').Cells(5, 7) Sheets('Estimates').Cells(6, 8) = Sheets('Estimates').Cells(6, 2) * Sheets('Estimates').Cells(6, 3) * Sheets('Estimates').Cells(6, 5) * Sheets('Estimates').Cells(6, 7) Sheets('Estimates').Cells(7, 8) = Sheets('Estimates').Cells(7, 2) * Sheets('Estimates').Cells(7, 3) * Sheets('Estimates').Cells(7, 5) * Sheets('Estimates').Cells(7, 7) Sheets('Estimates').Cells(8, 8) = Sheets('Estimates').Cells(8, 2) * Sheets('Estimates').Cells(8, 3) * Sheets('Estimates').Cells(8, 5) * Sheets('Estimates').Cells(8, 7) Sheets('Estimates').Cells(9, 8) = Sheets('Estimates').Cells(9, 2) * Sheets('Estimates').Cells(9, 3) * Sheets('Estimates').Cells(9, 5) * Sheets('Estimates').Cells(9, 7) Sheets('Estimates').Cells(10, 8) = Sheets('Estimates').Cells(10, 2) * Sheets('Estimates').Cells(10, 3) * Sheets('Estimates').Cells(10, 5) * Sheets('Estimates').Cells(10, 7) Sheets('Estimates').Cells(11, 8) = Sheets('Estimates').Cells(4, 8) + Sheets('Estimates').Cells(5, 8) + Sheets('Estimates').Cells(6, 8) + Sheets('Estimates').Cells(7, 8) + Sheets('Estimates').Cells(8, 8) + Sheets('Estimates').Cells(9, 8) + Sheets('Estimates').Cells(10, 8) ‘--------------------------------------------------- For i = 3 To 10 Sheets('Chart').Cells(i - 2, 1) = Sheets('Estimates').Cells(i, 1) Sheets('Chart').Cells(i - 2, 2) = Sheets('Estimates').Cells(i, 8) Next i End Sub Explication du code
(a) ThisWorkbook.Sheets (1) .Activat: La première feuille «Estimations» s’active.
(b) Sheets ('Estimations'). Cells (4, 8) = Sheets ('Estimates'). Cells (4, 2) * Sheets ('Estimates'). Cells (4, 3) * Sheets ('Estimates') ) .Cellules (4, 5) * Feuilles («Estimations»). Cellules (4, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 4.
(c) Sheets ('Estimations'). Cells (5, 8) = Sheets ('Estimates'). Cells (5, 2) * Sheets ('Estimates'). Cells (5, 3) * Sheets ('Estimates') ) .Cells (5, 5) * Feuilles («Estimations»). Cellules (5, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 5.
(d) Sheets ('Estimations'). Cells (6, 8) = Sheets ('Estimates'). Cells (6, 2) * Sheets ('Estimates'). Cells (6, 3) * Sheets ('Estimates') ) .Cells (6, 5) * Feuilles («Estimations»). Cellules (6, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 6.
(e) Sheets ('Estimations'). Cells (7, 8) = Sheets ('Estimates'). Cells (7, 2) * Sheets ('Estimates'). Cells (7, 3) * Sheets ('Estimates') ) .Cells (7, 5) * Sheets («Estimations»). Cells (7, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 7.
(f) Sheets ('Estimations'). Cells (8, 8) = Sheets ('Estimates'). Cells (8, 2) * Sheets ('Estimates'). Cells (8, 3) * Sheets ('Estimates') ) .Cells (8, 5) * Sheets ('Estimations'). Cells (8, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 8.
(g) Sheets ('Estimations'). Cells (9, 8) = Sheets ('Estimates'). Cells (9, 2) * Sheets ('Estimates'). Cells (9, 3) * Sheets ('Estimates') ) .Cells (9, 5) * Sheets («Estimations»). Cells (9, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 9.
(h) Sheets ('Estimations'). Cells (10, 8) = Sheets ('Estimates'). Cells (10, 2) * Sheets ('Estimates'). Cells (10, 3) * Sheets ('Estimates') ) .Cells (10, 5) * Feuilles ('Estimations'). Cellules (10, 7): Cette instruction calcule la colonne B * colonne C * colonne E * colonne G et affecte la colonne H pour la ligne 10.
(i) Sheets ('Estimations'). Cells (11, 8) = Sheets ('Estimates'). Cells (4, 8) + Sheets ('Estimates'). Cells (5, 8) + Sheets ('Estimates') ) .Cells (6, 8) + Sheets ('Estimates'). Cells (7, 8) + Sheets ('Estimates'). Cells (8, 8) + Sheets ('Estimates'). Cells (9, 8) + Feuilles ('Estimations'). Cellules (10, 8): Cette déclaration résume la cellule H2 à H10 et attribue la valeur finale à H11. Cette valeur fournit l'effort total (en heures).
(j) Pour i = 3 à 10
Sheets ('Chart'). Cells (i - 2, 1) = Sheets ('Estimates'). Cells (i, 1)
Feuilles ('Graphique'). Cellules (i - 2, 2) = Feuilles ('Estimations'). Cellules (i, 8)
Ensuite je : Cette copie For Loop colle les données de la colonne 1 et de la colonne 8 de la feuille Estimations à la feuille Chart. Ceci est fait pour que les données de la feuille de graphique puissent être utilisées pour préparer un graphique à secteurs. Il existe une autre macro écrite pour la feuille «Graphique» qui prépare un graphique pour la même chose.
Code VBA (macro) pour la feuille de graphiques
Sub CreateChart() Dim rng As Range Dim cht As Object ThisWorkbook.Sheets('Chart').Activate Set rng = ActiveSheet.Range('A2:B8') Set est = ThisWorkbook.Sheets('Chart').Shapes.AddChart2 est.Chart.SetSourceData Source:=rng est.Chart.ChartType = xl3DPieExploded est.Chart.HasTitle = True est.Chart.ChartTitle.Text = 'Test Estimates' est.Chart.SetElement (msoElementDataLabelCenter) est.Chart.SetElement (msoElementLegendBottom) End Sub Explication du code
- Dim rng comme plage: Cette instruction déclare rng comme valeur Range.
- Dim est As Object: Cette instruction déclare est comme valeur Object.
- Ce classeur.Feuilles ('Graphique'). Activer: Cette instruction active la feuille de graphique.
- Définissez rng = ActiveSheet.Range ('A2: B8'): La plage de A2 à B8 de Sheet-Chart est définie sur rng.
- Définissez est = ThisWorkbook.Sheets ('Chart'). Shapes.AddChart2: Cette instruction est utilisée pour lancer la création d'un nouveau graphique sur la feuille-graphique.
- est.Chart.SetSourceData Source: = rng: Cette déclaration fournit une plage de données à contempler dans le graphique.
- est.Chart.ChartType = xl3DPieExploded: Le type de graphique est défini sur Secteur 3D de type éclaté. xl3DPieExploded aide à déterminer ce type de graphique.
- est.Chart.HasTitle = True: Cette instruction vérifie si le graphique a déjà un titre.
- est.Chart.ChartTitle.Text = “Test Estimates”: Cette déclaration remplace le titre du graphique par «Tester les estimations».
- est.Chart.SetElement (msoElementDataLabelCenter): Cette instruction définit les étiquettes de données et les légendes du graphique.
- est.Chart.SetElement (msoElementLegendBottom): Cette instruction définit les étiquettes de données au bas du graphique.
Façons d'exécuter une macro
Une macro peut être exécutée de 4 manières:
- Utilisation de l'icône Exécuter dans la fenêtre de l'éditeur VBA.
- Sur le fichier Excel, sélectionnez l'option de menu Affichage -> Macros -> Afficher la macro -> Sélectionnez le nom de la macro et sélectionnez Exécuter.
- Créez un raccourci lors de la création de la macro et appuyez sur les touches de raccourci pour déclencher l'exécution de la macro.
- Le moyen le plus convivial est de créer un bouton d'action ( Par exemple. Bouton de commande) auquel une macro serait affectée qui, une fois cliqué, déclencherait l'exécution de la macro.
Nous verrons comment ajouter un bouton de commande et attribuer une macro au bouton. Le bouton une fois cliqué exécutera l'exécution de la macro.
Ajouter un bouton de contrôle de formulaires dans Excel
- Sélectionner Menu «Développeur» -> Insérer -> Contrôles de formulaire -> Icône du bouton Sélectionner et ajoutez le bouton sur la feuille Excel.
- Saisissez le nom et la valeur de texte du bouton. Le nom du bouton est utilisé dans le codage VBA pour reconnaître ce bouton de commande alors que le texte est ce qui s'affiche sur le bouton.

- Maintenant, faites un clic droit sur le bouton de commande et sélectionnez l'option «Attribuer une macro» , la liste des macros apparaît, sélectionnez le nom de la macro que vous souhaitez attribuer.
- Une fois la macro affectée, un clic sur le bouton déclenche l'exécution de la macro affectée.
- Dans cet exemple, le 'Obtenir des estimations de test' le bouton est attribué à 'Estimations' macro.
- De même, nous ajouterons un bouton de commande pour la feuille de graphique et attribuerons la macro de graphique pour déclencher la génération du graphique.

- En cliquant sur le 'Créer un graphique' Le bouton exécute la macro pour le graphique. Cela améliore la convivialité de la macro.
Conclusion
Ce sont quelques exemples en temps réel qui pourraient faire partie de la routine quotidienne du testeur au travail qui pourraient être intelligemment identifiés pour la génération de macros et pourraient, par conséquent, gagner beaucoup de temps sur des efforts manuels non pertinents et répétitifs en automatisant la tâche.
Les captures d'écran pertinentes, le code VBA et la compréhension détaillée de chaque ligne de code ont été abordés dans cet article. J'espère que cela donnera une bonne longueur d'avance aux QA sur la façon de se transformer d'un état d'esprit de test manuel à un état d'esprit macro.
Pour ceux qui croient que le travail des testeurs manuels est purement non technique, prouvons-leur le contraire en appliquant les connaissances techniques nécessaires pour améliorer la productivité.
Auteur: Cet article très utile est rédigé par Shobha D. Elle travaille en tant que chef de projet et possède plus de 9 ans d'expérience en tests manuels, automatisés (IBM RFT et Selenium utilisant Java) et API.
lecture recommandée
- Utilisation d'objets Excel VBScript
- Création du framework Selenium et accès aux données de test à partir d'Excel - Tutoriel Selenium # 21
- 5 Tâches de test les plus courantes que les testeurs oublient de tester (et comment l'éviter)
- Top 5 des choses qu'un testeur doit avoir pour exceller (et les perspectives changeantes du testeur de logiciel)
- Sous-tâche JIRA avec exemple (sous-tâche JIRA Create)