Test automation in een continuous integration/continuous delivery (CI/CD) pipeline

Waarom continuous delivery?

Tegenwoordig moeten bedrijven steeds sneller nieuwe producten en diensten bouwen om zo de concurrenten voor te zijn, daarom neemt het gebruik van Agile en DevOps toe. Softwareproducten moeten in de kortst mogelijke cycli worden uitgebracht. Deze behoefte aan snelle ontwikkelingscycli leidt tot een ander probleem, namelijk meer bugs. 

CD pipeline Dilbert comic
Bron: https://www.qmetry.com/

Waarom is automation testing belangrijk voor CI/CD? 

De sleutel tot het integreren van kwaliteit in onze software, is door ervoor te zorgen dat we snel feedback krijgen over de impact van nieuwe wijzigingen. Continuous testing helpt om de snelheid en flexibiliteit van agile te realiseren en zorgt bovendien voor een sneller herstel als er defecten in het product worden gevonden. Test automation maakt het mogelijk om snel en vroeg te testen. Ook geeft het belanghebbenden nauwkeurigere informatie over risico’s, waardoor ze op bedrijfsniveau betere beslissingen nemen. Om hoge kwaliteit software te bereiken, moeten we binnen het delivery process continu verschillende soorten tests uitvoeren. 

continuous integration in agile methodology
Bron: http://tryqa.com

Automation testing is belangrijk voor een succesvolle pipepline voor continuous integration/continuous delivery (CI/CD) om verschillende redenen die hieronder worden toegelicht.

  • Gemakkelijke en efficiënte beoordeling van kleine wijzigingen. Doordat in een continuous integration process de meeste wijzigingen klein zijn en test automation ze kan dekken, kan het team continu wijzigingen doorvoeren die al voldoende zijn getest. Naast automated tests blijven enkele manual testing cruciaal na een grote update van software, zoals een bruikbaarheidstest. 
  • Faster regression tests – the continuous delivery process requires quick feedback. Automation testing can be executed much more quickly than manual testing and provide results quickly. To help shorten the overall execution time, automated tests can run in parallel.
  • More consistent results – an efficient continuous integration pipeline should not contain too many variations or anomalies. To meet expectations all the way to the release, process consistency should be maintained.
  • Betere lenigheid. Nieuwe technologieën verschijnen en eisen veranderingen. Om die reden moet een goede pijplijn flexibel zijn om frameworks bij te werken, configuraties aan te passen en nieuwe tools te introduceren. Te veel manual testing maken een CI / CD pipeline minder wendbaar. Pijpleidingen die test automation gebruiken, kunnen automatisch opnieuw worden geconfigureerd. Lees meer over de aanpak van agile testing van spriteClould hier. 

Test automation is een ingewikkeld onderwerp, maar ontzettend belangrijk voor de huidige softwareontwikkelingsprojecten. Ga voor meer informatie naar onze gids“Test Automation: nearly everything you need to know.”

Deployment pipeline

Deployment Pipeline
Bron: https://blogs.msdn.microsoft.com

Een belangrijk patroon van CD is een deployment pipeline die continuous integration and test automation omvat. Zoals de diagrammen weergegeven moeten codewijzigingen een aantal tests doorstaan.

  • Unit tests
  • Automated regression tests (functionele tests)
  • Exploratory en usability tests (functionionele tests)
A diagram of the Continuous Delivery Process
Bron: https://leanpub.com

In de continuous deployment pipeline kan elke code wijziging een release kandidaat zijn. Een van de taken van de deployment pipeline is het opsporen van regressie problemen. Zolang er geen regressie problemen worden gedecteerd kunnen pakketten met success worden vrijgegeven. Als er daarna een defect wordt ontdekt dan moet de pipelijn worden verbeterd door tests toe te voegen of bij te werken.

Problemen moeten zo snel mogelijk worden gevonden en de tijd tussen inchecken en vrijgeven korter. Parallellisatie van activiteiten in de deployment pipeline in plaats van veel opeenvolgende fasen kan helpen. Het feedbackproces is ook erg belangrijk:

  • Als er bugs worden ontdekt bij de verkennende tests dan moeten geautomatiseerde tests worden verbeterd worden.
  • Als er defecten worden ontdekt in de acceptatietest dan moeten unit-tests worden verbeterd.
 

Een betrouwbare benadering tot automation testing

Stages of development and testing

De vaardigheid om test voor automation te indentificeren is de sleutel tot het creeëren van de beste technische benadering. Vaak herhaalde taken vergen de meeste middelen en zijn daarom de beste kandidaten voor het automation process. Zodra automation testing voltooid is dan is manual testing nog steeds vereist. In het kader van automation zijn er verschillende soorten tests.

The test pyramind
Source: http://james-willett.com

Unit testing

Deze type test controleert of de individuele eenheden van de code werken en kunnen worden geïntegreed in de repository. Meestal zijn deze tests gericht op locaties waar bugs worden verborgen op individuele functies. Unit-tests moeten erg snel zijn en ongeveer 80% van de codebase beslaan. Dit kan voldoende vertrouwen geven dat de applicatie op dit punt naar behoren werkt. Als unit-tests niet geautomatiseerd zijn dan is er niet veel kans op succes.

Component integration testing

Integration tests worden uitgevoerd om defecten in de interacties tussen geïntegreede componenten of systemen te vinden.

User Interface (UI) Testing

UI testing controleert of de fronted-interfaces van een applicatie worden weergegeven en werken zoals beschreven in de vereisten in alle ondersteunde browsers van platforms. Virtuele machines kunnen en worden vaak gebruikt om meerdere combinaties op hoge snelheid parallel te testen.

API (middleware) testing

API-tests controleren de interoperability tussen softwaresystemen en componenten. Deze tests simuleren aanroepen naar API-eindpunten en valideren de reacties van de server. 

Functional Software Testing

Tijdens functional testing worden verschillende functies van de app vergeleken met de eisen of specificaties. Een tester vertegenwoordigt de gebruiker of klant die de applicatie gebruikt. Functional testing is gericht op de user functionality in plaats van de internal interaction van de componenten van de applicatie.

Regression Testing

Het doel van regression testing is om bugs te ontdekken die optreden als gevolg van verbeteringen en bug fixes. Om te valideren dat de bestaande functionaliteit nog steeds werkt, moeten bestaande testcases worden uitgevoerd tegen nieuwe code wijzigingen voorafgaand aan de release. Om tijd te besparen tijdens de frequente releases, besten teams soms minder tijd aan regressietesten. Dit kan betekenen dat bugs de eingebruikers kunnen bereiken. Dit is een type test dat een goede kandidaat is voor automation.

World's most interesting programmer.

De uitdagingen in test automation

Er is veel inspanning en expertise nodig om test environments en effectief automation framework te creëren en configureren. Om het juiste automation framework op te zetten is meer tijd nodig en de kosten worden hoger. Een andere uitdaging is het vinden van automation experts met de juiste vaardigheden die het test automation framework kunnen opzetten en onderhouden, tools kunnen bouwen en technische problemen oplossen. spriteCloud en andere organisaties bieden hun expertise op het gebied van test automation aan om teams te helpen dit te bereiken.

Veelgestelde vragen over automation testing in een CI/CD pipeline.

Gewoon een tool kiezen en deze meteen gaan gebruiken als deze niet werkt en dan teruggaan naar handmatige processen als dat niet lukt is een slechte gewoonte. Doe dit niet. Automation moet vroegtijdig wordne geïntegreed in het continuous testproces in de levenscycli van applicaties en architectuurlagen van de API tot het web, mobiel, business intelligence (BI) en datawarehouses om uitgebreide geautomatiseerde testmogelijkheden te bieden.

Hoe begin je met het introduceren van test automation into development process?

De meest belangrijke functionaliteit in het systeem moet als eerst worden geautomatiseerd. Het uitvoeren van deze bij elke commit is de volgende stap. Voeg vervolgens nieuwe tests toe voor gewijzigde functionaliteit en nieuwe toegevoegde functionaliteit. Uiteindelijk zal dit uitgroeien tot een uitgebreide geautomatiseerde teststuite. Het is beter om een paar tests te laten uitvoeren die snel en stabiel zijn dan een groot aantal tests die zwak, willekeurig en vaak mislukken. In dat geval negeert het team de tests waarschijnlijk, waardoor de integriteit van het project in gevaar komt.

Wie moet de geautomatiseerde tests maken en onderhouden?

Het antwoord op deze vraag is iedereen in het team. Ontwikkelaars zouden vooral moeten werken aan het maken en onderhouden van test automation suites. Bij een constatering van een storing moet dit worden gerepareerd. Het motiveert ontwikkelaars om testbare software te schrijven. Ontwikkelaars geven niet om de software’s testability, wanneer automated tests worden gecreëerd en onderhouden door een apart team. Het achteraf inbouwen van geautomatiseerde tests op dergelijke systemen is erg duur. Slecht ontworpen, niet-testbare software is een belangrijke factor die bijdraagt aan geautomatiseerde test cases die duur zijn in het onderhoud. Dit is een van de redenen waarom DevOps steeds belangrijker wordt. Als u denkt dat uw team niet de juiste kennis in huis heeft om test automation op te zetten dan heeft spriteCloud veel ervaring met het opzetten en trainen van ontwikkelteams om automation testing uit te voeren.

Moeten alle manual testers worden ontslagen tijdens het continiuous delivery process?

Het antwoord daarop is nee. Testers weten hoe gebruikers met deze applicatie omgaan. Ontwikkelaars moeten samenwerken met testers om hun perspectief te begrijpen en testers kunnen meer  leren over automation. Het is belangrijk dat testers continu verkennende tests uitvoeren. Zoals met iedereen in de IT- industrie, moeten testers nieuwe vaardigheid leren.

Moeten alle tests worden geautomatiseerd?

Het antwoord is nee. Handmatige activiteiten zoals verkennende en bruikbaarheidstest kunnen niet worden vervangen door test automation. Om ervoor te zorgen dat het product goed werkt, moet een bruikbaar continuous development process alle soorten testactiviteiten omvatten.

Calliope Pro

De voordelen van continuous testing is door uit te voeren van automation in een continuous integration/continuous delivery pipeline zouden op dit punt vrij duidelijk moeten zijn. Onze tool Calliope Pro is een uitstekende oplossing om uw testresultaten zo te dashboarden dat alle belanghebbenden van het project profiteren. Calliope Pro is onafhankelijk van tools, wat betekent dat het werkt met alle testtools of frameworks die je gebruikt. Het is ook gratis, zodat u het nut ervan voor uw team kunt evalueren zonder enige consequenties.

Suggested Reading...

Author: spriteCloud

This is the spriteCloud company author. We use this profile when posting general company-related things and as a catch-all for posts that were written by former colleagues.

We’re spriteCloud, a leader in software and cybersecurity testing.

Aside from interesting articles, we also have a team of software testers that can help your organisation.

Have a look at our testing solutions.

Stay up-to-date on all things quality assurance, test automation, and cybersecurity.

Subscribe to our mailing list!