Wat is Agile testen?
AGILE TESTING is een testpraktijk die de regels en principes van agile softwareontwikkeling volgt. In tegenstelling tot de Waterfall-methode, kan Agile Testing bij de start van het project beginnen met continue integratie tussen ontwikkeling en testen. Agile Testing-methodologie is niet sequentieel (in de zin dat het pas wordt uitgevoerd na de coderingsfase) maar continu.
In dit artikel zullen we bespreken
- Agile testplan.
- Agile teststrategieën.
- Het Agile testkwadrant.
- QA-uitdagingen met agile softwareontwikkeling.
- Risico op automatisering in Agile-processen.
Agile testplan
Agile-testplan omvat soorten testen die in die iteratie worden uitgevoerd, zoals testgegevensvereisten, infrastructuur, testomgevingen en testresultaten. In tegenstelling tot het watervalmodel wordt in een agile model voor elke release een testplan geschreven en bijgewerkt. Typische testplannen in agile omvatten
- Testbereik
- Nieuwe functionaliteiten die worden getest
- Niveau of soorten testen op basis van de complexiteit van de functies
- Testen van belasting en prestaties
- Overweging voor infrastructuur
- Mitigatie- of risicoplan
- Middelen
- Resultaten en mijlpalen
Agile teststrategieën
De levenscyclus van Agile testen omvat vier fasen
(a) Iteratie 0
Tijdens de eerste fase of iteratie 0 voert u initiële installatietaken uit. Het omvat het identificeren van mensen voor testen, het installeren van testtools, het plannen van bronnen (usability testing lab), enz. De volgende stappen zijn ingesteld om te bereiken in Iteratie 0
a) Opstellen van een business case voor het project
b) Stel de randvoorwaarden en de projectscope vast
c) Geef een overzicht van de belangrijkste vereisten en gebruiksscenario's die bepalend zijn voor de afwegingen bij het ontwerp
d) Schets een of meer kandidaat-architecturen
e) Identificatie van het risico
f) Kostenraming en voorbereiding van een voorlopig project
(b) Constructieherhalingen
De tweede fase van agile testmethodologie is Constructie-iteraties, het merendeel van de tests vindt plaats tijdens deze fase. Deze fase wordt waargenomen als een reeks iteraties om een increment van de oplossing te bouwen. Om dat te doen, implementeert het team binnen elke iteratie een hybride van praktijken van XP, Scrum, Agile-modellering en agile data, enzovoort.
Bij constructie-iteratie volgt het agile team de geprioriteerde vereistenpraktijk: bij elke iteratie nemen ze de meest essentiële vereisten die overblijven uit de stapel met werkitems en implementeren deze.
Constructie-iteratie is onderverdeeld in twee: bevestigende tests en onderzoekstests. Bevestigende tests zijn gericht op het verifiëren dat het systeem voldoet aan de intentie van de belanghebbenden zoals beschreven aan het team tot nu toe, en wordt uitgevoerd door het team. Terwijl de onderzoekstests het probleem detecteren dat het bevestigingsteam heeft overgeslagen of genegeerd. Bij onderzoekstesten bepaalt de tester de potentiële problemen in de vorm van defectverhalen. Bij onderzoekstests worden veelvoorkomende problemen behandeld, zoals integratietests, belasting- / stresstests en beveiligingstests.
Nogmaals, bevestigende tests zijn er twee aspecten van het testen van ontwikkelaars en agile acceptatietests . Beiden zijn geautomatiseerd om continue regressietests gedurende de hele levenscyclus mogelijk te maken. Bevestigend testen is het flexibele equivalent van testen volgens de specificatie.
Agile acceptatietests zijn een combinatie van traditionele functionele tests en traditionele acceptatietests terwijl het ontwikkelteam en de belanghebbenden het samen doen. Terwijl het testen van ontwikkelaars een mix is van traditionele unit-tests en traditionele service-integratietests. Bij het testen van ontwikkelaars worden zowel de toepassingscode als het databaseschema geverifieerd.
(c) Einde spel of overgangsfase vrijgeven
Het doel van "Release, End Game" is om uw systeem met succes in productie te nemen. De activiteiten in deze fase zijn het opleiden van eindgebruikers, het ondersteunen van mensen en operationele mensen. Het omvat ook marketing van de productrelease, back-up en herstel, afronding van systeem- en gebruikersdocumentatie.
De laatste testfase van de agile-methodologie omvat testen van het volledige systeem en acceptatietesten. Om uw laatste testfase zonder obstakels te voltooien, zou u het product rigoureuzer moeten testen terwijl het zich in constructie-iteraties bevindt. Tijdens het eindspel werken testers aan de verhalen over defecten.
(d) Productie
Na de release-fase gaat het product naar de productiefase.
De Agile testkwadranten
De agile testkwadranten verdelen het hele proces in vier kwadranten en helpen te begrijpen hoe agile testen wordt uitgevoerd.
a) Agile Kwadrant I - De interne codekwaliteit is de belangrijkste focus in dit kwadrant, en het bestaat uit testcases die technologiegedreven zijn en worden geïmplementeerd om het team te ondersteunen, het omvat
1. Eenheidstests
2. componenttests
b) Agile Quadrant II - Het bevat testcases die business gedreven zijn en geïmplementeerd zijn om het team te ondersteunen. In dit kwadrant staan de eisen centraal. Het soort test dat in deze fase wordt uitgevoerd, is
1. Testen van voorbeelden van mogelijke scenario's en workflows
2. Testen van gebruikerservaring zoals prototypes
3. Koppel testen
c) Agile Kwadrant III - Dit kwadrant geeft feedback aan kwadranten één en twee. De testcases kunnen worden gebruikt als basis om automatiseringstesten uit te voeren. In dit kwadrant worden veel iteratierondes uitgevoerd die het vertrouwen in het product vergroten. Het soort testen dat in dit kwadrant wordt uitgevoerd, is
1. Bruikbaarheidstesten
2. Verkennende toetsing
3. Koppel testen met klanten
4. Gezamenlijk testen
5. Gebruikersacceptatietest
d) Agile Kwadrant IV - Dit kwadrant concentreert zich op de niet-functionele eisen zoals prestatie, veiligheid, stabiliteit, etc. Met behulp van dit kwadrant wordt de applicatie gemaakt om de niet-functionele kwaliteiten en verwachte waarde te leveren.
1. Niet-functionele tests zoals stress- en prestatietests
2. Beveiligingstesten met betrekking tot authenticatie en hacking
3. Infrastructuur testen
4. Testen van gegevensmigratie
5. Schaalbaarheidstesten
6. Laadtest
QA-uitdagingen met agile softwareontwikkeling
a) De kans op fouten is meer in agile, aangezien documentatie minder prioriteit krijgt en uiteindelijk meer druk legt op het QA-team
b) Nieuwe functies worden snel geïntroduceerd, waardoor de beschikbare tijd voor testteams wordt verkort om te bepalen of de nieuwste functies voldoen aan de vereisten en echt de zakelijke behoeften aanpakt
c) Testers zijn vaak nodig om een semi-ontwikkelaar te spelen
d) Testuitvoeringscycli zijn sterk gecomprimeerd
e) Zeer weinig tijd om een testplan op te stellen
f) Voor regressietesten hebben ze een minimale timing
g) Verandering in hun rol van poortwachter van kwaliteit naar partner in kwaliteit
h) Veranderingen in vereisten en updates zijn inherent aan een agile methode en worden de grootste uitdaging voor QA
Risico op automatisering in Agile-processen
- Geautomatiseerde gebruikersinterface biedt een hoog niveau van vertrouwen, maar ze zijn traag uit te voeren, kwetsbaar in het onderhoud en duur om te bouwen. Automatisering verbetert de testproductiviteit mogelijk niet significant, tenzij de testers weten hoe ze moeten testen
- Onbetrouwbare tests zijn een groot probleem bij geautomatiseerd testen. Het oplossen van falende tests en het oplossen van problemen met betrekking tot brosse tests moet een topprioriteit zijn om false positives te voorkomen
- Als de geautomatiseerde test handmatig wordt gestart in plaats van via CI (Continuous Integration), bestaat het risico dat ze niet regelmatig worden uitgevoerd en daarom kunnen tests mislukken
- Geautomatiseerde tests zijn geen vervanging voor een verkennend handmatig testen. Om de verwachte kwaliteit van het product te verkrijgen, is een combinatie van testtypen en niveaus vereist
- Veel in de handel verkrijgbare automatiseringstools bieden eenvoudige functies, zoals het automatiseren van het vastleggen en opnieuw afspelen van handmatige testgevallen. Een dergelijke tool moedigt testen aan via de gebruikersinterface en leidt tot inherent broze en moeilijk te onderhouden tests. Ook het opslaan van testgevallen buiten het versiebeheersysteem zorgt voor onnodige complexiteit
- Om tijd te besparen, is het automatiseringstestplan vaak slecht gepland of ongepland, waardoor de test mislukt
- Een testopzet- en afbouwprocedures worden meestal gemist tijdens testautomatisering, terwijl het uitvoeren van handmatige tests, een testopzet- en afbouwprocedures naadloos klinkt
- Productiviteitsstatistieken, zoals een aantal testcases die per dag worden gemaakt of uitgevoerd, kunnen vreselijk misleidend zijn en kunnen leiden tot een grote investering in het uitvoeren van nutteloze tests
- Leden van het agile automatiseringsteam moeten effectieve consultants zijn: benaderbaar, coöperatief en vindingrijk, anders faalt dit systeem snel
- Automatisering kan testoplossingen voorstellen en leveren die te veel doorlopend onderhoud vergen in verhouding tot de geboden waarde
- Geautomatiseerde tests missen mogelijk de expertise om effectieve oplossingen te bedenken en te leveren
- Geautomatiseerd testen kan zo succesvol zijn dat er geen belangrijke problemen meer zijn om op te lossen, en dus onbelangrijke problemen worden.
Gevolgtrekking
Agile-methodologie bij het testen van software omvat het testen zo vroeg mogelijk in de levenscyclus van softwareontwikkeling. Het vereist een hoge klantbetrokkenheid en testcode zodra deze beschikbaar komt. De code moet stabiel genoeg zijn om het systeem te testen. Er kunnen uitgebreide regressietests worden uitgevoerd om ervoor te zorgen dat de bugs worden verholpen en getest. Communicatie tussen de teams zorgt voornamelijk voor succes bij het testen van agile-modellen !!!