Test i DevOps World

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:

  • Hvor passer test til en DevOps-model?
  • Hvordan er test og QA i DevOps anderledes end test i Agile og vandfaldsmodeller?
  • Hvilke yderligere færdigheder forventes jeg som QA at kende?

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.




QA og test i DevOps

Hvordan har test udviklet sig fra vandfald til adræt til DevOps?

Vandfaldsmodel

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.

Adræt model

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-model

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.




DevOps teststrategi

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:

Test automatisering og kontinuerlig test i DevOps

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

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.



Effekten af ​​DevOps på testning

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

  • Grundlæggende netværksviden
  • Grundlæggende Unix / Shell-scripting, f.eks. bash, python
  • Kontinuerlig integration / kontinuerlig levering f.eks. Jenkins,
  • Værktøjstestværktøjer som JMeter eller Gatling
  • Klar til drift og test af modstandsdygtighed
  • Kendskab til containere, Docker, Kubernetes
  • Forespørgsel på overvågningsværktøjer såsom Splunk
  • Clouds-tjenester, f.eks. AWS, Azure