Kontinuerlig testing i DevOps
Hva er kontinuerlig testing?
Kontinuerlig testing i DevOps er en type programvaretesting som involverer testing av programvaren på alle stadier av programvareutviklingens livssyklus. Målet med kontinuerlig testing er å evaluere kvaliteten på programvaren ved hvert trinn i den kontinuerlige leveringsprosessen ved å teste tidlig og teste ofte.
Den kontinuerlige testprosessen i DevOps involverer interessenter som Developer, DevOps, QA og Operanasjonalt system.
Hvordan er kontinuerlig testing annerledes?

Den gamle måten å teste på var hånd-off-sentrisk. Programvaren ble overlevert fra ett team til et annet. Et prosjekt vil ha bestemte utviklings- og kvalitetssikringsfaser. QA-team har alltid ønsket mer tid til å sikre kvalitet. Målet var at kvaliteten skulle gå foran prosjektplanen.
Imidlertid ønsker virksomheten raskere levering av programvare til sluttbrukeren. Jo nyere programvaren er, jo bedre kan den markedsføres og øke inntektspotensialet til selskapet. Derfor ble det utviklet en ny måte å teste på.
Kontinuerlig betyr uavbrutt testing utført på en kontinuerlig basis. I en kontinuerlig DevOps-prosess flyttes en programvareendring (utgivelseskandidat) kontinuerlig fra utvikling til testing til distribusjon.

Koden utvikles, leveres, testes og distribueres kontinuerlig.
For eksempel, hver gang en utvikler sjekker koden i kildekodeserveren, som Jenkins automatiserte sett med enhetstester, utføres i den kontinuerlige prosessen. Hvis testene mislykkes, blir bygget avvist, og utvikleren varsles. Hvis bygget består testen, distribueres den til ytelses-, QA-servere for uttømmende funksjonstester og belastningstester. Testene kjøres parallelt. Hvis testene består, distribueres programvaren i produksjon.
Kontinuerlig testing er et lite tannhjul i syklusen for kontinuerlig utvikling, integrasjon og distribusjon.

Programvareutvikling er ikke det samme som tidligere, vi kuttet utviklingen fra måned til uker. Den nåværende teststabelen (se figuren over) har tittelen UI-testing. Men målet er å få flere og flere automatiserte enhetstester.
Hvordan er kontinuerlig testing forskjellig fra testautomatisering?
Testautomatisering vs kontinuerlig testing
| Parameter | Testautomasjon | Kontinuerlig testing |
|---|---|---|
| Definisjon | Testautomatisering er en prosess der verktøy eller programvare brukes til å automatisere oppgaver. | Det er en programvaretestmetodikk som fokuserer på å oppnå kontinuerlig kvalitet og forbedring. |
| Formål | Et sett med lignende eller repeterende oppgaver, en maskin kan utføre, raskere, med færre feil. | Den kontinuerlige testprosessen hjelper til med å finne risikoen, adressere dem og forbedre kvaliteten på produktet. |
| Forutsetning | Automatisering i testing mulig uten å integrere kontinuerlig testing. | Kontinuerlig testing kan ikke implementeres uten testautomatisering. |
| Tid | Programvareutgivelse kan ta en måned til år. | Programvareutgivelse kan bli utgitt ukentlig til timevis. |
| Tilbakemelding | Regelmessig tilbakemelding etter testing av hver utgivelse. | Tilbakemelding på hvert trinn må være øyeblikkelig. |
| Historie | Automatisert testing har blitt utført i flere tiår for å gjøre testprosessen raskere. | Kontinuerlig testing er et relativt nyere konsept. |
Hvordan gjøre kontinuerlig testing
- Bruker til verktøy for å generere testautomatiseringssuite fra brukerhistorier/krav
- Lag testmiljø.
- Kopier og anonymiser produksjonsdata for å lage testdatabed
- Bruk tjenestevirtualisering for å teste API
- Parallell ytelsestesting
Verktøy for kontinuerlig testing
Her er en kuratert liste over de beste Verktøy for kontinuerlig testing :
1) QuerySurge
QuerySurge er den smarte datatestingsløsningen som er den første i sitt slag komplette DevOps-løsning for kontinuerlig datatesting. Nøkkelfunksjoner inkluderer Robust API med 60+ samtaler, detaljert dataintelligens og dataanalyse, sømløs integrasjon i DevOps-pipelinen for kontinuerlig testing, og verifiserer store datamengder raskt.
2) Jenkins
Jenkins er et kontinuerlig integrasjonsverktøy som er skrevet ved hjelp av Java språk. Dette verktøyet kan konfigureres via GUI-grensesnitt eller konsollkommandoer.
Last ned link: https://jenkins.io/
3) Travis
Travis er et kontinuerlig testverktøy som er vert på GitHub. Den tilbyr hostede og lokale varianter. Det gir en rekke ulike språk og god dokumentasjon.
Last ned link: https://travis-ci.org/
4) Selenium
Selenium er åpen kildekode-testverktøy for programvare. Den støtter alle de ledende nettleserne som Firefox, Chrome, IE og Safari. Selenium WebDriver brukes til å automatisere testing av nettapplikasjoner.
Last ned link: https://www.seleniumhq.org/
Fordeler med kontinuerlig testing
- Akselerer programvarelevering
- Kontinuerlig testing forbedrer kodekvaliteten
- Det hjelper å vurdere nøyaktig dekning av forretningsrisiko.
- Den integreres sømløst i DevOps Process
- Bidrar til å skape en smidig og pålitelig prosess på bare timer i stedet for måneder.
- Akselererer time-to-market med en kontinuerlig tilbakemeldingsmekanisme.
- Slår sammen tradisjonelt silede team for å møte moderne bedriftsbehov. Løser opp frakoblingen mellom utviklings-, test- og driftsteam.
- Testautomatisering bidrar til å oppnå konsistens ved å opprettholde samme konfigurasjon for alle relevante tester.
- Legger vekt på forretningsforventninger for å redusere forretningsrisiko
- Gir allestedsnærværende testmiljøtilgang med tjenestevirtualisering
Utfordringer ved kontinuerlig testing
- Den tradisjonelle prosessen begrenser kulturskiftet blant fagfolk innen utvikling og kvalitetssikring.
- Mangel på DevOps-ferdigheter og riktige verktøy for testing i Agile & DevOps-miljøer.
- Heterogene testmiljøer som aldri vil reflektere produksjonsmiljøet.
- Konvensjonell testprosess og løst definert testdatahåndtering.
- Lengre kodeintegrasjonssykluser skaper integrasjonsproblemer og sene feilrettinger
- Utilstrekkelige og ineffektive ressurser og testmiljøer
- Kompleks applikasjonsarkitektur og forretningslogikk som begrenser bruk av DevOps.
Konklusjon
- I programvareteknikk er kontinuerlig testing en prosess med tidlig testing, testing ofte, testing overalt og automatisering.
- Den gamle måten å teste på var en overlevering sentrisk. Programvaren overleveres fra ett team til et annet
- Jenkins, Travis og Selenium er populære Kontinuerlig testing og Integrasjonsverktøy.
- Kontinuerlig testing gir praktisk tilbakemelding i henhold til hvert trinn i leveringspipelinen.
- Kontinuerlig testing bidrar til å forbedre kodekvaliteten
- Den tradisjonelle prosessen begrenser kulturskiftet blant fagfolk innen utvikling og kvalitetssikring.
- Lengre kodeintegrasjonssykluser skaper integrasjonsproblemer og sene feilrettinger
