Artikler

Hva er programvaretesting, hva betyr det å teste programvare

Programvaretesting er et sett med prosesser for å undersøke, evaluere og fastslå fullstendigheten og kvaliteten på programvare skrevet for datamaskiner. Sikrer samsvar for et programvareprodukt med hensyn til regulatoriske, forretningsmessige, tekniske, funksjonelle og brukerkrav.

Programvaretesting, eller programvaretesting, er også kjent som applikasjonstesting.

Programvaretesting er først og fremst en stor prosess som består av flere sammenkoblede prosesser. Hovedmålet med programvaretesting er å måle integriteten til programvaren sammen med dens fullstendighet i forhold til dens grunnleggende krav. Programvaretesting innebærer å undersøke og teste programvare gjennom ulike testprosesser. Målene for disse prosessene kan omfatte:

Verifisering av programvarens fullstendighet mot funksjonelle/forretningskrav
Identifisere feil/tekniske feil og sikre at programvaren er feilfri
Evaluering av brukervennlighet, ytelse, sikkerhet, lokalisering, kompatibilitet og installasjon
Testet programvare må bestå alle tester for å være komplett eller egnet for bruk. Noen av de forskjellige typene programvaretestmetoder inkluderer testing av hvit boks, testing av svart boks og testing av grå boks. Videre kan programvaren testes som en helhet, i komponenter/enheter eller innenfor et strømførende system.

Black Box-testing

Black Box Testing er en programvaretestingsteknikk som fokuserer på å analysere funksjonaliteten til programvaren, med hensyn til den interne funksjonen til systemet. Black Box Testing ble utviklet som en metode for å analysere kundekrav, spesifikasjoner og designstrategier på høyt nivå.

En Black Box Testing-tester velger et sett med gyldige og ugyldige kodeutførelse og inndatabetingelser og sjekker for gyldige utdatasvar.

Black Box-testing er også kjent som funksjonell testing eller lukket boks-testing.

En søkemotor er et enkelt eksempel på en applikasjon som er gjenstand for black box-testing. En søkemotorbruker skriver inn tekst i søkefeltet i en nettleser. Søkemotoren lokaliserer og henter deretter resultater relatert til brukerdata (utdata).

Fordelene med Black Box-testing inkluderer:

  • Enkelhet: Forenkler testing av prosjekter på høyt nivå og komplekse applikasjoner
  • Spar ressurser: Testere fokuserer på funksjonaliteten til programvaren.
  • Testcaser: Fokus på programvarefunksjonalitet for å lette rask utvikling av testcaser.
  • Gir fleksibilitet: ingen spesifikk programmeringskunnskap er nødvendig.

Black Box-testing har også noen ulemper, som følger:

  • Testcase/manusdesign og vedlikehold kan være utfordrende fordi Black Box-testverktøy avhenger av kjente innganger.
  • Samhandling med det grafiske brukergrensesnittet (GUI) kan ødelegge testskript.
  • Testene gjelder kun funksjonene til applikasjonen.

Testing av hvit boks

Under white-box-testing kjøres kode med forhåndsvalgte inngangsverdier for å validere de forhåndsvalgte utgangsverdiene. White-box-testing innebærer ofte å skrive stubbekode (en kodebit som brukes til å erstatte en spesifikk funksjon. En stubbe kan simulere oppførselen til eksisterende kode, for eksempel en prosedyre på en ekstern maskin.) og også drivere.

Fordelene med white-box-testing inkluderer:

  • Muliggjør gjenbruk av testtilfeller og gir større stabilitet
  • Forenkler kodeoptimalisering
  • Forenkler å finne plasseringen av skjulte feil i de tidlige stadiene av utviklingen
  • Forenkler effektiv applikasjonstesting
  • Fjern unødvendige kodelinjer


Ulempene inkluderer:

  • Krever en erfaren tester med kunnskap om intern struktur
  • Tar tid
  • Høye kostnader
  • Bit-of-code validering er vanskelig.
  • White-box-testing inkluderer enhetstesting, integrasjonstesting og regresjonstesting.

Enhetstest

En enhetstest er en komponent i Software Development Life Cycle (SDLC) der en omfattende testprosedyre brukes individuelt på de minste delene av et programvareprogram for ønsket egnethet eller oppførsel.


En enhetstest er en kvalitetsmåling og -evalueringsprosedyre som brukes i de fleste programvareutviklingsaktiviteter for bedrifter. Generelt sett evaluerer en enhetstest hvordan programvarekoden samsvarer med det overordnede målet for programvaren/applikasjonen/programmet og hvordan dens egnethet påvirker andre mindre enheter. Enhetstester kan gjøres manuelt – av en eller flere utviklere – eller gjennom en automatisert programvareløsning.

Under testing er hver enhet isolert fra hovedprogrammet eller grensesnittet. Enhetstester utføres vanligvis etter utvikling og før distribusjon, noe som letter integrasjon og tidlig problemdeteksjon. Størrelsen eller omfanget av en enhet varierer avhengig av programmeringsspråket, programvareapplikasjonen og testmålene.

Funksjonell test

Funksjonell testing er en testprosess som brukes innen programvareutvikling hvor programvare testes for å sikre at den overholder alle krav. Det er en måte å sjekke programvare for å sikre at den har all nødvendig funksjonalitet spesifisert i funksjonskravene.


Funksjonell testing brukes hovedsakelig for å verifisere at et stykke programvare gir samme utdata som kreves av sluttbrukeren eller virksomheten. Vanligvis innebærer funksjonell testing å evaluere og sammenligne hver programvarefunksjon mot forretningskrav. Programvaren testes ved å gi den noen relaterte input, slik at utdataene kan evalueres for å se hvordan den samsvarer med, forholder seg til eller varierer fra de grunnleggende kravene. I tillegg sjekker funksjonstester også brukervennligheten til programvaren, for eksempel å sørge for at navigasjonsfunksjonene fungerer etter behov.

Nyhetsbrev for innovasjon
Ikke gå glipp av de viktigste nyhetene om innovasjon. Registrer deg for å motta dem på e-post.

Regresjonstesting

Regresjonstesting er en type programvaretesting som brukes til å avgjøre om nye problemer er et resultat av programvareendringer.

Før en endring tas i bruk, testes et program. Etter at en endring er tatt i bruk, testes programmet på nytt i utvalgte områder for å oppdage om endringen har skapt nye feil eller problemer, eller om den faktiske endringen har tjent sitt tiltenkte formål.


Regresjonstesting er avgjørende for store programvareapplikasjoner, siden det ofte er vanskelig å vite om endring av en del av et problem har skapt et nytt problem for en annen del av applikasjonen. For eksempel kan en endring i et låneskjema for banksøknad føre til at en månedlig transaksjonsrapport mislykkes. I de fleste tilfeller kan problemene virke urelaterte, men de kan faktisk være årsaken til frustrasjon blant applikasjonsutviklere.

Andre situasjoner som krever regresjonstesting inkluderer å oppdage om visse endringer oppnår et fastsatt mål eller testing for nye farer forbundet med problemer som dukker opp igjen etter en periode uten problemer.

Moderne regresjonstesting håndteres først og fremst gjennom spesialiserte kommersielle testverktøy som tar øyeblikksbilder av eksisterende programvare som deretter sammenlignes etter å ha tatt i bruk en spesifikk endring. Det er nesten umulig for menneskelige testere å utføre de samme oppgavene like effektivt som automatiserte programvaretestere. Dette gjelder spesielt med store og komplekse programvareapplikasjoner innenfor store IT-miljøer som banker, sykehus, produksjonsbedrifter og store forhandlere.

Stresstesting

Stresstesting refererer til testing av programvare eller maskinvare for å avgjøre om ytelsen er tilfredsstillende under ekstreme og ugunstige forhold, som kan oppstå som et resultat av stor nettverkstrafikk, prosessbelastning, underklokking, overklokking og høye krav til ressursbruk.

De fleste systemer er utviklet forutsatt normale driftsforhold. Derfor, selv om en grense overskrides, er feil ubetydelige dersom systemet stresstestes under utvikling.


Stresstesting brukes i følgende sammenhenger:

  • Programvare: Stresstesting legger vekt på tilgjengelighet og feilhåndtering under ekstremt tung belastning for å sikre at programvaren ikke krasjer på grunn av utilstrekkelige ressurser. Programvarestresstesting fokuserer på identifiserte transaksjoner for å avbryte transaksjoner, som er sterkt stresset under testing, selv når en database ikke er lastet. Stresstestingsprosessen laster samtidige brukere utover normale systemnivåer for å finne det svakeste leddet i systemet.
  • Maskinvare: Stresstester sikrer stabilitet i normale datamiljøer.
  • Nettsteder: Stresstester bestemmer grensene for enhver sidefunksjonalitet.
  • CPU: Endringer som overvolting, undervolting, underlocking og overlocking kontrolleres for å finne ut om de kan håndtere store belastninger ved å kjøre et CPU-intensivt program for å teste for systemkrasj eller fryser. CPU-stresstest er også kjent som torturtest.

Automatiske tester

Automatisert testing (software test automation) er en tilnærming til kodetesting som gjør bruk av spesielle programvareverktøy som kjører tester automatisk og deretter sammenligner faktiske testresultater med forventede resultater.

Automatisert testing spiller en viktig rolle i Continuous Delivery (CD), Continuous Integration (CI), DevOps og DevSecOps. De viktigste fordelene med automatisert testing inkluderer:

  • Automatisert testing sparer utviklere for tid og penger ved å gjøre testprosessen mer effektiv.
  • Automatiserte tester identifiserer feil mer effektivt enn manuelle tester.
  • Når tester er automatiserte, kan flere testverktøy implementeres parallelt.


I programvareutvikling er det spesielt nyttig å utføre automatiserte tester under byggeprosessen for å sikre at en applikasjon er fri for byggefeil og utfører den tiltenkte funksjonen.

Å ta seg tid til å automatisere programvaretesting vil til slutt spare utviklere tid ved å redusere risikoen for at en kodeendring vil ødelegge eksisterende funksjonalitet.


Testing er et svært viktig stadium i utviklingsprosessen. Sikrer at alle feil er fikset og at produktet, programvaren eller maskinvaren fungerer etter hensikten eller så nær målytelsen som mulig. Automatisert testing, snarere enn manuell testing, er avgjørende for å konsekvent levere kostnadseffektiv programvare som oppfyller brukernes behov på en rettidig måte med minimale defekter.

Typer automatiserte tester som brukes i programvareutvikling
  • Enhetstest: Test et enkelt lavnivåprogram i et isolert miljø før du verifiserer dets integrasjon med andre enheter.
  • Integrasjonstesting: Enhetstester og andre applikasjonskomponenter testes som en kombinert enhet.
  • Funksjonstester: Sjekk om et programvaresystem oppfører seg som det skal.
  • Ytelsestesting: Evaluer applikasjonens robusthet under høyere belastninger enn forventet. Ytelsestester avslører ofte flaskehalser.
  • Røyktest: Bestemmer om en build er stabil nok til å fortsette med videre testing.
  • Nettlesertesting: Kontroller at programvarekomponenter er kompatible med ulike nettlesere.

Manuell testing utføres fortsatt på ulike tidspunkt under utviklingen, men dette gjøres for det meste av utviklerne eller maskinvareingeniørene selv for raskt å se om endringene de har gjort har hatt ønsket effekt.

Ercole Palmeri

Nyhetsbrev for innovasjon
Ikke gå glipp av de viktigste nyhetene om innovasjon. Registrer deg for å motta dem på e-post.

Siste artikler

Utgivere og OpenAI signerer avtaler for å regulere flyten av informasjon som behandles av kunstig intelligens

Sist mandag kunngjorde Financial Times en avtale med OpenAI. FT lisensierer sin journalistikk i verdensklasse...

30 april 2024

Nettbetalinger: Her er hvordan strømmetjenester får deg til å betale for alltid

Millioner av mennesker betaler for strømmetjenester og betaler månedlige abonnementsavgifter. Det er vanlig oppfatning at du...

29 april 2024

Veeam har den mest omfattende støtten for løsepengevare, fra beskyttelse til respons og gjenoppretting

Coveware by Veeam vil fortsette å tilby responstjenester for cyberutpressing. Coveware vil tilby kriminaltekniske og utbedringsmuligheter...

23 april 2024

Grønn og digital revolusjon: Hvordan prediktivt vedlikehold transformerer olje- og gassindustrien

Prediktivt vedlikehold revolusjonerer olje- og gasssektoren, med en innovativ og proaktiv tilnærming til anleggsledelse...

22 april 2024