DevOps er en sammenlægning af udviklings- og driftspraksis for softwareudvikling og levering.
Testere, der er involveret i DevOps-leveringsmodellen, begynder at stille spørgsmål som:
Dette indlæg diskuterer de værktøjer, strategier og praksis, vi har brug for at implementere for at teste effektivt i en DevOps-verden, der omfatter automatisering og kontinuerlig test i DevOps.
Hvordan har test udviklet sig fra vandfald til adræt til DevOps?
Test- og kvalitetssikringspraksis har set et betydeligt skift fra vandfaldets dage, Agile og nu DevOps. I vandfaldsmodellen blev test betragtet som en fase i softwareudviklingens livscyklus. Testere og testindsats blev meget lukket, hvor testere plejede at være en del af et testteam og ofte adskilt fra udviklingsteamet.
Testere ejede teststrategi og blev betragtet som kvalitetsportører. Testning var stort set manuel og plejede at ske efter softwaren var fuldt udviklet og lige før frigivelse til produktion.
Ligeledes brugte software det lang tid at levere. Et separat driftsteam var ansvarlig for at frigive softwaren til produktion, hvilket i bedste fald skete hvert par måneder. Der var intet eller lavt niveau af kommunikation / samarbejde mellem Ops-teamet og Dev-teamet.
Agile model skabte et skift i udviklings- og testrummet såvel som frigivelsesfrekvensen. Software blev udviklet iterativt og trinvist. Scrum, som er en metode i Agile leveringsmodellen, blev hurtigt meget populær.
Udviklingsindsats blev opdelt i en række korte iterationer, der typisk varede 2-4 uger. Hver iteration ville skabe en potentielt overførbar software ved at tilføje nye eller forbedre eksisterende funktioner.
Testere blev en del af udviklingsteamet, og testning blev en parallel aktivitet til softwareudvikling snarere end en fase i slutningen af SDLC. Testaktiviteten blev et fælles ansvar, og kvaliteten var ejet af udviklingsteamet.
Agile-modellen smeltede udviklings- og testpraksis og banede vejen for en hurtigere levering af software, men den faktiske implementering til produktion blev stadig udført af et separat TechOps-team.
Mens TechOps-teamet havde kendskab til servere, netværk og implementering, var de normalt opmærksomme på detaljerne i hver udgivelse. Feedback til udviklingsteamet var langsom. Hvis der eksisterede en fejl i frigivelsen, ville det normalt tage få timer for udviklingsteamet at blive opmærksom på problemet.
DevOps tager Agile-modellen et skridt videre ved at bringe frigivelses- og implementeringsaktiviteterne tættere på aktiviteterne inden for udvikling og test. Dette betyder, at et agilt team alene er ansvarligt for udvikling, test og frigivelse af den software, de opretter.
Test i DevOps spænder over hele softwareudvikling og leveringscyklus. Testere fokuserer ikke længere kun på funktionel test og verifikation af funktioner.
Som testere skal vi også være involveret i operationstest, performance test, grundlæggende sikkerhedstest samt at være i stand til at overvåge og analysere produktionsdata og logfiler.
Dan Ashby har en fremragende post om test i DevOps, hvor han beskriver
Du kan se, hvorfor folk kæmper for at forstå, hvor test passer i en model, der slet ikke nævner det. For mig passer test til hvert eneste punkt i denne model.
Faktisk kan og bør test ske på hvert trin i en DevOps-model. I Agil teststrategipost , beskrev vi, hvordan test passer ind i Agile-modellen.
DevOps teststrategi kan udvide det ved at tilføje følgende sektioner:
Valg af værktøjer og teknologier bliver stadig så vigtige i DevOps-modellen. Valg af værktøjer giver en organisations evne til at levere applikationer og tjenester med høj hastighed.
Der lægges større vægt på automatiseret test i DevOps, da vi ønsker at skabe en kultur, hvor vi hurtigt og med tillid kan skubbe koden ned i systemerne.
Ud over automatiserede funktionelle tests skal vi også have et sæt præstationstest samt sikkerhed / modstandsdygtighedstest i leveringsrørledningen.
Det er overflødigt at sige, før man først og fremmest kan implementere en af ovenstående automatiserede tests, er det at opbygge en automatiseret bygge- og leveringsrørledning i et kontinuerligt integrationsværktøj, såsom Jenkins.
Test i produktion betyder ikke nødvendigvis at udføre dine funktionelle / performance test-scripts mod et live system, hvor brugerne bruger applikationen.
Vi kan starte med at analysere tendenser i A / B eller multivariant tests. Vi kan også overvåge servere for enhver mærkelig opførsel, såsom hukommelseslækage, høj CPU-brug osv.
Hvordan har alt dette ændret testernes rolle og test i DevOps?
Det forventes nu, at testere har mindst følgende viden og færdigheder for effektivt at kunne udføre testaktiviteter