Artiklar

Vad är Software Testing, vad innebär det att testa programvaran

Programvarutestning är en uppsättning processer för att undersöka, utvärdera och fastställa fullständigheten och kvaliteten på programvara som är skriven för datorer. Säkerställer överensstämmelse för en mjukvaruprodukt med avseende på regulatoriska, affärsmässiga, tekniska, funktionella och användarkrav.

Mjukvarutestning, eller mjukvarutestning, är också känd som applikationstestning.

Programvarutestning är i första hand en stor process som består av flera sammankopplade processer. Huvudsyftet med mjukvarutestning är att mäta programvarans integritet tillsammans med dess fullständighet när det gäller dess grundläggande krav. Programvarutestning innebär att undersöka och testa programvara genom olika testprocesser. Målen för dessa processer kan inkludera:

Verifiering av programvarans fullständighet mot funktionella/affärsmässiga krav
Identifiera buggar/tekniska fel och se till att programvaran är felfri
Utvärdering av användbarhet, prestanda, säkerhet, lokalisering, kompatibilitet och installation
Testad programvara måste klara alla tester för att vara komplett eller lämplig för användning. Några av de olika typerna av mjukvarutestningsmetoder inkluderar testning av vit låda, testning av svart låda och testning av grå låda. Dessutom kan mjukvaran testas som en helhet, i komponenter/enheter eller inom ett livesystem.

Black Box-testning

Black Box Testing är en mjukvarutestteknik som fokuserar på att analysera programvarans funktionalitet med hänsyn till systemets interna funktion. Black Box Testing utvecklades som en metod för att analysera kundkrav, specifikationer och designstrategier på hög nivå.

En Black Box-testare väljer en uppsättning giltiga och ogiltiga kodexekverings- och inmatningsvillkor och kontrollerar efter giltiga utsvar.

Black Box Testing är också känd som funktionstestning eller sluten box-testning.

En sökmotor är ett enkelt exempel på en applikation som är föremål för black box-testning. En sökmotoranvändare skriver in text i sökfältet i en webbläsare. Sökmotorn lokaliserar och hämtar sedan användardataresultat (output).

Fördelarna med Black Box-testning inkluderar:

  • Enkelhet: Underlättar testning av projekt på hög nivå och komplexa applikationer
  • Spara resurser: Testare fokuserar på programvarans funktionalitet.
  • Testfall: Fokus på mjukvarufunktionalitet för att underlätta snabb utveckling av testfall.
  • Ger flexibilitet: ingen specifik programmeringskunskap krävs.

Black Box-testning har också några nackdelar, enligt följande:

  • Testfall/skriptdesign och underhåll kan vara utmanande eftersom Black Box-testverktygen är beroende av kända indata.
  • Interaktion med det grafiska användargränssnittet (GUI) kan skada testskript.
  • Testerna gäller endast applikationens funktioner.

White Box Testning

Under white-box-testning körs kod med förvalda ingångsvärden för att validera de förvalda utvärdena. White-box-testning involverar ofta att skriva stubbkod (en kod som används för att ersätta en specifik funktion. En stubb kan simulera beteendet hos befintlig kod, till exempel en procedur på en fjärrmaskin.) och även drivrutiner.

Fördelarna med white-box-testning inkluderar:

  • Möjliggör återanvändning av testfall och ger större stabilitet
  • Underlättar kodoptimering
  • Underlättar att hitta platserna för dolda fel i de tidiga utvecklingsstadierna
  • Underlättar effektiv applikationstestning
  • Ta bort onödiga kodrader


Nackdelarna inkluderar:

  • Kräver en erfaren testare med kunskap om intern struktur
  • Tar tid
  • Höga kostnader
  • Bit-of-code-validering är svårt.
  • White-box-testning inkluderar enhetstestning, integrationstestning och regressionstestning.

Enhetstest

Ett enhetstest är en komponent i Software Development Life Cycle (SDLC) där en omfattande testprocedur tillämpas individuellt på de minsta delarna av ett program för önskad lämplighet eller beteende.


Ett enhetstest är en kvalitetsmätnings- och utvärderingsprocedur som tillämpas i de flesta verksamheter för utveckling av programvara för företag. I allmänhet utvärderar ett enhetstest hur väl mjukvarukoden överensstämmer med programmets/applikationens/programmets övergripande mål och hur dess lämplighet påverkar andra mindre enheter. Enhetstester kan göras manuellt – av en eller flera utvecklare – eller genom en automatiserad mjukvarulösning.

Under testningen är varje enhet isolerad från huvudprogrammet eller gränssnittet. Enhetstester utförs vanligtvis efter utveckling och före driftsättning, vilket underlättar integration och tidig problemupptäckt. Storleken eller omfattningen av en enhet varierar beroende på programmeringsspråk, programvara och testmål.

Funktionellt test

Funktionstestning är en testprocess som används inom mjukvaruutveckling där mjukvara testas för att säkerställa att den uppfyller alla krav. Det är ett sätt att kontrollera programvara för att säkerställa att den har alla nödvändiga funktioner som anges i dess funktionskrav.


Funktionstestning används huvudsakligen för att verifiera att en mjukvara ger samma utdata som krävs av slutanvändaren eller företaget. Typiskt innebär funktionstestning att utvärdera och jämföra varje programvarufunktion mot affärskrav. Programvaran testas genom att ge den någon relaterad input så att utdata kan utvärderas för att se hur den överensstämmer med, relaterar till eller varierar från dess grundläggande krav. Dessutom kontrollerar funktionstester även mjukvarans användbarhet, till exempel att navigeringsfunktionerna fungerar efter behov.

Nyhetsbrev för innovation
Missa inte de viktigaste nyheterna om innovation. Registrera dig för att få dem via e-post.

Regressionstestning

Regressionstestning är en typ av mjukvarutestning som används för att avgöra om nya problem är resultatet av mjukvaruförändringar.

Innan en ändring tillämpas testas ett program. Efter att en ändring har tillämpats testas programmet igen i utvalda områden för att upptäcka om ändringen har skapat nya buggar eller problem, eller om den faktiska ändringen har tjänat sitt avsedda syfte.


Regressionstestning är avgörande för stora mjukvaruapplikationer, eftersom det ofta är svårt att veta om en förändring av en del av ett problem har skapat ett nytt problem för en annan del av applikationen. Till exempel kan en ändring av en bankansökan låneblankett resultera i att en månatlig transaktionsrapport misslyckas. I de flesta fall kan problemen verka orelaterade, men de kan faktiskt vara orsaken till frustration bland applikationsutvecklare.

Andra situationer som kräver regressionstestning inkluderar att upptäcka om vissa förändringar uppnår ett uppsatt mål eller testning för nya faror associerade med problem som dyker upp igen efter en period utan problem.

Modern regressionstestning hanteras i första hand genom specialiserade kommersiella testverktyg som tar ögonblicksbilder av befintlig programvara som sedan jämförs efter att en specifik ändring har tillämpats. Det är nästan omöjligt för mänskliga testare att utföra samma uppgifter lika effektivt som automatiserade programvarutestare. Detta gäller särskilt med stora och komplexa mjukvaruapplikationer inom stora IT-miljöer som banker, sjukhus, tillverkande företag och stora återförsäljare.

Stresstestning

Stresstestning avser testning av mjukvara eller hårdvara för att avgöra om dess prestanda är tillfredsställande under extrema och ogynnsamma förhållanden, vilket kan uppstå som ett resultat av tung nätverkstrafik, processbelastning, underklockning, överklockning och toppanvändning av resurser.

De flesta system är utvecklade under normala driftsförhållanden. Därför, även om en gräns överskrids, är felen försumbara om systemet stresstestas under utveckling.


Stresstestning används i följande sammanhang:

  • Programvara: Stresstestning betonar tillgänglighet och felhantering under extremt tung belastning för att säkerställa att programvaran inte kraschar på grund av otillräckliga resurser. Stresstestning av programvara fokuserar på identifierade transaktioner för att avbryta transaktioner, som är kraftigt stressade under testning, även när en databas inte är laddad. Stresstestningsprocessen laddar samtidiga användare bortom normala systemnivåer för att hitta den svagaste länken i systemet.
  • Hårdvara: Stresstester säkerställer stabilitet i normala datormiljöer.
  • Webbplatser: Stresstester avgör gränserna för alla webbplatsfunktioner.
  • CPU: Ändringar som överspänning, underspänning, underlåsning och överlåsning kontrolleras för att avgöra om de kan hantera tunga belastningar genom att köra ett CPU-intensivt program för att testa för systemkrascher eller frysningar. CPU-stresstest är också känt som tortyrtest.

Automatiska tester

Automatiserad testning (software test automation) är ett tillvägagångssätt för kodtestning som använder sig av speciella mjukvaruverktyg som kör tester automatiskt och sedan jämför faktiska testresultat med förväntade resultat.

Automatiserad testning spelar en viktig roll i Continuous Delivery (CD), Continuous Integration (CI), DevOps och DevSecOps. De främsta fördelarna med automatiserad testning inkluderar:

  • Automatiserad testning sparar utvecklare tid och pengar genom att göra testprocessen mer effektiv.
  • Automatiserade tester identifierar fel mer effektivt än manuella tester.
  • När tester är automatiserade kan flera testverktyg implementeras parallellt.


Vid mjukvaruutveckling är det särskilt användbart att utföra automatiserade tester under byggprocessen för att säkerställa att en applikation är fri från byggfel och utför sin avsedda funktion.

Att ta sig tid att automatisera mjukvarutestning kommer i slutändan att spara tid för utvecklare genom att minska risken för att en kodändring kommer att bryta befintlig funktionalitet.


Testning är ett mycket viktigt steg i utvecklingsprocessen. Säkerställer att alla buggar är åtgärdade och att produkten, mjukvaran eller hårdvaran fungerar som avsett eller så nära målprestanda som möjligt. Automatiserad testning, snarare än manuell testning, är avgörande för att konsekvent leverera kostnadseffektiv programvara som möter användarnas behov i tid med minimala defekter.

Typer av automatiserade tester som används vid mjukvaruutveckling
  • Enhetstest: Testa ett enda lågnivåprogram i en isolerad miljö innan du verifierar dess integration med andra enheter.
  • Integrationstestning: Enhetstester och andra applikationskomponenter testas som en kombinerad enhet.
  • Funktionstester: Kontrollera om ett mjukvarusystem fungerar som det ska.
  • Prestandatestning: Utvärdera applikationens robusthet under högre belastningar än förväntat. Prestandatester avslöjar ofta flaskhalsar.
  • Röktest: Avgör om en konstruktion är tillräckligt stabil för att fortsätta med ytterligare testning.
  • Webbläsartestning: Kontrollera att programvarukomponenter är kompatibla med olika webbläsare.

Manuell testning görs fortfarande vid olika tidpunkter under utvecklingen, men detta görs mestadels av utvecklarna eller hårdvaruingenjörerna själva för att snabbt se om de ändringar de har gjort har haft önskad effekt.

Ercole Palmeri

Nyhetsbrev för innovation
Missa inte de viktigaste nyheterna om innovation. Registrera dig för att få dem via e-post.

Articoli recenti

Innovativ intervention i Augmented Reality, med en Apple-tittare på Catania poliklinik

En oftalmoplastikoperation med Apple Vision Pro kommersiella tittare utfördes på Catania Polyclinic...

3 maj 2024

Fördelarna med målarbok för barn - en värld av magi för alla åldrar

Att utveckla finmotorik genom färgläggning förbereder barn för mer komplexa färdigheter som att skriva. Att färglägga…

2 maj 2024

Framtiden är här: Hur sjöfartsindustrin revolutionerar den globala ekonomin

Marinesektorn är en sann global ekonomisk makt, som har navigerat mot en marknad på 150 miljarder...

1 maj 2024

Publishers och OpenAI tecknar avtal för att reglera flödet av information som bearbetas av artificiell intelligens

I måndags tillkännagav Financial Times ett avtal med OpenAI. FT licensierar sin journalistik i världsklass...

30 April 2024