Teknologi Karrierer

Alt du trenger å vite om programvaretestingsmetoder

Fokusert programvaretester jobber på bærbar datamaskin på kontoret

••• Hero Images/Getty Images

InnholdsfortegnelseUtvideInnholdsfortegnelse

Før programvare sendes til offentlig eller kommersiell bruk, bruker programmerere timer på å stryke ut hver feil, og produktet forblir i limbo til alle interessenter er fornøyde.

Silicon Valley programvaregiganter som Google og Facebook vil ofte sende populære produkter til markedet til tross for programvarens lavprioriterte feil. Investorer og millioner av lojale brukere vil tolerere programvareoppdateringer og midlertidige knekk i produktene disse selskapene tilbyr.

De fleste programvareselskaper har ikke denne luksusen. Kunder vil at produktene skal fungere som annonsert og blir med rette skremt hvis det er uløste sårbarheter.

Hvorfor er testferdigheter nødvendig?

Med så mange tilgjengelige programvareutviklingsalternativer, tenker ikke kundene to ganger på å hoppe på skipet hvis produktet stinker bortkastet tid og penger. Programvarebedrifter må utføre strenge tester på produktene sine før de frigis til kunder. Disse testene gir følgende innsikt:

  • De fremhever forskjeller mellom det originale konseptet og det endelige resultatet.
  • De bekrefter at programvaren fungerer slik designerne planla.
  • De vurderer funksjoner og kvalitet.
  • De validerer at sluttproduktet oppfyller kundens krav.

Testing følger en streng plan for å optimalisere arbeidsmengde, tid og penger, samtidig som det gir interessenter viktig informasjon for å flytte produktet fremover. Målet er å legge til rette for en positiv sluttbrukeropplevelse ved å holde en grundig kvalitetssikring (QA) program. Gitt den høye innsatsen for utviklere, er QA-ledere noen av de toppinntekter i teknologibransjen. Testing følger vanligvis disse trinnene:

  1. Gjennomfør en behovsanalyse, der ledere skisserer en plan for å sette en passende teststrategi på plass.
  2. Begynn tester og analyser resultatene.
  3. Rett opp eventuelle feil og sett programvaren gjennom regresjonstesting (et system for å sjekke at programmet fortsatt fungerer etter modifikasjoner).
  4. Lag en testavslutningsrapport som beskriver prosessen og resultatene.

Enkeltpersoner kan bli sertifiserte programvaretestere gjennom BCS, The Chartered Institute for IT, STOPPE (International Software Testing Qualifications Board), og ASQ (American Society for Quality).

Programvaretestingsmetoder

Black and white box-testing er to grunnleggende metoder for å bedømme produktadferd og ytelse. Black box-testing, også kalt funksjonell eller spesifikasjonsbasert testing, fokuserer på output. Testere er ikke opptatt av de interne mekanismene. De sjekker bare at programvaren gjør det den skal. Kunnskap om koding er ikke nødvendig, og testere jobber på brukergrensesnittnivå.

Hvit boks testing bruker kodingserfaring som en del av testprosedyren. Når et produkt feiler, går testerne dypt inn i koden for å finne årsaken. Programvareutviklere vil gjøre dette selv fordi kundene forventer at de skal få et produkt til å fungere. Testing av hvite bokser er også referert til som 'strukturbasert' eller 'glassboks'-testing.

Statisk testing undersøker kildekoden og eventuell medfølgende dokumentasjon, men kjører ikke programmet. Statiske tester starter tidlig i produktets utvikling under verifiseringsprosessen.

Dynamisk testing bruker ulike innganger når programvaren kjører, og testere sammenligner utdata med forventet oppførsel. Grafisk brukergrensesnitttesting evaluerer tekstformatering, tekstbokser, knapper, lister, layout, farger og andre grensesnittelementer. GUI-testing er tidkrevende, og tredjepartsselskaper tar ofte på seg oppgaven i stedet for utviklere.

Testnivåer

Ulike testnivåer brukes til å identifisere områder med svakhet og overlapping i hver fase av programvareutvikling livssyklus . Testnivåene er:

  • Enhetstest
  • Integrasjonstesting
  • Systemtesting
  • Aksepttesting

Ved enhetstesting tester utviklere de mest grunnleggende kodedelene, som klasser, grensesnitt og funksjoner/prosedyrer. De vet hvordan koden deres skal reagere og kan gjøre justeringer avhengig av utdata.

Integrasjonstesting er også kjent som 'modul' eller 'program' testing. Det ligner på enhetstesting, men inneholder et høyere nivå av integrering. Programvaremoduler testes for defekter for å bekrefte funksjonen deres. Integrasjonstesting identifiserer feil når modulene integreres. Ulike metoder for integrasjonstester inkluderer 'bottom-up', 'top-down' og 'functional incremental'.

Systemtesting tester komponenter av et prosjekt som helhet i forskjellige miljøer. Systemtesting faller inn under black box-metoden og er en av de siste testene i prosessen. Det vil avgjøre om systemet er forberedt for å møte forretnings- og brukerbehov.

Det er generelt to typer aksepttesting. Ved alfatesting kjøres programvaren internt på utviklerens nettsted i et simulert eller faktisk miljø. Programvaren kjører som om live sluttbrukere brukte den. Utviklere noterer eventuelle problemer og begynner å rette opp feil og andre problemer.

Også under omfanget av black-box-testing, i akseptansetesting, tester klienter programvare for å finne ut om utvikleren har fullt utviklet programmet for å passe deres ønskede spesifikasjoner.

Betatesting, eller felttesting, lar klienter teste produktet på nettstedene deres under reelle forhold. Kunder kan tilby en gruppe sluttbrukere muligheten til å teste programvaren via forhåndsversjoner eller betaversjoner. Betatesting har som mål å få faktisk tilbakemelding fra brukerne, som sendes til utvikleren.

Testtyper

Ulike typer programvaretester er designet for å fokusere på spesifikke mål. Testingeniøren og konfigurasjonslederen bruker installasjonstesting for å sikre at sluttbrukeren kan installere og kjøre programmet. Den dekker områder som installasjonsfiler, installasjonsplasseringer og administrative rettigheter.

Utviklingstesting implementerer en rekke synkroniserte strategier for å oppdage og forhindre defekter. Den inkluderer statisk kodeanalyse, peer-kodevurderinger, sporbarhet og metrikkanalyse. Målet er å redusere risiko og spare kostnader.

Brukeropplevelse kommer i søkelyset med brukervennlighetstesting. Den måler hvor enkelt GUI er å bruke. Den kontrollerer nøyaktigheten og effektiviteten til funksjoner og de emosjonelle responsene til testpersonene.

En tilregnelighetstest indikerer om programvaren er verdt tiden og kostnadene for å fortsette videre tester. Hvis det er for mange feil, vil mer aggressive tester ikke følge.

Sanitetstesting utføres under programvareutgivelsesfasen, hvor røyktesting utføres for å se om programvaren vil kjøre nok til å være testbar.

Røyktesting avslører fundamentale feil som er alvorlige nok til å forhindre utslipp. Når utviklere tester et nytt bygg, kalles det en 'byggeverifisering'-test. Når systemet gjennomgår modifikasjoner, overvåker regresjonstesting uventet oppførsel. Den påpeker negative effekter på moduler eller komponenter.

Testere legger inn unormale oppføringer og ser programvarens evne til å håndtere uventede input i destruktive tester. Dette viser utviklere hvor robust programmet er til feilhåndtering.

Når maskinvare eller andre funksjoner feiler, viser gjenopprettingstesting hvor godt programvaren kan gjenopprette og fortsette å fungere.

Automatisering utfører funksjoner som er utfordrende å implementere manuelt. Testing innebærer å bruke spesifikk programvare for å kjøre tester og gi data om faktiske kontra forventede utfall.

Programvaren må kjøres i ulike datamiljøer, så kompatibilitetstesting sjekker hvordan programvaren reagerer på ulike systemer. For eksempel tester programmerere programvaren med ulike operativsystemer og nettlesere.

Tester må være omfattende og adressere alle kundens bekymringer, ellers blir prosjektet raskt sløsing med ressurser.

Ytelsestesting undersøker programvareytelse i forskjellige scenarier. Informasjon om respons, stabilitet, ressursallokering og hastighet samles inn. Undertester som volum, kapasitet og piggtesting spiller en rolle i denne prosessen.

Sikkerhetstesting måler programvarens evne til å beskytte brukernes sikkerhet. Autorisasjonsfunksjoner, autentisering, konfidensialitet, integritet, tilgjengelighet og ikke-avvisning er alle eksempler på funksjoner som må testes.

Tilgjengelighetstesting er annerledes enn brukervennlighetstesting. Dette bestemmer i hvilken grad brukere med ulike ferdigheter kan bruke programvaren.

Internaliserings- og lokaliseringstestresultater viser hvordan programvaren kan tilpasse seg ulike språk og regionale krav. Dette inkluderer å legge til komponenter for spesifikke steder og tekstoversettelse.