Reading Time: 9 mins

Bouw een schaalbaar testautomatiseringsframework voor uw project

Bouw een schaalbaar testautomatiseringsframework voor uw project

Stel dat u relatief nieuw bent in het testen van automatisering en betrokken wilt raken bij het bouwen van een raamwerk. In dat geval is het belangrijk om op de hoogte te zijn van de componenten die nodig zijn voor het raamwerk en hoe deze in elkaar passen. In dat geval is het belangrijk om op de hoogte te zijn van de componenten die nodig zijn voor het raamwerk en hoe deze in elkaar passen.

Als je bijvoorbeeld een testarchitect bent, stel jezelf dan deze vragen

En er zouden er nog meer kunnen zijn.

In enkele gevallen zijn er frameworks die nooit echt hun werk doen, zoals degene die geen enkel verschil maken, zelfs niet als je het uitschakelt.

Een automatiseringsframework is meer dan alleen de tools. Het zijn mensen en processen die zijn samengesteld om vanaf de grond af een raamwerk op te zetten en teams in staat te stellen sneller betere softwarekwaliteit te leveren.

We zullen er meer over vertellen in de onderstaande secties.

Typen automatiseringsframeworks testen

Enkele veel voorkomende soorten frameworks voor automatiseringstests zijn:

Lineair testkader:Dit is het meest basale type raamwerk voor automatiseringstests, waarbij testgevallen achter elkaar in een lineaire volgorde worden uitgevoerd.

Lineaire testframeworks kunnen nuttig zijn voor het testen van applicaties met een relatief eenvoudige of ongecompliceerde architectuur. Ze zijn echter mogelijk niet zo effectief voor het testen van complexere of onderling verbonden applicaties, omdat ze mogelijk geen rekening houden met de interacties en afhankelijkheden tussen verschillende delen van de applicatie.

Modulair testkader: In dit type framework wordt de applicatie opgedeeld in kleinere modules en wordt elke module afzonderlijk getest voordat deze wordt geïntegreerd om de volledige applicatie te testen.

Het voordeel van het gebruik van een modulair testraamwerk is dat testers zich kunnen concentreren op kleinere, meer specifieke gebieden van de software, waardoor het testproces efficiënter en effectiever kan worden. Het zorgt ook voor meer flexibiliteit, omdat modules in elke willekeurige volgorde kunnen worden getest en in verschillende contexten kunnen worden hergebruikt.

Een modulair testraamwerk is echter mogelijk niet zo effectief bij het identificeren van problemen die optreden wanneer verschillende modules worden geïntegreerd, omdat deze problemen mogelijk pas aan het licht komen als het volledige systeem is getest. Als zodanig wordt het vaak gebruikt in combinatie met andere testkaders om een uitgebreidere testbenadering te bieden.

Datagestuurd testkader: In dit type framework worden testgevallen uitgevoerd door de testgegevens uit externe bronnen in te lezen, zoals een Excel-sheet of een database.

Hier is een vereenvoudigd voorbeeld van een datagestuurd testraamwerk:

  • Het testscript bevat de stappen voor de testcase, zoals het openen van een webpagina, het invoeren van inloggegevens en het klikken op een knop.
  • De testgegevens worden opgeslagen in een apart bestand of database en bevatten de inloggegevens die zullen worden gebruikt als invoer voor het testscript.
  • De testrunner is het onderdeel dat het testscript uitvoert en de testgegevens doorgeeft.
  • Het testscript gebruikt de testgegevens als invoer en voert de stappen in de testcase uit. De uitvoer van het testscript wordt vergeleken met de verwachte resultaten om te bepalen of de test geslaagd of mislukt is. De testresultaten worden meestal opgeslagen in een apart bestand of database.

Met behulp van een datagestuurd testframework kunt u één testscript maken dat meerdere keren kan worden uitgevoerd met verschillende datasets, waardoor de efficiëntie en flexibiliteit van uw testproces wordt verbeterd.

Datagestuurde testframeworks kunnen echter complexer zijn om op te zetten en te onderhouden, omdat ze een apart gegevensbestand voor testgevallen moeten maken en onderhouden. Ze zijn mogelijk ook minder effectief in het identificeren van problemen die geen verband houden met gegevensinvoer en -uitvoer, zoals problemen met de gebruikersinterface of prestatie.

Sleutelwoordgestuurd testkader: Dit type raamwerk gebruikt een tabel met vooraf gedefinieerde trefwoorden om de uit te voeren acties in de testgevallen weer te geven.

Bij deze benadering moeten trefwoorden niet verbonden zijn met de objecten of elementen van de gebruikersinterface waarmee ze corresponderen. Dit wordt meestal gedaan door een gedeelde objectrepository te maken die objecten toewijst aan hun vereiste acties. Het is vermeldenswaard dat deze zoekwoorden vervolgens opnieuw kunnen worden gebruikt in meerdere testscripts.

Naarmate de testsuite groeit, kan de trefwoordenbibliotheek groot en moeilijk te onderhouden worden. Het is belangrijk om een systeem te hebben om de zoekwoorden bij te houden en ervoor te zorgen dat ze up-to-date zijn.

Hybride testkader: Zoals de naam al doet vermoeden, combineert dit type framework elementen van meerdere automatiseringstestframeworks.

Een hybride testautomatiseringsframework combineert de kenmerken en voordelen van meerdere soorten testframeworks om de efficiëntie en kosteneffectiviteit van testen voor kwaliteitsborging te vergroten. Door de beperkingen aan te pakken en de sterke punten van verschillende testframeworks te benutten, bieden hybride frameworks een allesomvattende oplossing om aan de groeiende vraag naar testautomatisering te voldoen.

Het geschikte raamwerk moet worden gekozen op basis van de aard van het project, de omvang van het project, het type toepassing dat wordt getest en de vaardigheden en ervaring van het testteam.

Welk automatiseringsframework is het beste?

Bedrijven zijn al geruime tijd overgestapt op hybride frameworks, omdat het de voordelen van alle andere soorten frameworks omvat. De meest populaire hybride frameworks zijn:

  • TestNG
  • Gedragsgestuurde ontwikkeling (BDD)

Test NG:

TestNG is een op Java gebaseerd testraamwerk dat is ontworpen om een breder scala aan testcategorieën te dekken: unit, functioneel, end-to-end, integratie, enz. Het is een open-source tool die kan worden gebruikt om testgevallen te schrijven en uit te voeren, en is vooral handig voor testen in een teamomgeving, omdat het ondersteuning biedt voor parallelle testuitvoering en het genereren van testrapporten.

Om TestNG te gebruiken, moet u het eerst in uw Java-project installeren. Dit kan meestal worden gedaan met behulp van een build-tool zoals Maven of Gradle. Nadat TestNG is geïnstalleerd, kunt u testgevallen schrijven met behulp van de TestNG-annotaties en API. Deze testcases kunnen vervolgens worden uitgevoerd door de TestNG-testrunner uit te voeren, die de tests zal ontdekken en uitvoeren volgens de configuratie die is opgegeven in een TestNG XML-bestand of via de opdrachtregel.

In dit voorbeeld markeert de annotatie @Test methoden als testgevallen. Wanneer de TestNG-testrunner wordt uitgevoerd, zal deze deze testmethoden ontdekken en uitvoeren.

TestNG biedt ook een aantal andere annotaties die u kunt gebruiken om de uitvoering van uw testcases te controleren, zoals @BeforeMethod en @AfterMethod, die kunnen worden gebruikt om testgegevens in te stellen en af te breken voordat en nadat elke testmethode wordt uitgevoerd.

Om uw TestNG-tests uit te voeren, kunt u de TestNG Eclipse-plug-in gebruiken, of u kunt de TestNG-testrunner uitvoeren vanaf de opdrachtregel met de volgende opdracht:

java org.testng.TestNG testng.xml

Het bestand testng.xml is een XML-configuratiebestand dat de uit te voeren testsuite en eventuele aanvullende configuratie-opties specificeert.

BDD:

BDD (Behavior-Driven Development) is een methode voor softwareontwikkeling die tot doel heeft ontwikkelaars, testers en niet-technische belanghebbenden samen te brengen door samenwerking en communicatie tijdens het ontwikkelingsproces aan te moedigen.

Een BDD-framework is een tool of een set tools die het BDD-proces ondersteunen. Deze frameworks bieden doorgaans tools voor het schrijven en uitvoeren van door mensen leesbare acceptatietests, die het te testen gedrag van het systeem definiëren vanuit het perspectief van de eindgebruiker.

Een van de meest populaire BDD-frameworks is Cucumber, een tool voor het schrijven en uitvoeren van acceptatietesten in een taal genaamd Gherkin. Gherkin-tests zijn geschreven in gewoon Engels (of de taal van uw keuze) en gebruiken een eenvoudige syntaxis om de stappen van een testscenario te beschrijven.

In dit voorbeeld definiëren de regels "Feature" en "Scenario" het gedrag op hoog niveau dat wordt getest, en de volgende regels beschrijven de afzonderlijke stappen van de test in gewoon Engels.

Om het Cucumber-framework te gebruiken, moet u het in uw project installeren en uw acceptatietesten in Gherkin schrijven. U moet ook code schrijven om de stappen te implementeren die zijn gedefinieerd in uw acceptatietests, wat kan worden gedaan met behulp van verschillende programmeertalen.

Zodra uw tests en stapdefinities zijn geschreven, kunt u uw acceptatietests uitvoeren door de Cucumber-testrunner uit te voeren. De testrunner analyseert uw Gherkin-tests, voert de stapdefinities uit en rapporteert over de resultaten.

Regressiesuite-services

Casestudy

De in de VS gevestigde aanbieder van marketingoplossingen realiseerde een testdekking van 95% met het Test NG + BDD-framework

Stappen voor het bouwen van een intern raamwerk voor testautomatisering

Definieer uw doelen: Formuleer duidelijk wat u wilt bereiken met uw testautomatiseringsraamwerk. Wil je de snelheid van je testen verbeteren? De betrouwbaarheid van uw testen vergroten? De productiviteit van uw team verhogen? Door uw doelen te identificeren, kunt u bepalen welke functies en mogelijkheden uw framework moet hebben.

Tip: Begin met het begrijpen van de applicatiestructuur en -omgeving en start een proefproject. Selecteer een paar dingen die u wilt automatiseren en stel doelen aan het einde van dit experiment. Als je die doelen eenmaal hebt bereikt, is dat een teken dat je experimenten voorbij zijn en dat je je eigenlijke project een vliegende start kunt geven. Ga niet op pad met het doel om alles te automatiseren.

Identificeer de tools en technologieën die u gaat gebruiken: Kies de programmeertaal, testrunner, testbeheertool en andere tools die u gaat gebruiken om uw testautomatiseringsframework te bouwen en te onderhouden. Houd rekening met factoren zoals de vaardigheden en ervaring van uw team, het type software dat u test en uw budget.

Tip:Begeleid uw team om de paradigmaverschuiving op te vangen

Ontwikkel je raamwerk: Maak een ontwerp op hoog niveau voor uw testautomatiseringsframework dat de algehele architectuur en de relaties tussen de verschillende componenten schetst. Dit moet een beschrijving bevatten van de verschillende lagen van uw raamwerk (bijv. gebruikersinterface, bedrijfslogica, gegevenstoegang), evenals de interfaces die zullen worden gebruikt om tussen deze lagen te communiceren.

Maak herbruikbare elementen, zoals helperfuncties, hulpprogrammaklassen en algemene beweringsmethoden, die in meerdere testscripts kunnen worden gebruikt.

Implementeer uw raamwerk: Ontwikkel een gedetailleerd plan voor de organisatie van het raamwerk, inclusief het modulaire ontwerp, de besturingsstroom, het ontwerppatroon en de te implementeren technologiestapel. Gebruik de tools en technologieën die u hebt geselecteerd om de verschillende componenten van uw testautomatiseringsframework te bouwen. Dit kan het schrijven van code inhouden om de verschillende lagen van uw framework te implementeren en het maken van testscripts en testgegevens.

Tip: Het duurt doorgaans 4 tot 6 maanden voor bekwame professionals om een raamwerk te implementeren, waarbij de technische aspecten ongeveer 50% van het vereiste werk uitmaken. Werken met geautomatiseerde testexpertskan de weg naar implementatie verkorten en veelvoorkomende misstappen voorkomen.

Loggen & rapporteren: Implementeer een logsysteem in het raamwerk om informatie vast te leggen, zoals de voortgang van de testuitvoering, testresultaten en eventuele foutmeldingen die tijdens het testen optreden.

Integreer een rapportagesysteem in het raamwerk om testuitvoeringsrapporten te genereren met een overzicht van testresultaten, inclusief details zoals het aantal geslaagde/mislukte testgevallen, testuitvoeringstijd en eventuele fouten die zijn opgetreden.

Onderhoud en update uw framework:Naarmate uw software evolueert en uw testbehoeften veranderen, moet u uw testautomatiseringsframework onderhouden en bijwerken.

Het effectiever maken van het testautomatiseringskader

Gebruik een modulaire aanpak: Verdeel uw tests in kleinere, onafhankelijke eenheden die kunnen worden gecombineerd om grotere tests te vormen. Dit maakt het gemakkelijker om uw tests te onderhouden en bij te werken.

Evalueer het gemak van het automatiseren van tests voor elke service en analyseer de voordelen van automatisering voor elke service. Denk hierbij aan factoren als onderhoudbaarheid en de beperkingen van automatisering.

Gebruik een programmeertaal die gemakkelijk te leren isen heeft een grote gemeenschap van gebruikers, zoals Python of Java. Dit maakt het gemakkelijker om hulp en bronnen te vinden wanneer u ze nodig hebt. Probeer een taal te gebruiken die ontwikkelaars ook gebruiken.

Overweeg om frameworks voor testautomatisering te gebruiken die specifiek zijn ontworpen voor uw testbehoeften. Als u bijvoorbeeld een webtoepassing test, wilt u misschien een framework zoals Selenium gebruiken.

Gebruik een testrunner voor testmanagementtooll om je testen uit te voeren. Tools zoals PyTest, JUnit of TestNG kunnen u helpen uw tests efficiënter uit te voeren en rapporten over de resultaten te genereren.

Gebruik een versiebeheersysteem zoals Git om wijzigingen in uw testcode bij te houden. Dit maakt het gemakkelijker om met anderen samen te werken en wijzigingen indien nodig ongedaan te maken.

Implementeer continue integratie (CI) om uw tests automatisch uit te voeren elke keer dat u wijzigingen aanbrengt in uw code. Zet elke nacht rooktesten op voor elke build en regressie. Dit helpt u om problemen in een vroeg stadium op te sporen en op te lossen, voordat ze grotere problemen worden. Populaire CI-tools zijn: GitLab, CircleCI, Azure-pijplijnen, TravisCI...

Gebruik tools voor het beheer van testgegevens om uw testgegevens op te slaan en te beheren. Dit zal u helpen uw tests georganiseerd te houden en ervoor te zorgen dat u de meest actuele gegevens gebruikt.

Gebruik een testrapportagetool om duidelijke, gemakkelijk te begrijpen rapporten over de resultaten van uw tests te genereren. Het moet gemakkelijk zijn om:

  • Zie exception stack traces
  • Gebruik snel mislukte beweringen en bijbehorende invoer/logboeken
  • Goed overzicht van pass/fail/skipped metrics
  • Zou historische resultatenvergelijking moeten hebben

Enkele beschikbare rapportageframeworks zijn Gradle-rapporten, Cucumber-rapporten, Report-portalen, Allure.

Fundamenten van een schaalbaar automatiseringsraamwerk: Zuci-weergave

We vroegen onze SDET-manager, Dhanalakshmi Tamilarasan, wat de basis zou moeten zijn van een schaalbaar raamwerk voor testautomatisering en dit is wat ze opsomde.

Wil je in plaats daarvan een video bekijken? Klik hieronder om te kijken

Definieer de reikwijdte

Ga je webapplicatie of mobiel of API of database automatiseren? Zorg ervoor dat het automatiseringsframework al deze te testen applicaties aankan.

Automatiseren van kritieke testscenario's: wordt het lang of klein?

Applicatie type: Wordt het data-intensief? Moet ik testcases uitvoeren voor meerdere datasets?

Bevraag uzelf op deze parameters en definieer uw testbereik en raamwerk.

Code-flexibiliteit

Hoe flexibel uw code is zodat u elke nieuwe code kunt toevoegen/bijwerken en hoe gemakkelijk ik de bestaande code kan onderhouden

Continue integratie

In de agile wereld van vandaag krijgen we (n) aantal builds en moeten automatiseringsscripts dagelijks worden uitgevoerd. Kijk dus eens hoe gemakkelijk het is voor uw framework om te integreren met de CI/CD-pijplijn.

Cross-platform testen

Om responsieve tests uit te voeren door web- en mobiele apps te automatiseren die een combinatie van browsers/OS/apparaten ondersteunen, moet uw automatiseringsframework kunnen worden geïntegreerd met cloudgebaseerde platforms zoals Sauce Labs, Browser Stack.

Testbeheer

Testmanagementtools zoals JIRA en Testrail zijn belangrijk voor het volgen van testactiviteiten, het analyseren van resultaten, enz. Uw framework zou u dus in staat moeten stellen om testresultaten automatisch bij te werken zonder handmatige ondersteuning/interventie.

Parallelle uitvoering

Een automatiseringsframework moet de parallelle uitvoering van testsuites ondersteunen, zodat testresultaten snel beschikbaar zijn. Snelle testresultaten betekenen snelle detectie van defecten.

Lokalisatie ondersteuning

Tegenwoordig zijn de meeste apps gebouwd met lokalisatie om gebruikers over de hele wereld een naadloze ervaring te bieden. We moeten ervoor zorgen dat het raamwerk verschillende talen aankan.

Test opslagplaats

Het automatiseringsraamwerk moet voorzieningen hebben voor het leveren van testrapporten van verschillende testrapportagetools, zodat het voor het testmanagementteam wordt.

Laatste gedachten

Als er een team wordt geherstructureerd of als er iemand nieuw bij het team komt, is er vaak de drang om de codebasis te herschrijven en een geheel nieuw framework op te bouwen.

En heel vaak is het de kopieer- en plakcodebasis van het vorige bedrijf zonder de context van het huidige team of bedrijf te begrijpen. Als je merkt dat je dat doet, pauzeer dan.

De beste manier om dit te benaderen is contextgestuurd, hoe simpel het ook klinkt. U moet met mensen in uw team praten en ze door alle processen, tools, versies, CRM's en zo meer laten lopen.

Overweeg te doen wat het beste is voor uw team en project, terwijl u rekening houdt met de onderliggende principes van automatisering en frameworks.

Als testen een middel is om de kwaliteit van de software te begrijpen, is automatisering slechts een middel tot een middel. – James Bach

Wilt u de dekking van uw testautomatisering verbeteren? Kijk eens bij Zucitestautomatiseringsdienstenen kijk hoe u Zuci kunt inzetten voor uw zakelijke behoeften.

Keerthi Veerappan

An INFJ personality wielding brevity in speech and writing. Marketer @ Zucisystems.