Software test

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 22. december 2020; checks kræver 19 redigeringer .

Softwaretest  er en forskningsproces, der tester et softwareprodukt , som har til formål at kontrollere overensstemmelsen mellem programmets faktiske opførsel og dets forventede adfærd på et endeligt sæt af tests udvalgt på en bestemt måde ( ISO /IEC TR 19759:2005) [ 1] .

Testdefinitioner

Forskellige definitioner er blevet givet til test på forskellige tidspunkter og i forskellige kilder, herunder:

Historie

De første softwaresystemer blev udviklet som en del af videnskabelige forskningsprogrammer eller programmer til forsvarsafdelingernes behov. Test af sådanne produkter blev udført på en strengt formaliseret måde med en registrering af alle testprocedurer, testdata og de opnåede resultater. Testning blev opdelt i en separat proces, som begyndte efter færdiggørelsen af ​​kodningen, men som normalt blev udført af det samme personale.

I 1960'erne blev der lagt stor vægt på "udtømmende" test, som skulle udføres ved hjælp af alle stier i koden eller alle mulige input. Det blev bemærket, at under disse forhold er fuld softwaretest ikke mulig, fordi for det første er antallet af mulige input meget stort, for det andet er der mange stier, og for det tredje er det svært at finde problemer i arkitekturen og specifikationerne. Af disse grunde blev "udtømmende" test afvist og anset som teoretisk umuligt.

I begyndelsen af ​​1970'erne blev softwaretest omtalt som "processen med at demonstrere rigtigheden af ​​et produkt" eller "aktiviteten med at verificere den korrekte funktion af software." I spirende softwareudvikling blev softwareverifikation omtalt som "bevis for rigtighed." Selvom konceptet teoretisk var lovende, var det i praksis tidskrævende og ikke omfattende nok. Det blev besluttet, at bevis for korrekthed var en ineffektiv metode til test af software. Men i nogle tilfælde bruges påvisning af korrekt drift stadig i dag, for eksempel accepttest. I sidste halvdel af 1970'erne blev test set som at køre et program med den hensigt at finde fejl, ikke bevise, at det virkede. En vellykket test er en test, der opdager hidtil ukendte problemer. Denne tilgang er direkte modsat den foregående. Disse to definitioner repræsenterer "testparadokset", som er baseret på to modsatte udsagn: På den ene side giver test dig mulighed for at sikre dig, at produktet fungerer godt, og på den anden side afslører det fejl i programmer, hvilket viser, at produktet virker ikke. Det andet mål med test er mere produktivt med hensyn til kvalitetsforbedring, da det ikke tillader softwarefejl at blive ignoreret.

I 1980'erne blev test udvidet til at omfatte defektforebyggelse. Testdesign er den mest effektive kendte fejlforebyggende teknik. Samtidig begyndte der at komme tanker om, at der var behov for en testmetodologi, især at test skulle omfatte kontrol gennem hele udviklingscyklussen, og dette skulle være en kontrolleret proces. Under test er det nødvendigt at kontrollere ikke kun det samlede program, men også kravene, koden, arkitekturen og selve testene. "Traditionel" test, som eksisterede indtil begyndelsen af ​​1980'erne, refererede kun til det kompilerede, færdige system (nu almindeligvis omtalt som systemtest), men siden da er testere blevet involveret i alle aspekter af udviklingens livscyklus. Dette gjorde det muligt at finde problemer i kravene og arkitekturen tidligere, og derved reducere udviklingstiden og budgettet. I midten af ​​1980'erne dukkede de første værktøjer til automatiseret test op. Computeren skulle være i stand til at udføre flere test end et menneske, og at gøre det mere pålideligt. I starten var disse værktøjer ekstremt enkle og havde ikke evnen til at skrive scripts på scriptsprog.

I begyndelsen af ​​1990'erne begyndte begrebet "test" at omfatte planlægning, design, oprettelse, vedligehold og eksekvering af test og testmiljøer, og det betød en overgang fra test til kvalitetssikring, der dækkede hele softwareudviklingscyklussen. På dette tidspunkt begyndte forskellige softwareværktøjer at dukke op for at understøtte testprocessen: mere avancerede automatiseringsmiljøer med evnen til at oprette scripts og generere rapporter, teststyringssystemer og indlæse testsoftware. I midten af ​​1990'erne, med udviklingen af ​​internettet og udviklingen af ​​et stort antal webapplikationer, begyndte "agile test" (svarende til agile programmeringsmetoder) at vinde særlig popularitet.

Standarder relateret til test

Klassifikationer af typer og metoder til test

Der er flere kriterier, som det er sædvanligt at klassificere typer af test efter. Normalt er der følgende:

Ifølge testobjektet Kendskab til systemets interne struktur Efter grad af automatisering Efter grad af isolation [7] [8] Ved at teste tid På baggrund af positive scenarier
  • positiv test
  • Negativ test
I henhold til graden af ​​beredskab til test
  • Dokumentationstest (formel test)
  • Intuitiv test ( eng.  ad hoc test )

Testniveauer

  • Komponenttestning - Den  mindst mulige komponent at teste, såsom en enkelt klasse eller funktion, testes. Ofte udføres komponenttest af softwareudviklere.
  • Integrationstest  − Grænseflader mellem komponenter, delsystemer eller systemer testes. Hvis der er en reserve af tid på dette stadium, udføres test iterativt med gradvis tilslutning af efterfølgende delsystemer.
  • Systemtest  - Et integreret system testes for dets overensstemmelse med kravene .
    • Alfa-test er en efterligning af reelt arbejde med systemet af fuldtidsudviklere , eller reelt arbejde med systemet af potentielle brugere/kunder. Oftest udføres alfatest på et tidligt stadium af produktudviklingen, men i nogle tilfælde kan det anvendes på et færdigt produkt som intern accepttest. Nogle gange udføres alfatest under en debugger eller ved hjælp af et miljø, der hjælper med hurtigt at identificere fejl, der er fundet. Fundne fejl kan sendes til testere til yderligere undersøgelse i et miljø, der ligner det, programmet vil blive brugt i.
    • Beta-testning  - I nogle tilfælde distribueres en pre-release-version (i tilfælde af proprietær software, nogle gange med begrænset funktionalitet eller køretid) til en større gruppe mennesker for at sikre, at produktet indeholder få nok fejl. Nogle gange udføres beta-testning for at få feedback om et produkt fra dets fremtidige brugere.

Ofte for gratis og open source-software, karakteriserer alfa-teststadiet det funktionelle indhold af koden, og beta- test karakteriserer  fejlretningsstadiet. Samtidig er der som regel på hvert udviklingstrin mellemliggende resultater af arbejdet tilgængelige for slutbrugerne.

Statisk og dynamisk test

De teknikker, der er beskrevet nedenfor - test af hvid boks og test af sort boks - antager, at koden udføres, og forskellen er kun i den information, som testeren har. I begge tilfælde er dette dynamisk test .

Under statisk test udføres programkoden ikke - programmet analyseres ud fra kildekoden, som læses manuelt eller analyseres af specialværktøjer. I nogle tilfælde er det ikke kildekoden, der analyseres, men mellemkoden (såsom bytekode eller MSIL -kode ).

Statisk test omfatter også testkrav , specifikationer og dokumentation .

Regressionstest

Efter at have foretaget ændringer i den næste version af programmet, bekræfter regressionstest, at de foretagne ændringer ikke påvirkede ydeevnen af ​​resten af ​​applikationens funktionalitet. Regressionstest kan udføres både manuelt og med testautomatiseringsværktøjer .

Test scripts

Testere bruger testscenarier på forskellige niveauer: både i komponenttest og i integration og systemtest. Testscripts er normalt skrevet for at teste komponenter, der med størst sandsynlighed vil fejle, eller en fejl, der ikke findes i tide, kan være dyr.

Hvid boks, sort boks og grå boks test

Afhængig af testudviklerens adgang til kildekoden for det testede program, skelnes der mellem " testning (efter strategi) af en hvid boks " og " testning (efter strategi) af en sort boks ".

I white box testing (også kaldet transparent box testing ) har testudvikleren adgang til kildekoden for programmerne og kan skrive kode, der linker til bibliotekerne i den software, der testes. Dette er typisk for komponenttest, hvor kun dele af systemet testes. Det sikrer, at de strukturelle komponenter til en vis grad er funktionelle og stabile. White box-testning bruger kodedækningsmålinger eller mutationstest .

Ved black box-test har testeren kun adgang til programmet via de samme grænseflader som kunden eller brugeren, eller via eksterne grænseflader, der tillader en anden computer eller anden proces at forbinde til systemet til test. For eksempel kan en testkomponent virtuelt trykke på taster eller museknapper i det testede program ved hjælp af proceskommunikationsmekanismen, med tillid til, at alt går godt, at disse hændelser forårsager samme respons som rigtige tastetryk og museknapper. Som udgangspunkt udføres black box test ved hjælp af specifikationer eller andre dokumenter, der beskriver kravene til systemet. I denne type test er dækningskriteriet typisk summen af ​​inputdatastrukturdækning , kravdækning og modeldækning (i modelbaseret testning ).

Ved test af grå boks har testudvikleren adgang til kildekoden, men når man kører test direkte, kræves der normalt ikke adgang til koden.

Mens "alfa" og "beta-testning" refererer til stadierne før et produkt frigives (og også, implicit, til størrelsen af ​​testfællesskabet og begrænsninger for testmetoder), henviser white box og black box test til de måder, hvorpå testeren når målet.

Beta-test er generelt begrænset til black box-teknikker (selvom en konsekvent undergruppe af testere normalt fortsætter white box-testning parallelt med beta-test). Således kan udtrykket "beta-testning" angive programmets tilstand (tættere på udgivelsen end "alfa"), eller det kan indikere en bestemt gruppe af testere og den proces, der udføres af denne gruppe. Det vil sige, at en tester kan fortsætte med at arbejde med white-box-test, selvom programmet allerede er "beta", men i dette tilfælde er det ikke en del af "beta-testen".

Kodedækning

Kodedækning viser procentdelen af ​​et programs kildekode, der blev udført ("dækket") under test. I henhold til målemetoderne, operatørdækning, tilstandsdækning, stidækning, funktionsdækning mv.

Se også

Noter

  1. 1 2 ISO/IEC TR 19759:2005 ( SWEBOOK )
  2. Myers G. Softwarepålidelighed. M: Verden, 1980
  3. Beiser B. Software Testing Techniques, anden udgave. - NY: van Nostrand Reinhold, 1990
  4. ANSI/IEEE standard 610.12-1990 Ordliste over SE-teknologi NY:IEEE, 1987
  5. Sommerville I. Software Engineering, 8. udg. Harlow, England: Pearson Education, 2007
  6. Standardordliste over begreber brugt i softwaretestning, version 2.3, red. Erik van Veenendaal // International Software Testing Qualifications Board (ISTQB), 2014
  7. GOST R 56920-2016 | NATIONALE STANDARDER . protect.gost.ru. Hentet 12. marts 2017. Arkiveret fra originalen 12. marts 2017.
  8. Software- og systemteknik Softwaretest Del 1: Begreber og definitioner  // ISO/IEC/IEEE 29119-1:2013(E). — 01-09-2013. — S. 1–64 . - doi : 10.1109/IEEEESTD.2013.6588537 . Arkiveret fra originalen den 18. december 2016.

Litteratur

  • Glenford Myers, Tom Badgett, Corey Sandler. The Art of Software Testing, 3rd Edition = The Art of Software Testing, 3rd Edition. - M . : "Dialektik" , 2012. - 272 s. — ISBN 978-5-8459-1796-6 . Arkiveret 19. juli 2012 på Wayback Machine
  • Lisa Crispin, Janet Gregory. Agile test: En praktisk guide til testere og agile teams. - M. : "Williams", 2010. - 464 s. - (Addison-Wesley Signature Series). - 1000 eksemplarer.  - ISBN 978-5-8459-1625-9 .
  • Kaner Kem, Folk Jack, Nguyen Yong Kek. Software test. Grundlæggende begreber for forretningsapplikationsstyring. - Kiev: DiaSoft, 2001. - 544 s. — ISBN 9667393879 .
  • Culbertson Robert, Brown Chris, Cobb Gary. Hurtig test. - M . : "Williams", 2002. - 374 s. — ISBN 5-8459-0336-X .
  • Sinitsyn S. V., Nalyutin N. Yu. Softwareverifikation. - M. : BINOM, 2008. - 368 s. - ISBN 978-5-94774-825-3 .
  • Beizer B. Black box test. Teknologier til funktionel test af software og systemer. - Sankt Petersborg. : Peter, 2004. - 320 s. — ISBN 5-94723-698-2 .

Links