Ikke-funksjonell testing refererer til programvaretesting som utføres for å teste de ikke-funksjonelle aspektene ved en programvareapplikasjon.
Det finnes mange forskjellige typer ikke-funksjonell testing, og noen typer programvaretesting kan betraktes som både funksjonell testing og ikke-funksjonell på samme tid.
Ikke-funksjonell testing er nødvendig fordi den evaluerer essensielle brukerkriterier som ytelse og brukervennlighet og verifiserer om programvaren kjører som forventet utenfor dens grunnleggende funksjonalitet.
I denne artikkelen utforsker vi definisjonen og karakteristikkene for ikke-funksjonell testing ved siden av typer ikke-funksjonell testing, tilnærminger til ikke-funksjonell testing og testverktøy som kan bidra til å optimalisere og forbedre dine egne ikke-funksjonelle testprosesser.
Hva er ikke-funksjonell testing?
Ikke-funksjonell testing er enhver type programvaretesting der ikke-funksjonelle aspekter av programvarebyggingen blir testet.
Eksempler på ikke-funksjonell testing inkluderer testing designet for å vurdere kapasitet, ytelse, brukervennlighet, gjenoppretting og portabilitet.
Å verifisere kvaliteten og statusen til hvert av disse ikke-funksjonelle kriteriene er like viktig som å verifisere funksjonene til et stykke programvare, men disse parameterne testes ikke i standard funksjonstesting.
I hovedsak betyr ikke-funksjonell testing å teste «hvordan» programvarefunksjoner fungerer i stedet for å teste «om» de fungerer.
1. Når trenger du ikke-funksjonell testing?
Ikke-funksjonell testing utføres i systemtestfasen av programvaretesting etter at enhetstesting og integrasjonstesting har funnet sted.
Under systemtesting vil testere utføre både funksjonelle og ikke-funksjonelle tester, og starter med funksjonstesting.
Når testerne har konstatert at programvaren fungerer som forventet, utfører de ikke-funksjonelle tester for å vurdere om den også oppfyller ikke-funksjonelle parametere.
Det er vanligvis nødvendig å utføre funksjonstesting før ikke-funksjonell testing fordi det er umulig å teste påliteligheten eller ytelsen til funksjoner som ikke fungerer i det hele tatt. Ikke-funksjonell testing er en av de siste stadiene av programvaretesting før brukeraksepttesting og endelig produktutgivelse.
2. Når du ikke trenger ikke-funksjonell testing
Det er alltid viktig å teste ikke-funksjonelle aspekter ved programvare med mindre de allerede er testet og funnet å være tilstrekkelige.
Selv om du har utført ikke-funksjonelle tester på programvare før, kan det være nødvendig å teste ikke-funksjonelle parametere på nytt, for eksempel hvis nye funksjoner er lagt til programvaren eller hvis det er gjort endringer i koden som kan påvirke ytelse og pålitelighet.
Målene for ikke-funksjonell testing
Målene med ikke-funksjonell testing er å kontrollere at produktet oppfyller brukernes forventninger og å optimalisere produktet før utgivelse.
Det kan også hjelpe utviklere og testere til å forstå programvaren bedre og bruke denne kunnskapen i fremtidige optimaliseringer.
1. Kvalitetskontroll
Ikke-funksjonell testing har som mål å teste faktorer som påvirker produktets brukervennlighet, pålitelighet, vedlikeholdbarhet, portabilitet og effektivitet.
Testing av disse elementene sikrer at produktet som slippes ut på markedet er av passende høy kvalitet og oppfyller brukernes forventninger med hensyn til ytelse, lastetider og brukerkapasitet.
2. Risikostyring
Ikke-funksjonell testing reduserer også risikoen og kostnadene forbundet med å slippe et produkt til markedet ved å maksimere sjansene for at teamet slipper et tilfredsstillende produkt.
Ved å sjekke de ikke-funksjonelle parameterne til programvarebyggingen, er det mulig å redusere kostnadene ved å slippe produktet fordi behovet for videreutvikling og programvareendringer senere reduseres.
3. Optimalisering
Ikke-funksjonell testing hjelper testere og utviklere med å optimalisere programvarebyggingen og optimalisere ytelsen under installasjon, oppsett, utførelse og bruk.
Du kan også bruke ikke-funksjonell testing for å optimalisere måten du administrerer og overvåker programvarebyggingen på.
4. Datainnsamling
Ikke-funksjonell testing lar testere samle inn og produsere målinger og beregninger som kan brukes av testteam for intern forskning og utvikling.
Du kan bruke dataene du samler inn fra ikke-funksjonelle tester for å forstå hvordan produktet fungerer og hvordan du kan optimalisere det mer effektivt for brukerne.
5. Kunnskapsforbedring
Ikke-funksjonell testing forbedrer og forbedrer testteamets kunnskap om produktets oppførsel og teknologiene de bruker.
Dette hjelper ikke bare testteamene til å forstå programvaren de jobber med bedre, men det kan også gi nyttig kunnskap som hjelper testerne til å forstå fremtidige bygg bedre.
Hvem er involvert i ikke-funksjonell testing?
Ikke-funksjonell testing utføres vanligvis av testere i QA-miljøet, men noen ganger kan utviklere utføre ikke-funksjonelle tester under utvikling.
Systemtesting utføres nesten alltid av testere, og dette er testfasen hvor mesteparten av den ikke-funksjonelle testingen foregår.
Hvis ikke-funksjonelle tester mislykkes, vil testerne sende programvaren tilbake til utviklerne for å rette opp feilene i ytelsen før de tester på nytt.
Fordelene med ikke-funksjonell testing
Det er mange fordeler med å utføre ikke-funksjonell testing, og ikke-funksjonell testing er et viktig trinn i systemtesting.
Uten ikke-funksjonell testing ville ikke testteamet kunne verifisere at programvaren faktisk oppfyller kravene til kunden eller at den oppfyller kravene angitt i programvareutviklingsplanen.
1. Forbedre programvareytelsen
Ikke-funksjonell testing kan hjelpe testere og utviklere med å forbedre den generelle ytelsen til programvareapplikasjoner. Ikke-funksjonelle tester identifiserer områder hvor programvareytelse mangler, for eksempel når det gjelder lastehastighet eller prosesseringskapasitet, og ber programvareteam om å gjøre endringer for å rette opp disse feilene.
Dette sikrer at programvareteam bare gir ut programvare til publikum når den er klar, og når ytelsen er god nok.
2. Hold programvaren sikker
Ikke-funksjonell testing inkluderer sikkerhetstesting, som er avgjørende for å sikre at en programvarebygging er sikker og beskyttet mot eksterne trusler og angrep.
Sikkerhetstesting gjør det mulig for testere og utviklere å sjekke at programvaren beskytter konfidensielle data tilstrekkelig og har tilstrekkelig sikkerhet på plass for å beskytte mot moderne cyberangrep.
3. Øk brukervennligheten til programvaren
Ikke-funksjonell testing er den beste måten å gjøre programvaren din mer brukervennlig på, spesielt ved å utføre brukervennlighetstesting som vurderer hvor enkelt det er for brukere å lære å bruke og betjene programvaren.
Brukervennlighet er svært viktig fordi det bestemmer hvor fornøyde brukerne er med programvaren din og sikrer at brukerne er i stand til å dra full nytte av alt programvaren tilbyr.
4. Sørg for at programvaren oppfyller brukerbehov
Å sikre at programvare oppfyller brukernes behov bør være en av toppprioriteringene for alle programvareutviklings- og testteam. I tillegg til å forvente at programvaren skal være funksjonell, forventer brukere at programvaren fungerer bra, kjører jevnt og beskytter konfidensielle data.
Ikke-funksjonell testing er en av de eneste måtene å sikre at programvaren oppfyller disse kravene.
Utfordringene ved ikke-funksjonell testing
Det er noen ulemper ved å utføre ikke-funksjonelle tester. Selv om ikke-funksjonell testing er avgjørende under systemtestfasen av programvaretesting, kan prosessen med ikke-funksjonell testing utgjøre utfordringer for programvareteam som ikke har nok av ressurser og verktøy.
1. Repetisjon
Ikke-funksjonell testing i programvaretesting må utføres hver gang programvaren oppdateres av utviklere eller hver gang kode endres. Dette betyr at ikke-funksjonell testing kan være svært repeterende, noe som ikke bare tar tid, men også sliter ut testere.
Slitne testere som utfører svært repeterende oppgaver er også mer sannsynlig å bli distrahert og gjøre feil.
2. Kostnad
Fordi ikke-funksjonell testing er så repeterende, kan det også være ganske kostbart, spesielt for testteam som er avhengige av manuell ikke-funksjonell testing.
Programvareteam må allokere tid og budsjett for hyppige ikke-funksjonelle tester, og programvareutviklere må betale ekstra for denne ekstra testingen.
Hva tester vi i ikke-funksjonell testing?
Ikke-funksjonell testing kan brukes til å teste mange forskjellige ikke-funksjonelle parametere, som hver påvirker kvaliteten og brukervennligheten til systemet. Hver av disse parametrene testes under systemtesting mot kriterier angitt i testplanen.
1. Sikkerhet
Sikkerhetstesting er en type ikke-funksjonell testing som måler hvor godt et system er sikret mot eksterne trusler og angrep. Disse inkluderer bevisste sikkerhetsbrudd samt datalekkasjer og andre vanlige brudd.
Sikkerhetstesting er et viktig skritt i ikke-funksjonell testing fordi det gir sluttbrukere og klienter tryggheten om at dataene deres er sikre.
2. Pålitelighet
Testere bruker ikke-funksjonell testing for å vurdere påliteligheten til programvare og for å sikre at programvaren kontinuerlig kan utføre sine spesifiserte funksjoner uten feil.
Mens funksjonell testing sikrer at programvaren utfører sine nøkkelfunksjoner, er det bare ikke-funksjonell testing som faktisk tester påliteligheten og repeterbarheten til disse resultatene.
3. Overlevelsesevne
Overlevelsesevne beskriver hvordan et programvaresystem reagerer i tilfelle svikt i funksjon, og overlevelsestesting sikrer at hvis feil og feil oppstår, kan systemet gjenopprette seg selv.
Overlevelsestesting kan sjekke om programvaren er i stand til å lagre data for å minimere tap av data i tilfelle plutselig feil, for eksempel.
4. Tilgjengelighet
Tilgjengeligheten til programvaren refererer til i hvilken grad brukeren kan stole på systemet under driften. Dette kalles også stabilitet, og det testes ved stabilitetstesting.
Stabilitetstesting har en viss likhet med pålitelighetstesting fordi den sjekker om systemet kan utføre konsekvent forventede standarder.
5. Brukervennlighet
Brukervennlighetstesting er en annen viktig type ikke-funksjonell testing i programvaretesting. Denne typen testing vurderer hvor godt brukeren kan lære, betjene og bruke programvaresystemet ved å følge instruksjonene på skjermen og andre grunnleggende veiledninger.
Brukervennlighetstesting er viktig fordi hvis programvaren ikke er svært brukbar, vil de fleste brukere ganske enkelt forlate den eller velge å bruke noe annet.
6. Skalerbarhet
Skalerbarhetstesting tester i hvilken grad en programvareapplikasjon kan utvide sin prosesseringskapasitet for å møte økende etterspørsel.
For eksempel, hvis programvaren er designet for å brukes av flere brukere på et enkelt nettverk samtidig, hvordan fungerer det når ti brukere logger på samtidig? Påvirker høyere antall brukere ytelsen eller lastetiden betydelig?
7. Interoperabilitet
Interoperabilitetstesting er en type ikke-funksjonell testing som sjekker hvor godt et programvaresystem har grensesnitt med andre programvaresystemer.
Dette er spesielt viktig når programvare er utformet som en del av en serie produkter som alle integreres med hverandre.
8. Effektivitet
Effektivitet i programvaretesting refererer til i hvilken grad et programvaresystem kan håndtere kapasitet, mengde og responstid.
For eksempel kan testere vurdere hvor mange brukere som kan logge inn på systemet samtidig, hvor lang tid det tar å hente data fra databasen, eller hvor raskt programvaren kan utføre grunnleggende oppgaver.
9. Fleksibilitet
Fleksibilitet måler i hvilken grad et programvaresystem kan fungere med ulike typer maskinvare og periferiutstyr.
For eksempel hvor mye RAM programvaren krever eller om den krever en bestemt mengde CPU. Jo lavere krav til programvareapplikasjonen er, desto mer fleksibel er programvaren.
10. Bærbarhet
Portabilitetstesting brukes til å teste hvor fleksibelt programvaren kan overføres fra dets nåværende maskinvare- eller programvaremiljø, og hvor enkelt dette er å gjøre.
Portabilitet er viktig fordi det påvirker hvor enkelt sluttbrukere kan administrere programvare og flytte den mellom ulike systemer.
11. Gjenbrukbarhet
Gjenbrukstesting er en type ikke-funksjonell testing som tester om deler av programvaresystemet kan konverteres for gjenbruk i en annen applikasjon.
Selv om gjenbrukstesting vanligvis ikke påvirker klienter og sluttbrukere, er det en god refleksjon av hvor effektivt utviklere lager komponenter som kan gjenbrukes i fremtiden.
Egenskapene til ikke-funksjonelle tester
Å forstå hva ikke-funksjonelle tester er innebærer å forstå egenskapene til ikke-funksjonelle tester. Disse egenskapene definerer ikke-funksjonell testing i programvaretesting.
1. Målbar
Ikke-funksjonell testing er alltid kvantitativ og målbar, noe som betyr at testere ikke bruker subjektive fraser som «hyggelig» eller «bra», i stedet bruker tall og fakta for å beskrive resultatene av ikke-funksjonell testing.
For eksempel, i stedet for å beskrive lastetider som «rask» eller «sakte», bør ikke-funksjonell testing resultere i spesifikke tall som viser antall ganger.
2. Spesifikt
Når du utfører ikke-funksjonell testing, bør formålet med testene være spesifikt for designspesifikasjonene til programvaren.
For eksempel, hvis programvareprosjektplanen refererer til antall brukere som skal kunne logge inn på en gang, bør dette prioriteres ved ikke-funksjonell testing.
3. Ukjent
Selv om ikke-funksjonell testing kan utformes spesifikt for å måle attributter angitt i prosjektplaner, vil disse attributtene i mange tilfeller ikke spesifiseres på forhånd.
I dette tilfellet bør testerne ganske enkelt utføre ikke-funksjonell testing for å vurdere programvaren basert på hver parameter og senere sammenligne disse med forventningene.
Livssyklusen til ikke-funksjonelle tester
Siden ikke-funksjonell testing ikke refererer til en bestemt fase i programvaretestingens livssyklus, men ganske enkelt til en type testing som vanligvis skjer under systemtestfasen av programvaretesting, kan livssyklusen til ikke-funksjonell testing variere mye. mellom prosjektene.
Generelt følger den en lignende livssyklus som andre typer programvaretesting som starter med å analysere prosjektkrav og ender med testutførelse og syklusoppfyllelse.
1. Programvarebehovsanalyse
Den første fasen av livssyklusen for ikke-funksjonell testing er analyse av programvarekrav. Programvareteam jobber mot spesifikke kriterier når de bygger og tester applikasjoner, og disse kriteriene bør diktere hvilken type tester som må utføres.
2. Testplanlegging
Den neste fasen av livssyklusen er testplanlegging. Under testplanleggingsstadiet vil QA-lederen sette sammen en detaljert testplan som beskriver hva som skal testes, hvem som skal utføre testingen og hvilke testmetoder, metoder og verktøy som skal brukes.
Testplanen bør inneholde alle nødvendige detaljer som testere trenger for å lage og utføre testcases.
3. Oppretting av testcase
Oppretting av testcase er neste trinn i ikke-funksjonell testing. Dette stadiet innebærer å utvikle ikke-funksjonelle testcases som testere vil utføre på et senere tidspunkt for å teste de ikke-funksjonelle kravene til systemet.
Testtilfeller beskriver hva som skal testes, hvordan det skal testes, og hva det forventede resultatet av testen er.
4. Test miljøoppsett
Neste trinn i livssyklusen for ikke-funksjonell testing er å sette opp testmiljøet før testingen begynner.
Testmiljøet er der all testing finner sted, og det er hjemmet til ressurser og verktøy som du vil bruke til å utføre ikke-funksjonelle tester.
Testteamet forbereder testmiljøet som er satt opp før testutførelse.
5. Testutførelse
Testutførelse er neste fase av livssyklusen for ikke-funksjonell testing. Det innebærer å utføre testsakene som er opprettet tidligere for å teste ulike aspekter av programvareapplikasjoner, inkludert sikkerhet, lastetider, kapasitet og portabilitet.
Testteamet utfører hver sak individuelt og sjekker utfallet av hver test mot det forventede resultatet.
6. Gjenta syklusen
Den siste fasen av livssyklusen for ikke-funksjonell testing er syklusoppfyllelse og gjentakelse. Etter å ha utført alle testtilfellene, sjekker testerne hvilke tester som bestod og hvilke tester som mislyktes.
Tester som mislykkes indikerer vanligvis at det er en feil som må fikses av utviklere. Når utviklere har lappet eller redigert koden, gjentas testsyklusen for programvaren igjen til ingen defekter blir funnet.
Rydder opp litt forvirring:
Ikke-funksjonell testing vs funksjonell testing
Funksjonell testing og ikke-funksjonell testing er to forskjellige, men like viktige, typer programvaretesting som sammen brukes til å vurdere om en programvareapplikasjon oppfyller kravene til brukere som beskrevet i prosjektbeskrivelsen.
Selv om de begge er nødvendige typer testing som lar programvareteam identifisere defekter i programvarebygginger, er funksjonell og ikke-funksjonell testing helt forskjellige fra hverandre.
1. Hva er forskjellen mellom funksjonell og ikke-funksjonell testing?
Forskjellen mellom funksjonell og ikke-funksjonell testing ligger i hva de tester. Funksjonstesting tester funksjonene til applikasjonen og sjekker om de fungerer som forventet. Ikke-funksjonell testing tester andre aspekter ved applikasjonen som påvirker brukertilfredshet og applikasjonskvalitet.
Funksjonell og ikke-funksjonell testing forekommer i ulike faser av programvaretesting, men begge typer testing utføres vanligvis i systemtestfasen.
Både funksjonell og ikke-funksjonell testing kan hjelpe oss til å forstå hvor godt en applikasjon fungerer og om den utfører jobben sin tilstrekkelig.
Hvis du for eksempel tester en mobilapp som lar brukere lagre huskelister og handlelister, kan funksjonstesting teste funksjoner som å lage en ny liste, lagre en liste og gjøre endringer i eksisterende lister.
Ikke-funksjonell testing kan vurdere hvor godt applikasjonen fungerer på forskjellige mobile enheter, hvor raskt lister lastes opp og hvor mye appytelse som påvirkes når andre apper kjører i bakgrunnen.
2. Konklusjon: ikke-funksjonell testing vs funksjonell testing
Både funksjonell og ikke-funksjonell testing er viktige typer programvaretesting som kan hjelpe testere og QA-team til å vurdere om en applikasjon oppfyller gjeldende krav.
Mens funksjonell testing tester funksjonene til programvaren, tester ikke-funksjonell testing andre aspekter som kan påvirke ytelse, effektivitet og sikkerhet.
Enhetstesting , integrasjonstesting og API-testing er alle former for funksjonell testing. I hvert av disse stadiene av programvaretesting vurderer testerne hvor godt funksjoner og funksjoner fungerer enten individuelt eller sammen, og identifiserer feil og defekter som hindrer funksjoner i å fungere som forventet.
Sikkerhetstesting, brukervennlighetstesting, portabilitetstesting og lasttesting er alle former for ikke-funksjonell testing som lar testere vurdere hvor godt en app utfører funksjonene sine og støtter brukernes behov.
Typer ikke-funksjonell testing
Det finnes mange forskjellige typer ikke-funksjonell testing, som hver tester et annet ikke-funksjonelt aspekt av en programvareapplikasjons ytelse eller effektivitet.
Hver av disse typene tester vil teste forskjellige parametere, og noen tester kan teste de samme parameterne på forskjellige måter.
1. Ytelsestester
Ytelsestester er en type ikke-funksjonell test som sjekker hvor godt ulike programvarekomponenter fungerer. I stedet for å teste funksjonaliteten deres, som er hva funksjonell testing gjør, kan ytelsestester teste responstider, flaskehalser og feilpunkter. Ytelsestesting hjelper testerne med å sikre at programvaren er av høy kvalitet og at den er rask, stabil og pålitelig.
2. Stresstester
Stresstesting er en type ikke-funksjonell testing som tester hvor godt programvaren yter når den utsettes for unormale mengder stress. Dette kan bety å teste hvordan programvaren fungerer når noen prøver å bruke mange forskjellige funksjoner samtidig, eller mens de kjører mange andre applikasjoner samtidig.
Stresstesting søker å identifisere grensen for når programvaren slutter å fungere ordentlig og hva som skjer når systemet er under stress. Det lar testere forstå om systemet kan gjenopprette seg selv og om det varsler brukere med passende feilmeldinger.
3. Belastningstester
Lasttesting er en type testing som vurderer hvor godt programvare oppfører seg både under normale forhold og ved håndtering av tyngre belastninger. Den brukes til å bestemme hvor mye programvaren kan håndtere samtidig uten at ytelsen påvirkes negativt.
Lasttesting kan brukes til å teste hvordan applikasjoner fungerer når mange brukere bruker dem samtidig eller når brukere prøver å laste ned mye data samtidig.
Lasttesting er viktig hvis du vil sjekke om programvaren din er skalerbar.
4. Sikkerhetstester
Sikkerhetstester evaluerer programvareapplikasjoner og ser etter sårbarheter i programvarens sikkerhet. Disse inkluderer potensielle sikkerhetsrisikoer som kan føre til tap av data eller brudd som avslører konfidensielle data.
Sikkerhetstesting er viktig fordi det sikrer at produktet er tilstrekkelig beskyttet mot hacking, datainnbrudd og andre eksterne sikkerhetstrusler.
Noen eksempler på sikkerhetstester som testere kan utføre inkluderer sikkerhetsrevisjoner, etisk hacking, penetrasjonstesting, sikkerhetsskanninger og holdningsvurderinger.
5. Oppgraderings- og installasjonstester
Oppgraderings- og installasjonstesting er en type ikke-funksjonell programvaretesting som verifiserer hvor godt programvaren fungerer på forskjellige maskiner.
Hensikten med denne typen testing er å sikre at nye brukere enkelt kan installere programvaren på maskinene sine og eksisterende brukere kan oppgradere den når nye oppgraderinger slippes.
Oppgradering og installasjonstesting er viktig fordi sluttbrukere enkelt må kunne installere produktet ditt forutsatt at de jobber med en maskin som er kompatibel med den.
6. Volumtester
Volumtesting er en type testing som eksisterer for å verifisere hva som skjer når store mengder data legges til databasen på en gang. Dette identifiserer om applikasjonen kan håndtere store datamengder og hva som skjer med systemet hvis den ikke kan det.
Volumtesting er også kjent som flomtesting, og du kan bruke den til å vurdere datatap og feilmeldinger som oppstår når du legger til betydelige mengder data til systemet.
Volumtesting er den eneste måten å sikre at programvare kan håndtere datamengdene som brukere forventer at den skal gjøre.
7. Restitusjonstester
Gjenopprettingstester innebærer å tvinge programvaresystemet til ikke å teste hvor godt systemet gjenoppretter seg selv etter en krasj.
Gjenopprettingstesting kan hjelpe testere til å forstå hvordan programvare gjenoppretter data og forhindrer tap hvis maskinvaren kobles fra under bruk, hvis programvaren kobles fra nettverket under en dataoverføring, eller hvis du uventet starter systemet på nytt.
Denne typen testing er viktig fordi systemer uten riktige gjenopprettingsprotokoller kan lide alvorlige datatap når ulykker som dette inntreffer.
Hva du trenger for å starte ikke-funksjonell testing
Før du starter ikke-funksjonell testing, må du sørge for at du har forberedt testmiljøet og samlet verktøyene og dataene du trenger.
1. Testplan
Før du starter ikke-funksjonell testing, sørg for at du har en ferdig testplan som er underskrevet av de aktuelle personene.
Testplanen din bør inneholde alle relevante detaljer om hva du skal teste og hvordan. Den skal forklare når du skal bruke manuell testing og når du skal bruke automatisert testing, samt skissere rollene og ansvaret til alle som er involvert i testprosessen.
2. Testtilfeller
Før du kan utføre ikke-funksjonelle tester, må du opprette testcases. Hver testcase skisserer en spesifikk ting du skal teste, forklarer hvordan du skal teste den, og beskriver det forventede resultatet av testen.
Hvis du for eksempel utfører lasttesting, kan et eksempeltesting være å teste hvordan programvaren oppfører seg når ti brukere bruker samme modul samtidig.
3. Funksjonsverifisering
Du kan ikke utføre ikke-funksjonelle tester på programvarekomponenter hvis de ikke er funksjonelle.
Hvis du for eksempel vil teste hvor mange brukere programvaren kan håndtere å være pålogget samtidig, er det først viktig å verifisere at individuelle brukere faktisk kan logge på programvaren.
Før du starter ikke-funksjonell testing, sørg for at alle funksjonstestene har bestått og at programvaren fungerer slik du forventer at den skal.
Dette betyr vanligvis at røyktesting , sanitetstesting , enhetstesting, integrasjon og funksjonelle systemtesting allerede er utført.
4. Testverktøy
Før du starter ikke-funksjonell testing, samle alle testverktøy som du vil bruke til å utføre testene.
Enten du bruker automatiseringsverktøy til delvis automatisere noen av testene dine eller dokumentasjonsverktøy for å hjelpe deg med å administrere og lagre testrapporter for senere bruk, sørg for at verktøyene du vil bruke er tilgjengelige og klare til bruk, og at alle i testteamet vet hvordan de skal bruke hvert verktøy riktig.
5. Testmiljø
Sett opp testmiljøet før du starter ikke-funksjonell testing. Du har kanskje allerede et passende testmiljø, spesielt hvis du kan bruke det samme miljøet for testing av ikke-funksjonelle system og testing av funksjoner.
Det ideelle testmiljøet lar deg teste hvert element du trenger på de riktige enhetene.
Hvis du for eksempel tester volumhåndtering på smarttelefonenheter, er det bedre å teste dette på en faktisk smarttelefonenhet enn å prøve å etterligne et mobilmiljø på en stasjonær datamaskin.
Den ikke-funksjonelle testprosessen
Testing av ikke-funksjonelle aspekter ved en programvarebygging er en flertrinnsprosess som involverer klargjøring av testmiljøet, opprettelse av testtilfeller, innsamling av testdata og utføring av ikke-funksjonelle tester.
Det er mulig å dele testprosessen ned i små biter for å gjøre den lettere å følge for nybegynnere i ikke-funksjonell testing.
1. Ikke-funksjonelle testberedskapskontroller
Før du kan starte ikke-funksjonell testing, er det viktig å bekrefte at du er klar for denne testfasen.
Dette kan innebære å vurdere utgangskriteriene for den siste fasen av testingen for å sikre at programvaren har bestått den og å sikre at programvaren har bestått alle funksjonstester som kreves før ikke-funksjonell testing finner sted.
Noen team kan lage inngangskriterier for ikke-funksjonell testing, som omfatter alle betingelsene som må være oppfylt før ikke-funksjonell testing begynner.
2. Lag en testplan
Du har kanskje allerede utført dette trinnet tidligere hvis du utfører ikke-funksjonell testing som en del av systemtesting og følger systemtestplanen din. En testplan skisserer alle testene du må utføre og hvordan du har tenkt å gjennomføre dem.
Uten en klar testplan er det lett å miste av syne omfanget og målene for testene du utfører.
3. Lag testcases
Den neste fasen av ikke-funksjonell testing er å lage testcases designet for å teste hver ikke-funksjonelle parameter i programvaren.
Hver testtilfelle bør ha en testcase-ID, et testcasenavn, en beskrivelse og detaljer om det forventede resultatet av testen, samt eventuelle bestått- eller ikke-bestått-kriterier som er fastsatt på forhånd. Dette hjelper testerne til å forstå hvordan de skal utføre hver test og hvilke resultater de skal se etter.
4. Samle testdata
Før du kan utføre hvert testtilfelle, må du samle testdataene du skal bruke for hvert testtilfelle.
Dette betyr vanligvis å samle inn kode og data fra forskjellige moduler og komponenter som utgjør funksjonene og områdene du skal teste. Hvis du maksimerer testdekningen, bør du ha mye testdata å jobbe med.
5. Klargjør testmiljøet
Den neste fasen av ikke-funksjonell testing er klargjøring av testmiljøet. Testmiljøet er en testserver som du vil bruke til å utføre programvaretesting av mange forskjellige typer.
Den lar deg lage identiske forhold for å teste programvaren din og sette opp programvaren med forskjellige konfigurasjoner for konfigurasjonstesting, sikkerhetstesting og andre typer ikke-funksjonell testing.
6. Utfør ikke-funksjonelle tester
Når testmiljøet er klart, er det på tide å utføre ikke-funksjonelle tester. Du kan bestemme deg for å utføre tester i typerekkefølge, for eksempel å starte med ytelsestesting før du går videre til sikkerhetstester og andre typer ikke-funksjonelle tester.
Når du utfører hver test, noter du resultatene i testrapporten. Hvis du automatiserer testing , vil automatiseringsverktøyet også ha en standardisert måte å rapportere resultater klart og entydig på.
7. Rapporter testresultater
Etter å ha utført hvert testtilfelle, kompiler resultatene av dine ikke-funksjonelle tester i én enkelt rapport.
Denne rapporten skal være tydelig om resultatene av hver test og entydig om hver test har bestått eller ikke bestått.
Følg en standardisert struktur for testrapporten din for å sikre at all informasjon du trenger å gi videre er inkludert.
8. Rett opp mangler
Når testresultatene er inne, leverer du programvaren tilbake til utviklerne hvis testene mislyktes, eller hvis du har identifisert noen ikke-funksjonelle feil som må fikses.
For eksempel, hvis programvaren ikke håndterer et passende antall brukere samtidig eller hvis ytelsen reduseres for mye når flere programmer kjører samtidig, vil disse problemene sannsynligvis måtte fikses i koden for å sikre at brukerne fornøyd med produktet.
9. Gjenta testsyklusen
Når utviklerne har reparert eventuelle defekter som er funnet i den innledende ikke-funksjonelle testfasen, kan testsyklusen starte på nytt.
Utviklere vil fornuftsteste endringene de gjør og sende den nye konstruksjonen tilbake til QA-testere, som deretter vil utføre hele pakken med testing, som starter med røyktesting, enhetstesting, integrasjonstesting og til slutt systemtesting.
Testsyklusen gjentas til ingen feil eller defekter oppstår på noe tidspunkt, hvoretter bygningen kan gå inn i det siste teststadiet: testing av brukeraksept .
Testtilfeller for ikke-funksjonell testing
Testtilfeller er et viktig aspekt ved all programvaretesting, og når du utfører både funksjonelle og ikke-funksjonelle tester, vil du bruke testtilfeller for å definere hva du skal teste og hvordan du skal teste det.
Hver testcase kan sees på som en minitest, og hver testcase vil ha sine egne definerte utganger og resultater.
1. Hva er testcases for ikke-funksjonell testing?
En testcase er et sett med handlinger utført på en programvarebygging for å teste om den tilfredsstiller betingelsene som er definert i programvareplanen. Hver testcase forteller effektivt testerne hva de skal teste og hvordan, og er designet for å teste en spesifikk funksjon eller ikke-funksjonell funksjon i programvareapplikasjonen.
Ikke-funksjonelle testtilfeller kan omfatte testing av hva som skjer når noen prøver å få tilgang til sikre data i systemet eller testing av hvor raskt programvaren lastes ved oppstart.
2. Hvordan designe ikke-funksjonelle testcases?
Når du utformer testcases for ikke-funksjonell testing, er det viktig å følge standard testcase-praksis mens du har målene for ikke-funksjonelle tester i tankene.
Følg trinnene nedenfor for å skrive testtilfeller for ikke-funksjonell testing som tydelig skisserer hva testerne må gjøre for å utføre hver test.
1. Definer området du vil dekke
For hvert testtilfelle, vurder hvilket område av programvaren din denne testsaken skal dekke.
Hvis du for eksempel skriver testtilfeller for installasjon og oppgraderingstesting, kan du inkludere testtilfeller som vurderer hvor enkelt applikasjonen er å installere på forskjellige enheter og hvor lang tid det tar å oppgradere programvaren med en ny oppdatering.
2. Opprett en unik testcase-ID
Hver testcase bør ha en unik testcase-ID. Dette gjør det enkelt å finne testcasebeskrivelsen og resultatene senere, og fjerner enhver forvirring om hvilken testcase du refererer til hvis to testcases har lignende navn eller beskrivelser.
3. Nevn og beskriv hver test
Mens testcase-ID-en identifiserer testen, vil du også gi et navn og en beskrivelse for hver testcase du skriver.
Det skal være et enkelt navn som oppsummerer det du tester, mens beskrivelsen er en enkelt setning som utdyper dette litt mer detaljert.
Beskrivelsen skal være tydelig nok til at testerne vet hva de skal teste og hvordan de skal teste det, samt eventuelle spesielle forhold som må oppfylles i testen.
4. Spesifiser forventet resultat
For hvert testtilfelle, skisser du resultatet som skal oppstå hvis programvaren fungerer som forventet.
I ikke-funksjonelle tester som ytelsestesting og belastningstesting kan dette i mange tilfeller bety at programvaren ganske enkelt fortsetter å fungere normalt uten å bremse ned, henge eller krasje.
I andre tilfeller kan det bety at spesielle feilmeldinger oppstår for å varsle brukeren om problemet og anbefale en løsning.
5. Anbefal testteknikker
For hvert testtilfelle anbefaler du typen testteknikker og ikke-funksjonelle testverktøy som du mener testeren bør bruke under testingen.
I ikke-funksjonell testing kan testere bruke svært forskjellige tilnærminger for forskjellige typer testing.
For eksempel kan belastningstesting og stresstesting kreve automatisering fordi det er upraktisk å simulere ekstremt tung trafikk manuelt, mens andre testtyper kan være lettere å gjennomføre uten noen spesifikke verktøy eller teknologier.
6. Få hver testsak gjennomgått fagfelle
Før du melder deg på hver testsak, må du få hver sak fagfellevurdert av noen du jobber med. Dette kan være en annen tester eller en QA-lead.
Fagfellevurderingstesttilfeller sikrer at de er tydelige nok til å bli fulgt av en tredjepartstester og inkluderer ikke uklarheter eller feil som kan føre til uriktig testing.
3. Eksempler på ikke-funksjonelle testcases
Hvis du skriver testtilfeller for ikke-funksjonell testing, kan de se omtrent ut som eksemplene på ikke-funksjonell testing nedenfor.
Eksempel på skalerbarhetstesting
Testsaks-ID: 6671
Navn på testtilfelle: Påloggingstest for flere brukere
Beskrivelse: Emuler 20+ brukere som logger på programvaren samtidig ved å bruke automatiseringsverktøy.
Forventede resultater: Programvaren skal kjøre som normalt for hver bruker, slik at hver bruker kan logge på på under 5 sekunder.
Eksempel på kompatibilitetstesting
Testtilfelle-ID: 5214
Testcasenavn: Laster applikasjonen i Opera-nettleseren
Beskrivelse: Last inn programmet i Opera-nettleseren.
Forventede resultater: Applikasjonen laster som normalt i Opera-nettleseren med standard skjermoppløsning og layout.
Manuelle eller automatiserte ikke-funksjonelle tester?
Når du velger mellom ulike ikke-funksjonelle testteknikker, må du bestemme om du vil utføre manuelle eller automatiserte ikke-funksjonelle tester.
Manuelle tester utføres av menneskelige testere, noe som betyr at de vanligvis er mer tidkrevende å gjennomføre, men de tilbyr også muligheter for utforskende testing.
Automatiserte ikke-funksjonelle tester er raskere og på noen måter mer pålitelige, men de krever også flere ressurser eller verktøy. Automatisering og hyperautomatisering blir stadig mer populært innen testing, spesielt når det kommer til ikke-funksjonell testing.
Manuell ikke-funksjonell testing: Fordeler, utfordringer og prosesser
Manuell ikke-funksjonell testing utføres utelukkende av testere, som vil teste hvert enkelt ikke-funksjonelt element uavhengig.
Når man utfører manuelle ikke-funksjonelle tester, må testerne samle informasjon om programvaren, lage individuelle testtilfeller som samsvarer med testplanen, og utføre disse testtilfellene manuelt.
Dette tar mye tid, men det betyr også at QA-testere har friheten til å bestemme hva som testes og hvordan.
1. Noen av fordelene med manuell testing inkluderer:
● Manuell testing kan være billigere enn automatisert testing fordi den ikke krever spesifikke teknologier eller teknisk kunnskap.
● Manuell testing lar testere tilby menneskelig innsikt og subjektivitet i hvordan programvaren fungerer og om den fungerer tilfredsstillende.
● Manuell testing kan brukes til å utføre systemtesting i scenarier der det er umulig å automatisere.
● Manuell testing lar testere vurdere de visuelle aspektene ved systemet, slik som det grafiske grensesnittet og andre faktorer som kan påvirke brukervennligheten.
● Manuell testing gir testerne et bredere perspektiv på systemet som helhet og hvordan ulike moduler og komponenter fungerer sammen
Imidlertid er det også ulemper ved manuell testing.
2. Noen av utfordringene ved manuell testing inkluderer:
● Noen typer ikke-funksjonelle tester, inkludert lasttesting og ytelsestesting, er upraktiske å utføre manuelt
● Manuell testing tar betydelig mer tid enn automatisert ikke-funksjonell testing
● Manuelle testere kan bli distrahert, miste fokus og gjøre feil, spesielt når de utfører svært repeterende testoppgaver
Automatisert ikke-funksjonell testing: Fordeler, utfordringer og prosesser
Automatisert ikke-funksjonell testing utføres av automatiserte skript og testverktøy. Når du bruker automatiserte testmetoder, kan testere utføre tester i bakgrunnen mens de fortsetter med andre oppgaver, når de automatiserte testene er igangsatt.
1. Noen av fordelene med å automatisere ikke-funksjonelle tester er:
1. Spar tid og ressurser ved å redusere tiden du bruker på lange, tidkrevende oppgaver
2. Automatisering gjør det mulig å øke testdekningen ved å dekke et bredere spekter av komponenter og funksjoner
3. Det er mer mulig å utføre automatiserte tester ofte fordi de tar kortere tid å utføre
4. Automatisert testing er ideell for tidkrevende testoppgaver som lasttesting, volumtesting og stresstesting som er svært vanskelig å utføre manuelt
5. Det er mindre sjanse for at feil oppstår når du utfører automatisert testing
Det er imidlertid også noen ulemper med automatisert testing, noe som betyr at det ikke alltid er den rette tilnærmingen for alle typer ikke-funksjonell testing.
2. Noen av utfordringene med automatisert ikke-funksjonell testing inkluderer:
1. Automatisert testing er dyrere å sette opp enn manuell testing
2. Å sette opp testautomatisering kan ta tid og tekniske ressurser
3. Testautomatisering gir ikke plass til utforskende testing
4. Automatisering av tester krever fortsatt tid for å lage testcaser
Konklusjon: Manuell eller automatisert
ikke-funksjonell testing?
I de fleste typer programvaretesting gir en kombinasjon av manuell og automatisert testing vanligvis de beste resultatene. Dette gjør at testteam kan dra nytte av effektiviteten, påliteligheten og nøyaktigheten til automatisert testing, samtidig som de utfører utforskende tester som gjør det mulig for testere å vurdere programvare fra et mer subjektivt perspektiv.
I ikke-funksjonell testing er både manuell og automatisert testing praktisk talt nødvendig for de fleste testteam.
Manuell testing brukes best til å utføre ikke-funksjonelle testoppgaver som brukervennlighetstesting, mens automatisert testing oftest brukes til å utføre tester som vil være for tidkrevende og vanskelige å utføre manuelt, for eksempel stresstesting eller volumtesting.
Ikke-funksjonell testing er et av de mest åpenbare områdene å bruke testautomatiseringsteknikker fordi det er en kvantitativ, målbar type testing som ikke ber om subjektive resultater.
Som med andre typer testing, utføres ikke-funksjonell testing vanligvis ved å bruke en blanding av manuell testing og automatisert testing.
Automatisert testing er imidlertid praktisk talt nødvendig for mange typer ikke-funksjonell testing, og parametrene og metrikkene for ikke-funksjonell testing gjør at automatisering er mer egnet for denne typen testing enn funksjonell testing.
Beste praksis for ikke-funksjonell testing
Når du foretar ikke-funksjonell testing for første gang, kan følgende beste praksiser for testing hjelpe deg med å standardisere testprosessen og optimalisere effektiviteten til testene dine.
Beste praksis fungerer som retningslinjer for programvaretestteam som ønsker å forbedre testprosesser og tilpasse seg industristandarder.
1. Bruk automatiseringsverktøy
I ikke-funksjonell testing mer enn andre typer testing, er det viktig å bruke automatiseringsverktøy for å automatisere visse typer testing, spesielt volumtesting, stresstesting og belastningstesting.
Disse typer tester verifiserer vanligvis hvor godt programvare fungerer under stort press fra brukere, data og trafikk, noe som kan være svært vanskelige forhold å etterligne manuelt.
Automatisering av disse typene ikke-funksjonelle tester vil ikke bare være mer effektivt, men også mer nøyaktig og tillate testere å replikere høyere belastninger og påkjenninger enkelt.
2. Peer review all dokumentasjon
I tillegg til å be kolleger om å gjennomgå testtilfeller som du oppretter, kan du be kolleger i testteamet om å gjennomgå feilrapporter, testrapporter, testplaner og andre former for formell dokumentasjon opprettet under testprosessen.
Dette reduserer risikoen for små feil som kan forårsake alvorlige forsinkelser i test- og utviklingsprosessen.
3. Definer målbare krav
Når du definerer kravene til programvaren din før ikke-funksjonell testing begynner, sørg for at hvert krav er objektivt og målbart.
Dette gjør det lettere for testere å finne ut om programvaren oppfyller disse kravene under testing og gir ikke rom for tolkning.
Hva regnes som «rask» eller «effektiv»? Bruk tall og kvantitative verdier for å definere hva du leter etter.
4. Vurder nøye testing av beregninger
Før du bestemmer deg for hvilke beregninger du skal bruke for å måle ytelsen til programvaren din, bør du vurdere hva programvarens brukere vil ha og hvilke beregninger som faktisk stemmer overens med programvareplanen og kravene.
Mest programvare skal være rask og pålitelig, men hvilke andre beregninger kan brukerne dine se etter? Er det noen programvarespesifikke beregninger du bør vurdere under testprosessen?
Typer utdata fra en ikke-funksjonell test
Når du utfører ikke-funksjonelle tester, vil du motta ulike typer utdata fra testene du utfører.
Disse er vanligvis ganske forskjellige fra funksjonelle testutganger, som ofte er klarere fordi funksjonstester ganske enkelt tester om en funksjon fungerer som den skal eller ikke.
I likhet med funksjonstesting bør testere sette klare forventninger til hvert testtilfelle som gjør det enkelt å avgjøre om hver test består eller ikke.
1. Absolutte tall
Når du utfører ytelsestesting, stresstesting og andre typer ikke-funksjonelle tester, er utgangene du kanskje ser på oftest hastigheter og andre absolutte tall.
Ytelsestesting verifiserer hvor raskt systemet kan utføre visse oppgaver, og dette vil bli målt i sekunder eller millisekunder.
Hvis du utfører belastningstesting, kan du vurdere hvor mye data programvaren kan håndtere på en gang uten å krasje eller henge.
2. Feilmeldinger
Ikke-funksjonell testing verifiserer også hvordan systemet fungerer når det oppstår feil, for eksempel sikkerhetsfeil, valideringsfeil og konfigurasjonsfeil.
Det er viktig at systemene viser nøyaktige og tydelige feilmeldinger når feil oppstår, slik at brukerne kan ta skritt for å rette opp problemet og fortsette å bruke programvaren.
Feilmeldinger bør også oppstå under sikkerhetstesting når systemet hindrer brukere i å bryte programvarens innebygde sikkerhetsfunksjoner.
3. Krasj
Krasj er et tegn på systemfeil, og det indikerer vanligvis at systemet ikke er i stand til å yte på nivået du tester og kan bety at testen består.
I noen tilfeller kan systemet krasje og likevel bestå testsaken du jobber med, for eksempel hvis systemet tåler den nødvendige mengden stress eller trafikk før krasj.
Når de utfører ikke-funksjonelle tester, bør testere forvente at systemet krasjer regelmessig, spesielt når de presser det til grensene for stresstesting og andre ytelsestester.
Eksempler på ikke-funksjonelle tester
Ikke-funksjonelle testeksempler ligner eksemplene ovenfor for ikke-funksjonelle testtilfeller.
Du kan se på eksempler på ikke-funksjonelle tester for å forstå bedre hva ikke-funksjonell testing er og hva den tester i en programvareapplikasjon.
1. Eksempel på ytelsestesting
Hvis du jobber med en mobilapplikasjon som kobler brukere til en online database, er det viktig at et stort antall brukere kan få tilgang til og laste ned dataene fra denne databasen samtidig.
Dette er også en sentral del av skalerbarhetstesting, spesielt hvis du ønsker å øke antall brukere på appen i fremtiden.
Du vil da teste hvordan systemet reagerer når for eksempel 1000 brukere prøver å få tilgang til samme database samtidig og stille krav til hvor raskt applikasjonen skal lastes under denne betingelsen.
2. Kompatibilitetstesting
Hvis du tester en ny dokumentbehandlingsapplikasjon, må du teste at den fungerer på alle enhetene den er beregnet på.
Dette betyr å teste at du kan installere og laste applikasjonen på alle de nyeste versjonene av Windows , Mac og andre operativsystemer (som Linux ) som du vil at programvaren skal være kompatibel med.
3. Sikkerhetstesting
Når du utfører sikkerhetstesting, vil du teste noen av måtene folk kan prøve å få tilgang til konfidensielle data på eller bryte programvarens sikkerhetstiltak for å bekrefte at systemet oppfører seg slik du forventer at det skal i disse situasjonene.
Du kan for eksempel logge på som bruker og prøve å få tilgang til filer du ikke har sikkerhetsgodkjenning for for å være sikker på at systemet ikke lar deg få tilgang til disse filene.
Typer feil og feil oppdaget
gjennom ikke-funksjonell testing
Ikke-funksjonell testing kan avsløre mange feil og defekter som ikke er like enkle å finne som de som er identifisert i funksjonell testing. Det er fordi ikke-funksjonell testing ofte krever at testere verifiserer ulike konfigurasjoner, oppsett og kombinasjoner av forhold for å vurdere hvor godt systemet yter i en myriade av forskjellige innstillinger.
1. Ytelsesfeil
Ytelsesfeil oppstår når systemet fungerer, men det fungerer ikke så raskt eller så effektivt som du forventer.
For eksempel kan du oppleve at systemet ikke laster raskt nok under visse forhold eller til og med krasjer hvis for mange brukere logger på samtidig.
Ytelsesdefekter hindrer ikke helt folk i å bruke programvaren din, men de kan gjøre programvaren din mindre brukbar og mindre sannsynlig at den oppfyller brukerkravene.
2. Sikkerhetsfeil
Sikkerhetsdefekter er de feilene som påvirker sikkerheten til programvaresystemet og dataene som er lagret i det.
Sikkerhetsfeil kan oppstå hvis for eksempel brukere kan få tilgang til konfidensielle data som de ikke skal ha tilgang til eller hvis enkelte deler av applikasjonen ikke er korrekt passordbeskyttet, eller hvis kryptering mislykkes.
Disse kan føre til sikkerhetsbrudd, som kan ha en alvorlig innvirkning på en programvareutgivers omdømme.
3. Funksjonsfeil
Selv om ikke-funksjonell testing ikke er laget for å teste funksjonene til en programvareapplikasjon, kan i noen tilfeller ikke-funksjonell testing identifisere funksjonelle defekter i programvaren.
For eksempel er formålet med pålitelighetstesting ikke å teste om appen fungerer, men å teste om appen fungerer pålitelig ved gjentatte forsøk.
Dette kan avsløre at enkelte funksjoner ikke fungerer som de skal når en handling gjentas, og disse kan klassifiseres som funksjonelle feil.
Vanlige ikke-funksjonelle testmålinger
Ikke-funksjonelle testmålinger beskriver de beregningene som systemets ytelse og effektivitet måles med.
Ulike typer ikke-funksjonell testing er avhengig av forskjellige beregninger, og du kan velge å bruke en rekke beregninger avhengig av de endelige målene for prosjektet.
1 gang
Tidsberegninger måler hvor lang tid det tar å utføre visse oppgaver eller hvor lenge brukere må vente på at funksjoner skal lastes opp.
Noen eksempler på tidsberegninger er antall transaksjoner eller nedlastinger som en applikasjon kan gjøre innenfor en gitt tidsramme, responstidene til forskjellige funksjoner og tiden det tar for applikasjonen å fullføre en bestemt operasjon.
Ulike typer tester vil måle resultater i sekunder eller som en presentasjon av hvor mange operasjoner per sekund.
2. Plass
Plass er en annen viktig beregning i ikke-funksjonell testing. Plassmålinger kan teste hvor mye CPU-plass systemet krever, eller hvor mye plass på harddisken programvaren tar opp når den er ferdig installert.
Noen eksempler på plassmålinger inkluderer hurtigbufferminne, hovedminne og hjelpeminne.
Programvare som krever mye plass for å fungere problemfritt kan være egnet for et mindre antall kunder.
3. Brukervennlighet
Noen beregninger i ikke-funksjonell testing tar hensyn til brukervennligheten til systemet, for eksempel hvor lang tid det tar å lære opp brukerne til å bruke systemet riktig, hvor mange valg brukere må navigere gjennom for å utføre nøkkelfunksjoner, eller hvor mange museklikk det tar å utføre visse oppgaver.
Ikke-funksjonelle tester kan måle hver av disse beregningene kvantitativt, med lavere tall som generelt antyder høyere nivåer av brukervennlighet.
4. Pålitelighet
En annen viktig beregning i ikke-funksjonell testing er pålitelighet. Pålitelighet reflekterer sannsynligheten for at systemet oppfører seg på samme måte gang på gang eller fungerer som det skal over en lengre periode.
Noen eksempler på beregninger som brukes til å måle pålitelighet inkluderer gjennomsnittlig tid til feil, feilfrekvens, tilgjengelighet og sannsynlighet for nedetid.
Hver av disse beregningene hjelper testerne med å bekrefte at systemet kan kjøre i lang tid uten å oppleve feil eller krasjer.
5. Robusthet
Robusthet er et mål på hvor godt systemet håndterer feil og hvor godt systemet kan gjenopprette seg selv ved feil.
Noen eksempler på beregninger som måler robusthet inkluderer tiden det tar for systemet å gjenopprette seg selv etter en feil, prosentandelen av hendelser som fører til katastrofal feil, og sannsynligheten for at datafiler blir ødelagt etter at systemet feiler.
Dette er viktige beregninger fordi brukere forventer at systemer noen ganger kan svikte uten å miste all data eller ødelegge filer.
6. Bærbarhet
Portabilitetsmålinger måler hvor enkelt programvaren kan overføres til forskjellige systemer eller flyttes til et nytt sted i et nettverk.
Noen eksempler på beregninger som måler portabilitet inkluderer prosentandelen av ikke-bærbar kode og antall systemer som programvaren kan kjøres på.
Ideelt sett er programvare som kan kjøre på mange forskjellige systemer mer bærbar og derfor mer praktisk for bruk i innstillinger som kan kreve hyppige overføringer eller flyttinger.
Strategier for å gjennomføre ikke-funksjonelle tester
Når du begynner med ikke-funksjonell testing, er det viktig å nærme seg denne testfasen med en strategi i tankene. Ledere for kvalitetssikring og programvaretesting bør vurdere risikoen ved testing, ressursene de har tilgjengelig for dem, og formålet med testingen før ikke-funksjonell testing starter.
Å utvikle en strategi kan hjelpe deg med å optimalisere dine ikke-funksjonelle tester fra begynnelsen.
1. Tildel roller og ansvar
Før du starter ikke-funksjonell testing, alloker roller og ansvar til nøkkelmedlemmene i testteamet. Dette gjør det enklere å håndtere arbeidsmengden ved ikke-funksjonell testing og å sikre at erfarne testere er ansvarlige for å opprettholde kvaliteten og effektiviteten til testene du utfører.
Sørg for at personene du velger å ta på deg disse rollene har kunnskapen og erfaringen de trenger for å utføre de oppgavene du forventer at de skal, spesielt hvis disse oppgavene krever tekniske ferdigheter.
2. Samle relevante testverktøy
Samle alle teknologiene og verktøyene du vil bruke for å utføre ikke-funksjonelle tester. Sørg for at hele teamet ditt vet hvordan de skal bruke dem effektivt, og gjennomfør opplæring for å fylle ferdighetshull der det er nødvendig.
Å sørge for at alle vet hvilke testverktøy de skal bruke og hvordan de skal brukes før ikke-funksjonelle tester starter, reduserer risikoen for å måtte pause testingen eller gjøre tester på nytt på grunn av utilstrekkelig kunnskap.
3. Prioriter testing
Før du starter ikke-funksjonell testing, lag en liste over alle aspektene ved systemet som du trenger for å teste og prioriter dem basert på at det haster og viktig.
Du kan prioritere ikke-funksjonell testing basert på risikonivået som er involvert i hvert aspekt av systemet du tester.
For eksempel kan grunnleggende sikkerhetstesting finne sted fordi tilstrekkelig sikkerhet anses som ekstremt viktig i moderne programvare. Jo tidligere du identifiserer høyrisikodefekter, desto mindre kan den potensielle effekten av disse defektene være andre aspekter av systemet.
7 beste ikke-funksjonelle testverktøy
Ikke-funksjonelle testverktøy kan strømlinjeforme testprosessen, gjøre det enklere og mer kostnadseffektivt å automatisere testing og hjelpe QA-ledere med å administrere test- og dokumentasjonsprosessen.
Det er mange gratis ikke-funksjonelle testverktøy tilgjengelig på nettet, samt noen verktøy som du kan betale en månedlig avgift for å oppgradere.
1. ZAPTEST GRATIS utgave
ZAPTEST er et populært programvaretestverktøy som lar brukere utføre både funksjonelle og ikke-funksjonelle programvaretester raskt og enkelt. Du kan bruke ZAPTEST til å automatisere programvaretester og bruke RPA- teknologi for å emulere ulike funksjoner og forhold i ikke-funksjonell testing.
ZAPTEST FREE-utgaven er bare en redusert versjon av enterprise-utgaven, og tilbyr mange av de samme funksjonene i mindre skala. Du kan søke støtte på ZAPTEST-forumet og utføre ytelsestester med et ubegrenset antall virtuelle brukere.
2. Appium
Appium er et gratis testverktøy for programvare som er best egnet for å teste mobilapplikasjoner på en rekke forskjellige plattformer, inkludert både iOS- og Android -enheter. Appium tilbyr brukere mye fleksibilitet til å utvikle sine egne testrammer og strategier mens de drar nytte av automatiseringsevnene som Appium tilbyr.
3. Loadium
Loadium er et ikke-funksjonelt testverktøy som best brukes til å utføre ytelsestesting og lasttesting, to typer ikke-funksjonelle tester som er mye enklere å utføre ved hjelp av automatiseringsverktøy.
Loadium lar brukere kjøre belastningstester i stor skala og tilbyr tilpassede løsninger slik at du kan skreddersy testene dine til programvaremålene dine.
Du kan prøve Loadium gratis eller betale for å laste ned fullversjonen av applikasjonen.
4. Obkio
Obkio er et programvaretestingsverktøy som hjelper QA-leads og testledere med å prioritere og kategorisere problemer basert på hvor alvorlige de er. Obkio kan oppdage problemer før brukere gjør det, tilbyr brukere smarte varsler og kan hjelpe til med å oppdage hvor problemet er.
Obkio er ikke bare for ikke-funksjonell testing, men det er et svært nyttig gratis testverktøy som kan brukes i alle stadier av testets livssyklus.
5. SonarQube
SonarQube er et sikkerhetstestverktøy med åpen kildekode som automatisk kan analysere kode for å oppdage feil og sårbarheter. Skrevet i Java kan du bruke SonarQube til å analysere kode på over tjue forskjellige programmeringsspråk, og systemets rene grensesnitt gjør det enkelt å oppdage problemer som kan forårsake sikkerhetssårbarheter i fremtiden.
6. Tsung
Tsung er et annet ikke-funksjonelt testverktøy som er ideelt hvis du ønsker å automatisere belastnings- og stresstesting, men ikke kommer videre med gratisversjonen av Loadium.
Tsung er et åpen kildekode-verktøy som lar brukere utføre høyvolumsbelastningstesting på tvers av flere protokoller og servere, inkludert HTTP og SOAP.
Tsung er helt gratis, og det kan hjelpe testere med å sikre at programvaren de jobber med tilbyr høyytelsesnivåer under en rekke utfordrende forhold.
7. Sikuli
Sikuli er en annen applikasjon som bruker robotprosessautomatisering for å automatisere testprosessen. Applikasjonen kan automatisere alt som kan sees på skjermen. Du kan bruke Sikuli til å teste ikke-nettbaserte applikasjoner og for raskt å reprodusere feil.
Sjekkliste, tips og triks for ikke-funksjonell testing
Før du starter ikke-funksjonell testing, sjekk at du har alt du trenger for å utføre grundige ikke-funksjonelle tester i et forberedt miljø.
Følg sjekklisten nedenfor for tips og triks før du starter ikke-funksjonell testing.
1. Arbeid etter en tidsplan
Enten du inkluderer den i testplanen din eller oppretter et eget dokument for den, strukturer programvaretestene dine rundt en testplan.
Hvis du finner flere feil og mangler enn du forventer, kan det hende du kommer bort fra timeplanen noen ganger, men å ha en tidsplan til å begynne med kan hjelpe til å veilede testere og motivere dem til å jobbe effektivt, spesielt når du utfører tidkrevende manuelle tester.
2. Identifiser testteamet ditt
Å delegere ansvar og tildele medlemmer av testteamet offisielle roller og titler kan bidra til å sikre at testprosessen går problemfritt.
Kommuniser tydelig roller og ansvar i teamet ditt før testing starter, og gi ulike testere ansvaret for ulike aspekter ved ikke-funksjonell testing, slik at alle blir holdt ansvarlige for sine egne oppgaver.
3. Velg verktøy og teknologier før testing
Hvis du først bestemmer deg for å jobbe med bestemte verktøy og teknologi etter at du har startet ikke-funksjonell testing, kan dette holde opp testprosessen og forårsake forvirring blant testerne.
Gjør i stedet research på forhånd og avgjør om det er noen verktøy du vil bruke før testingen begynner. Dette gjør det enkelt å inkludere disse verktøyene i testplanen og trene testerne dine til å bruke dem før testingen starter.
4. Få alltid formell påmelding på tester og dokumentasjon
Testing er en kvalitetssikringsprosess, og den beste måten å maksimere verdien av testene du utfører på er å utføre grunnleggende QA på testene du planlegger og kjører også.
Introduser enkle protokoller som krever at testere ber QA-emner og ledere om å gjennomgå og signere testplaner og testrapporter før de går videre til neste trinn.
Dette øker sjansen for at testfeil blir oppdaget og fikset tidlig.
7 feil og fallgruver å unngå når du implementerer ikke-funksjonelle tester
Hvis du er ny på ikke-funksjonell testing, kan det være lett å gjøre noen vanlige feil som testere og kvalitetseksperter ofte faller inn i.
Ikke-funksjonell testing er en kompleks jobb som innebærer å vurdere et programvarebygg fra alle vinkler og perspektiver.
Nedenfor er en liste over noen av de vanligste fallgruvene som testere gjør når de utfører ikke-funksjonelle tester.
1. Ikke planlegging
Hvis du er ny på ikke-funksjonell testing, tror du kanskje at du bare kan dykke rett inn i teststadiet uten å lage en grundig testplan på forhånd.
Noen testteam kan sette sammen ufullstendige testdokumenter eller overfladiske oppsummeringer av testplanen som ikke i tilstrekkelig grad skisserer handlingene som testerne må ta under ikke-funksjonell testing.
2. Testing av feilstyring
Det kan oppstå problemer hvis tester blir feilstyrt på et hvilket som helst stadium av testprosessen. Mangelfull ledelse kan bety at testere ikke har de nødvendige ressursene til å utføre testing grundig, eller at testerne ikke får tilstrekkelig tid til å teste hvert aspekt av bygget.
Testledere må kunne lære av feilene de gjør og utvikle mer effektive testplaner fremover.
3. Dårlig kommunikasjon
Dårlig kommunikasjon kan forårsake mange problemer under testprosessen, spesielt innenfor ikke-funksjonell testing.
Dette kan bety dårlig kommunikasjon i testteamet eller dårlig kommunikasjon mellom testere, utviklere og interessenter.
Dette skjer ofte når testere ikke vedlikeholder testdokumenter tilstrekkelig eller ikke kommuniserer regelmessig med andre avdelinger under testprosessen.
4. Ignorerer utviklere
Testere og utviklere jobber vanligvis ganske adskilt fra hverandre, men testteam som jobber tett med utviklere kan dra nytte av ytterligere kunnskap om hvordan programvaren fungerer og hvordan ulike moduler samhandler med hverandre.
Å involvere utviklere i testprosessen, eller be om tilbakemelding fra utviklere på viktige tidspunkter, kan hjelpe testteam med å sette sammen mer effektive og grundige testplaner.
5. Formål med testing
Mange testere mener fortsatt at hensikten med testing er å sjekke at programvaren fungerer eller å demonstrere overfor interessenter og investorer at programvaren fungerer.
I stedet bør testere nærme seg testing med den holdningen at formålet med testing er å se etter feil.
Testere som ikke finner defekter kan være glade for at programvaren de tester er fri for feil bare hvis de er fornøyd med at de har sett overalt hvor defekter kan bli funnet.
6. Manuelle vs automatiseringsfeil
Det er viktig å bruke tid på å vurdere om manuell testing eller automatisert testing er bedre for hver type testing du utfører.
Automatiserte testmetoder er ekstremt godt egnet for nesten alle former for ikke-funksjonell testing, og testteam som er vant til funksjonell testing kan gjøre feilen ved å anta at de kan teste ikke-funksjonelle funksjoner manuelt like enkelt.
7. Bruke feil testverktøy
Det er lett å velge feil testverktøy og -teknologier før du starter ikke-funksjonell testing, spesielt hvis testteam er vant til å utføre manuell testing og ikke er vant til å bruke testverktøy.
Undersøk de ikke-funksjonelle testmetodene du vil bruke på forhånd, og velg programvareverktøy og automatiseringsverktøy som oppfyller de spesifikke kravene til prosjektet ditt.
Konklusjon
Ikke-funksjonell testing er et viktig trinn i testprosessen som gjør det mulig for testere å verifisere hvor godt et system yter og i hvilken grad det oppfyller ikke-funksjonelle krav som lastetider, kapasitet og sikkerhetssikring.
Det er mange forskjellige måter å utføre ikke-funksjonelle tester på, men moderne automatiseringsverktøy gjør det enklere å maksimere testdekningen og nøyaktigheten uten å gå på akkord med kvaliteten på resultatene dine.
Vanlige spørsmål og ressurser
Hvis du vil finne ut mer om ikke-funksjonell testing, er det mange vanlige spørsmål og ressurser tilgjengelig på nettet.
Bla gjennom våre favorittressurser for ikke-funksjonell testing på nettet nedenfor eller les svarene på noen av de vanligste spørsmålene om ikke-funksjonell testing.
1. Beste kurs om ikke-funksjonell testing
Det er mange kurs tilgjengelig på nettet som kan hjelpe deg med å utvide kunnskapen din om ikke-funksjonelle testmetoder og tilnærminger.
Noen av disse kursene er tilgjengelige gratis, og andre kan tilby et sertifikat eller kvalifikasjon mot et gebyr. Hvis du ønsker å ta et akkreditert kurs, kan du spørre arbeidsgiveren din om de vil sponse deg og dekke undervisningskostnadene.
Noen av de beste kursene om ikke-funksjonell testing inkluderer:
- TSG: Ikke-funksjonell trening 2-dagers kurs
- Udemy: The Complete 2023 Software Testing Bootcamp
- Edx: Software Testing Professional Certificate
- Lærerikt: Performance Test Automation 101
2. Hva er de 5 beste intervjuspørsmålene om ikke-funksjonell testing?
Hvis du forbereder deg på et jobbintervju for å jobbe med programvaretesting, kan intervjueren stille deg spørsmål om ikke-funksjonell testing for å være sikker på at du forstår hvordan dette viktige stadiet av programvaretesting fungerer. Forbered deg på intervjuet ditt ved å klargjøre effektive svar på vanlige intervjuspørsmål på forhånd.
● Hvordan kan tilnærmingene og metodene du bruker i ikke-funksjonell testing skille seg fra tilnærmingene du bruker i funksjonell testing?
● Hvordan skiller ikke-funksjonell testing seg fra funksjonell testing?
● Hvilke ulike typer ikke-funksjonell testing finnes?
● Hvordan prioriterer du funksjonstester og testcaser?
● På hvilket stadium av programvaretesting utføres vanligvis funksjonstesting?
3. De beste YouTube-opplæringene om ikke-funksjonell testing
Hvis du foretrekker å lære ved å se på videoer, kan du finne YouTube-veiledninger om ikke-funksjonell testing som en nyttig måte å lære mer om denne typen programvaretesting.
Nedenfor er noen av de beste YouTube-opplæringene om programvaretesting tilgjengelig i dag.
Hva er ikke-funksjonell programvaretesting? En veiledning for programvaretesting
Hjelp til programvaretesting: Ikke-funksjonell testing
Ikke-funksjonell testing i programvaretesting
Besøk W3Schools
Funksjonell og ikke-funksjonell testing
4. Hvordan opprettholde ikke-funksjonelle tester
Riktig testvedlikehold sikrer at programvaretester kan gjentas uten at det går på bekostning av kvaliteten på testresultatene.
Ved å vedlikeholde tester som ikke fungerer, kan du sikre at testing på hvert trinn i utviklingsprosessen er tilstrekkelig og at testene dine alltid oppdateres i takt med stadig skiftende kode.
Du kan opprettholde ikke-funksjonelle tester ved å følge tipsene våre nedenfor.
● Kommuniser tydelig på tvers av testteamet når du lager testsaker og skriver dokumentasjon
● Følg alltid beste praksis for testdesign
● Reevaluere testprotokoller på ulike stadier av testprosessen
● Oppdater endringer i testen mens du går
Vurder fremtidige prosjekter når du gjør endringer i nåværende tester
5. Er ikke-funksjonell testing svart boks eller hvit boks testing?
Ikke-funksjonell testing er en type black box-testing, noe som betyr at testere ikke er opptatt av den interne funksjonen til systemet, men bare med dets eksterne utganger.
Dette står i kontrast til white box-testing, som tester måten systemet fungerer internt på. Eksempler på testing av hvit boks inkluderer enhetstesting og integrasjonstesting.
Funksjonell og ikke-funksjonell kravtesting er eksempler på black box-testing. Dette betyr at testere ikke krever avanserte tekniske ferdigheter eller kunnskap om dataprogrammering for å utføre black box-testing, og de trenger heller ikke å lære hvordan de skal implementere systemene de tester.