Kontinuerlig testning i DevOps

Vad är kontinuerlig testning?

Kontinuerlig testning i DevOps är en typ av mjukvarutestning som involverar testning av programvaran i varje skede av mjukvaruutvecklingens livscykel. Målet med kontinuerlig testning är att utvärdera kvaliteten på programvaran i varje steg av den kontinuerliga leveransprocessen genom att testa tidigt och testa ofta.

Den kontinuerliga testprocessen i DevOps involverar intressenter som utvecklare, DevOps, QA och Operationella systemet.

Hur skiljer sig kontinuerlig testning?

Kontinuerlig testning
Kontinuerlig testning

Det gamla sättet att testa var hand-off-centriskt. Programvaran överlämnades från ett team till ett annat. Ett projekt skulle ha bestämda utvecklings- och QA-faser. QA-team ville alltid ha mer tid för att säkerställa kvalitet. Målet var att kvaliteten skulle gå före projektplanen.

Men företag vill ha snabbare leverans av mjukvara till slutanvändaren. Ju nyare programvaran är, desto bättre kan den marknadsföras och öka intäktspotentialen för företaget. Därför utvecklades ett nytt sätt att testa.

Kontinuerlig betyder obruten testning som görs på kontinuerlig basis. I en kontinuerlig DevOps-process flyttas en mjukvaruförändring (release-kandidat) kontinuerligt från utveckling till testning till implementering.

Kontinuerlig DevOps-process
Kontinuerlig DevOps-process

Koden utvecklas, levereras, testas och distribueras kontinuerligt.

Till exempel, när en utvecklare kontrollerar koden i källkodsservern som Jenkins automatiserade uppsättning enhetstester exekveras i den kontinuerliga processen. Om testerna misslyckas avvisas bygget och utvecklaren meddelas. Om bygget klarar testet distribueras den till prestanda-, QA-servrar för uttömmande funktions- och belastningstester. Testerna körs parallellt. Om testerna blir godkända distribueras programvaran i produktionen.

Kontinuerlig testning är en liten kugg i cykeln för kontinuerlig utveckling, integration och driftsättning.

Aktuell teststapel
Aktuell teststapel

Mjukvaruutveckling är inte samma sak som förr i tiden skär vi utvecklingen från månad till veckor. Den aktuella teststacken (se figuren ovan) har rubriken för UI-testning. Men målet är att få fler och fler automatiserade enhetstester.

Hur skiljer sig kontinuerlig testning från testautomatisering?

Testautomation vs kontinuerlig testning

Parameter Testautomation Kontinuerlig testning
Definition Testautomatisering är en process där verktyg eller programvara används för att automatisera uppgifter. Det är en metod för mjukvarutestning som fokuserar på att uppnå kontinuerlig kvalitet och förbättring.
Syfte En uppsättning liknande eller repetitiva uppgifter kan en maskin utföra, snabbare, med färre misstag. Den kontinuerliga testprocessen hjälper till att hitta riskerna, ta itu med dem och förbättra kvaliteten på produkten.
Förutsättning Automatisering i testning möjlig utan att integrera kontinuerlig testning. Kontinuerlig testning kan inte implementeras utan testautomatisering.
Tid Utgivning av programvara kan ta en månad till år. Programvaruversion kan släppas varje vecka till timme.
Återkoppling Regelbunden feedback efter testning av varje version. Feedback i varje steg måste vara omedelbar.
Historik Automatiserade tester har gjorts i decennier för att göra testprocessen snabbare. Kontinuerlig testning är ett relativt nyare koncept.

Hur man gör kontinuerliga tester

  • Använda verktyg för att generera testautomationssvit från användarberättelser/krav
  • Skapa testmiljö.
  • Kopiera och anonymisera produktionsdata för att skapa testdatabädd
  • Använd tjänstvirtualisering för att testa API
  • Parallell prestandatestning

Verktyg för kontinuerliga tester

Här är en sammanställd lista över de bästa Verktyg för kontinuerliga tester :

1) QuerySurge

QuerySurge är den smarta datatestningslösningen som är den första i sitt slag med fullständiga DevOps-lösningar för kontinuerlig datatestning. Nyckelfunktioner inkluderar Robust API med 60+ anrop, detaljerad dataintelligens och dataanalys, sömlös integrering i DevOps pipeline för kontinuerlig testning och verifierar stora mängder data snabbt.

Börja testa gratis

2) Jenkins

Jenkins är ett verktyg för kontinuerlig integration som är skrivet med hjälp av Java språk. Detta verktyg kan konfigureras via GUI-gränssnitt eller konsolkommandon.

Ladda länk: https://jenkins.io/

3) Travis

Travis är ett kontinuerligt testverktyg som finns på GitHub. Den erbjuder värdbaserade och lokala varianter. Det ger en mängd olika språk och en bra dokumentation.

Ladda länk: https://travis-ci.org/

4) Selenium

Selenium är ett testverktyg med öppen källkod. Den stöder alla ledande webbläsare som Firefox, Chrome, IE och Safari. Selenium WebDriver används för att automatisera webbapplikationstestning.

Ladda länk: https://www.seleniumhq.org/

Fördelar med kontinuerliga tester

  • Accelerera leverans av programvara
  • Kontinuerlig testning förbättrar kodkvaliteten
  • Det hjälper till att bedöma exakt täckning av affärsrisk.
  • Den integreras sömlöst i DevOps Process
  • Hjälper till att skapa en smidig och pålitlig process på bara timmar istället för månader.
  • Accelererar time-to-market med en kontinuerlig återkopplingsmekanism.
  • Slår ihop traditionellt silade team för att möta moderna företagsbehov. Löser upp kopplingen mellan utvecklings-, test- och driftteam.
  • Testautomatisering hjälper till att uppnå konsekvens genom att behålla samma konfiguration för alla relevanta tester.
  • Framhåller affärsförväntningar för att minska affärsrisker
  • Tillhandahåller allmän tillgång till testmiljö med tjänstvirtualisering

Utmaningar med kontinuerliga tester

  • Den traditionella processen begränsar kulturell förändring bland utvecklings- och kvalitetssäkringspersonal.
  • Brist på DevOps-kunskaper och rätt verktyg för att testa i Agile & DevOps-miljöer.
  • Heterogena testmiljöer som aldrig kommer att spegla produktionsmiljön.
  • Konventionell testprocess och löst definierad testdatahantering.
  • Längre kodintegreringscykler skapar integrationsproblem och sena defektkorrigeringar
  • Otillräckliga och ineffektiva resurser och testmiljöer
  • Komplex applikationsarkitektur och affärslogik som begränsar användningen av DevOps.

Slutsats

  • Inom mjukvaruteknik är kontinuerlig testning en process för att testa tidigt, testa ofta, testa överallt och automatisera.
  • Det gamla sättet att testa var en handoff-centrerad. Programvaran överlämnas från ett team till ett annat
  • Jenkins, Travis och Selenium är populära kontinuerliga tester och Integrationsverktyg.
  • Kontinuerlig testning ger handlingsbar feedback enligt varje steg i leveranspipelinen.
  • Kontinuerliga tester hjälper till att förbättra kodkvaliteten
  • Den traditionella processen begränsar kulturell förändring bland utvecklings- och kvalitetssäkringspersonal.
  • Längre kodintegreringscykler skapar integrationsproblem och sena defektkorrigeringar