Agile testautomatiseringsframework

โšก Slimme samenvatting

Agile testautomatisering past geautomatiseerde controles toe binnen korte sprints, waarbij de eisen wekelijks veranderen en een testsuite die is gebouwd voor een stabiele watervalrelease al snel een onderhoudslast wordt in plaats van een vangnet.

  • ๐Ÿ”˜ Kernspanning: Automatisering beloont stabiliteit, terwijl Agile verandering beloont. Daarom is de testselectie belangrijker dan de testdekking.
  • โ˜‘๏ธ Watervalcontrast: Traditionele automatisering vereist een stabiele applicatie, deskundige scriptschrijvers en hoge opstartkosten.
  • โœ… Sprint realiteit: Een sprint van รฉรฉn tot vier weken is zelden voldoende voor het ontwerpen, coderen en valideren van grote scripts.
  • ๐Ÿงช Niet verkennend: Geautomatiseerde tests bevestigen bekend gedrag; ze ontdekken geen nieuwe en innovatieve defecten.
  • ๏ธ Gereedschap keuze: Beperkende licenties voor tools botsen met de open samenwerking waar Agile-teams op vertrouwen.
  • ๐Ÿ“ˆ Beste pasvorm: Repetitieve, data-intensieve regressietests met duidelijke geslaagde of mislukte resultaten lenen zich goed voor automatisering.

Agile testautomatiseringsframework

Agile automatiseringstests

Agile automatiseringstests Testautomatisering is de praktijk van het gebruik van testautomatisering binnen een Agile-leveringsproces. Het doel is om softwareontwikkeling effectiever en efficiรซnter te maken, terwijl de kwaliteit wordt gewaarborgd en de tijd en middelen die een release verbruikt, worden beheerst. Omdat tests parallel aan de ontwikkeling van de functionaliteit worden geschreven, is de praktijk sterk afhankelijk van de coรถrdinatie tussen ontwikkelaars en testers.

Sinds de Agile-methodologie de moeizame realiteit van het watervalmodel wilde elimineren, is de invloed ervan voelbaar in automatisering testen ook. De twee disciplines moeten bewust gecombineerd worden:

Agile plus automatisering gecombineerd tot automatisering binnen Agile.

Automatisering in Waterfall versus automatisering in Agile

In een traditionele softwaretestlevenscyclus wordt geautomatiseerd testen pas mogelijk zodra de applicatie... stabiel en de eisen zijn vastgesteldHet gaat ervan uit dat... een aanzienlijke hoeveelheid tijd, zeer bekwame automatiseringsspecialisten en aanzienlijke opstartkosten. Het hoofddoel is om de kosten op de lange termijn te verlagen en te bevestigen dat er geen nieuwe defecten zijn geรฏntroduceerd in de bestaande testgevallen.

Geautomatiseerd testen is van nature geen verkennend onderzoek.Omdat het vooral bedoeld is om tijd te besparen en kosten te verlagen. Het is niet ontworpen om nieuwe en innovatieve defecten aan het licht te brengen. Geautomatiseerd testen bevestigt meestal gedrag dat al bestaat.

De twee scenario's stellen daarom zeer verschillende eisen aan een testsuite:

Factor Automatisering in watervalmodel Automatisering in Agile
Toepassingsstatus: Stabiel en goedgekeurd voordat het scripten begint. Elke sprint aanpassen, vaak tijdens het scripten.
Beschikbare tijd Een speciale automatiseringsfase Alles wat binnen een sprint van รฉรฉn tot vier weken past.
Wie schrijft de scripts? Een apart team van automatiseringsspecialisten Het leveringsteam, de testers en de ontwikkelaars samen
Voornaamste doel Kostenbesparing op de lange termijn voor een grote regressietestsuite Snelle feedback over de zojuist gebouwde incrementele versie
Onderhoudsrisico Laag, omdat de eisen langzaam veranderen. Hoog, omdat de eisen voortdurend veranderen.

Hoe automatiseer je met de Agile-methodologie?

Volgens de eigen definitie maakt de Agile-methodologie een einde aan omslachtige documentatie, zodat nieuwe ideeรซn snel kunnen worden geรฏmplementeerd en mensen vrij met elkaar kunnen samenwerken. Het geeft de voorkeur aan verkennend werk boven papierwerk:

Agile verwerpt omslachtige documentatie en geeft de voorkeur aan verkennend testen.

Er bestaat een fundamentele tegenstrijdigheid tussen de basisprincipes van de Agile-methodologie en geautomatiseerd testen. Agile-teams lossen dit op door te beperken wat ze automatiseren in plaats van minder te automatiseren: controles worden in dezelfde sprint als de feature geschreven, gedelegeerd naar het unit- en API-niveau waar ze het goedkoopst te onderhouden zijn, en worden bij elke build uitgevoerd.

Fundamentele punten voor agile testautomatisering

Voordat je sprintcapaciteit inzet voor automatisering, moet je de factoren afwegen die bepalen of een script รผberhaupt kan worden voltooid:

  • Ontwerp- en programmeertijd: Elk script moet worden ontworpen, gecodeerd en gecontroleerd alsof het productiecode betreft.
  • Validatie aan de hand van testgegevens: Het voltooide script moet worden gevalideerd met de bestaande testgegevens voordat iemand erop kan vertrouwen.
  • Doel van de test: Functionele en regressietests brengen verschillende onderhoudskosten en een verschillende levensduur met zich mee.
  • Sprint lengte: Een sprint duurt รฉรฉn tot vier weken, meestal twee, waardoor er zelden ruimte is voor een grote scriptinspanning.

Een tweede factor is de verandering in de eisen. Agile is per definitie een techniek om te reageren op door de klant gedreven veranderingen, en leent zich daarom goed voor frequente aanpassingen gedurende de ontwikkeling.

Geautomatiseerd testen is daarentegen het meest nuttig bij stabiele eisen. Het leent zich niet goed voor de constante veranderingen binnen een Agile-methodologie, waardoor de keuze van wat er geautomatiseerd wordt belangrijker is dan de hoeveelheid die geautomatiseerd wordt.

Agile automatiseringstools

De selectie van een relevante automatiseringstool Een andere belangrijke factor bij de implementatie van geautomatiseerd testen binnen een Agile-methodologie is de toegang tot de resources. Gelicentieerde automatiseringstools hanteren bijvoorbeeld strenge beveiligingscriteria voor verschillende typen en niveaus van gebruikers, waardoor beperkt wordt wie toegang heeft tot de resources van dat testautomatiseringsframework.

Gelicentieerde automatiseringstools leggen resources vast, terwijl de Agile-methodologie minder beperkend is.

De agile-methodologie daarentegen legt de nadruk op open samenwerking en onbelemmerde interactie tussen teamleden. Beperkende toegangsregels werken die cohesie tegen en kunnen leiden tot resultaten die noch nuttig, noch bevorderlijk zijn voor het succes van het project.

De prioriteit is het leveren van kwalitatief hoogwaardige automatiseringsscripts binnen de tijd die een Agile-proces toelaat. Kies testcases zorgvuldig, zodat de resulterende scripts later hergebruikt kunnen worden en toch binnen de gestelde tijd afgerond kunnen worden.

Zelfs in een Agile-omgeving moeten sommige tests nog steeds worden uitgevoerd, met name regressietests. In het volgende gedeelte wordt ingegaan op de situaties waarin geautomatiseerd testen van pas komt en hoe dit zich verhoudt tot Agile-testen.

Automatisering testen Concepts Toegepast op Agile

De onderstaande tabel geeft de zeven klassieke voorwaarden die het automatiseren van een test rechtvaardigen en de Agile-oplossing voor elk ervan. Slechts drie daarvan zijn naadloos te integreren in een Agile-sprint, en alle drie hebben de vorm van een regressietest:

# Het concept van geautomatiseerd testen Antwoord op de Agile-methodologie
1 De test moet regelmatig herhaald worden. Dit is waar het concept van regressietesten in beeld komt.
2 De workflow van de test en de validatie ervan ontwikkelen en veranderen geleidelijk in de loop van de tijd. Niet geschikt voor Agile-testen, aangezien Agile-testen frequente wijzigingen in de eisen met zich meebrengt.
3 De test valideert een bedrijfsproces of workflow, en niet de vormgeving, kleur of tabelindeling. Dit scenario kan worden beschouwd als een vorm van handmatig testen.
4 De test levert resultaten op voor een regelgevende instantie die eist dat deze resultaten elektronisch worden vastgelegd en gearchiveerd als formeel bewijs van naleving. Niet geschikt voor de Agile-methodologie, aangezien een uitputtende documentatie geen onderdeel uitmaakt van de Agile-methodologie.
5 De test is zeer repetitief of bestaat uit vele stappen die elke keer exact hetzelfde moeten worden uitgevoerd, waardoor vermoeidheid bij de tester moet worden vermeden. Niet geschikt voor de Agile-methodologie.
6 Het resultaat van de test (geslaagd of niet geslaagd) is relatief eenvoudig te bepalen en vast te leggen met de gekozen automatiseringstool. Geschikt voor regressietests tijdens Agile-testen die repetitieve en arbeidsintensieve vaardigheden vereisen.
7 De test moet een aanzienlijke hoeveelheid data in de applicatie invoeren. Kan worden gebruikt als regressietest.

Zeven concepten voor geautomatiseerd testen, gekoppeld aan de bijbehorende antwoorden binnen de Agile-methodologie.

Veelgestelde vragen

Een basisregel voor het opbouwen van testlagen: veel snelle unit tests aan de basis, minder integratie- en API-tests in het midden, en een dunne laag end-to-end UI-tests erbovenop. Dit zorgt ervoor dat een testsuite van sprintgrootte snel en goedkoop te onderhouden is.

De geautomatiseerde controles voor een user story worden in dezelfde sprint geschreven als de story zelf. Teams beginnen meestal in sprint รฉรฉn met unit tests, omdat wachten tot het product stabiel genoeg is, leidt tot een achterstand in handmatig testen.

De fasen moeten in de juiste volgorde worden uitgevoerd, zoals in de piramide. Unit-tests worden eerst uitgevoerd omdat ze het snelst zijn, daarna integratie- en API-tests, en vervolgens de kleine set end-to-end-tests. Fouten komen het eerst aan het licht op het niveau dat het minst belangrijk is. Guru99 behandelt de mechanica in continue integratie.

Meestal komt het doordat de piramide omgekeerd is: er wordt zwaar geรฏnvesteerd in trage, kwetsbare UI-tests en bijna geen in unit-tests. Andere oorzaken zijn het ontbreken van automatisering in de story-schattingen en testsuites die niemand voldoende vertrouwt om een โ€‹โ€‹release te blokkeren.

Het hele leveringsteam. Ontwikkelaars zijn verantwoordelijk voor de unit tests, testers voor de API en de end-to-end lagen, en beiden controleren elkaars werk. Een apart downstream automatiseringsteam introduceert de overdrachtvertraging die Scrum juist zou moeten elimineren.

Isoleer de test uit de blokkerende pipeline, maak een defect aan en repareer of verwijder de test binnen de sprint. Een onbetrouwbare test in de hoofdrun laten staan, leert het team om rode builds te negeren, wat meer kost dan de ontbrekende testdekking.

Zelfherstellende locators identificeren een verplaatst element opnieuw vanuit de context in plaats van een foutmelding te geven, waardoor door onderhoud veroorzaakte fouten worden verminderd. Modellen genereren ook testgegevens, prioriteren welke tests moeten worden uitgevoerd op basis van een diff en groeperen dubbele fouten, zodat een sprintteam slechts รฉรฉn keer hoeft te triageren.

Het stelt ze snel op. GitHub-copiloot Het genereert paginaobjecten, fixtures en beweringen vanuit bestaande code, waardoor veel van de complexiteit wordt weggenomen.ping. RevBekijk elk concept, want een gegenereerde test kan het huidige gedrag in plaats van het gewenste gedrag bevestigen.

Vat dit bericht samen met: