Hvis du noen gang har måttet spore opp en feil i koden din, vet du hvor frustrerende det kan bli. Denne frustrasjonen øker bare hvis du jobber med en stor kodebase.

Testing lar deg sjekke om resultatene av koden samsvarer med forventningene dine. På denne måten kan du enkelt identifisere og fikse et problem før du distribuerer applikasjonen. I tillegg til å hjelpe deg å oppdage kodefeil raskere, tvinger testing deg også til å skrive god kode.

1. Statisk testing

Statisk testing refererer til tester som kjører uten å kjøre kode. Dette skjer ved å sammenligne koden med tidligere angitte kodingsregler. De vanlige måtene å utføre statisk testing på inkluderer linting og typekontroll.

Linting innebærer å sjekke koden for programmerings- og stilfeil. En linter analyserer koden og flagger potensielle feil. Eksempler på lintingverktøy er EsLint, PyLint og CSSLint.

Typekontroll er prosessen med å håndheve skriveregler og begrensninger på verdier. Noen programmeringsspråk er sterkt skrevet, noe som betyr at de gir feil når verdiene ikke er godt skrevet.

Noen språk som JavaScript har imidlertid et svakt skrivesystem og er mer tilgivende. På disse språkene er feil vanskelige å fange, og et typekontrollbibliotek er avgjørende. For JavaScript kan du bruk TypeScript for å fremtvinge sterk skriving.

Du kan også bruke statiske analyseverktøy for å analysere kode automatisk. Disse verktøyene verifiserer kodekvaliteten og rapporterer om eventuelle problemer den finner. Eksempler på statiske analyseverktøy i markedet er SonarQube, DeepSource og SpotBugs. Når du velger en statisk analysator, sørg for at den støtter programmeringsspråket ditt.

2. Enhetstester

Enhetstester sjekker de minste testbare delene av en applikasjon for å finne ut om de fungerer som forventet. Du kan skrive enhetstester for funksjoner, moduler, objekter osv.

Selv om enhetstester kan være tidkrevende, bør de spare mer tid enn du ville brukt feilsøking av applikasjonen etter at du har skrevet all koden.

Generelt består enhetstesting av fire trinn:

  • Opprette testene
  • Gjennomgang av testen
  • Grunnlinje
  • Gjennomføring av testen.

Du kan skrive enhetstester manuelt eller automatisere dem ved hjelp av et enhetstestrammeverk. I en manuell test vil du skrive kode for å teste funksjonen eller enheten du trenger, og senere slette testkoden.

Hvis du bruker et rammeverk, spesifiser enheten du tester og de forventede resultatene, og kjør deretter testen. Testrammeverket vil da logge de mislykkede og beståtte testene. Det er generelt bedre å bruke et rammeverk fordi det er raskere.

Når du skriver en enhetstest, sørg for at enheten du tester er uavhengig. Hvis den er avhengig av eksterne data som variabler, kan du bruke mocks. Spot erstatter de manglende dataene som brukes i enheten.

For eksempel hvis du tester en funksjon som er avhengig av data hentet fra et API, kan du opprette et falskt dataobjekt for testformål.

3. Integrasjonstester

Integrasjonstester sjekker hvordan ulike komponenter fungerer sammen. Dette er i motsetning til enhetstester som tester uavhengige komponenter. Du skriver integrasjonstester etter enhetstester.

Integrasjonstester er avgjørende da de sikrer at applikasjonslogikken din holder.

Tenk for eksempel på to moduler: en som henter data fra et API og en annen som analyserer dem. Du vil forsikre deg om at koden din hentet de riktige dataene og analyserte dem riktig.

Det er her integrasjonstesting kommer inn. Det sikrer ingen feil i den logiske flyten fra en modul til den andre.

4. Ende-til-ende-tester

End-to-end-testing sjekker applikasjonsflyten fra sluttbrukerens perspektiv. Prosessen tester applikasjonen fra start til slutt, ettersom brukeren vil bruke applikasjonen. Disse testene gir mer dekning enn enhetstester eller integrasjonstester.

End-to-end-tester definerer applikasjonens avhengigheter, databaser og ekstern kommunikasjon. De gjenskaper et virkelighetsscenario så nøyaktig som mulig.

For eksempel, når du tester et registreringsskjema, vil en ende-til-ende-test teste forskjellige scenarier som:

  • En bruker som sender inn både e-post og passord
  • En bruker som bruker et svakt passord
  • En bruker som bruker en ugyldig e-post
  • En bruker som bare sender inn en e-post
  • En bruker som bare sender inn et passord

End-to-end-testene sikrer at applikasjonen oppfører seg som forventet i disse scenariene.

Å skrive tester vs. Skrive kode

Det er viktig å teste søknaden din tidlig i utviklingsprosessen. Selv om alle disse testene er viktige, er det viktig å finne en balanse som fungerer for deg. Ellers vil du bruke for mye tid på å skrive tester i stedet for kode.

Enhetstesting er avgjørende for de fleste applikasjoner, og det kan være lurt å bruke nok tid på det. Når du har utført enhetstester, kan du være sikker på at byggesteinene i applikasjonen din fungerer som den skal.