Mis on negatiivne testimine? Katsejuhud näitega

⚡ Nutikas kokkuvõte

Negatiivne testimine kontrollib, kuidas tarkvararakendus käitub ootamatute sisendandmete või töötingimuste saabumisel, nii et toode laguneb sujuvalt, selle asemel et krahhida, andmeid rikkuda või turvaauku paljastada.

  • ???? Eesmärk: Veenduge, et rakendus lükkab sobimatud andmed korrektselt tagasi, mitte ei nurju ega krahhi.
  • 🇧🇷 Kontrast: Positiivne testimine tõestab õnnelikku teed; negatiivne testimine uurib kõike, mis sellest väljaspool on.
  • 🛗 Analoogia: Lift peab vastu pidama ülekoormusele, tulekahjule ja voolukatkestusele, mitte ainult tavalistele reisijate sõitudele.
  • 🔒 Turvalisus: Vigased üleslaadimised ja SQL-i süstimise katsed on klassikalised negatiivse testi stsenaariumid.
  • 🧪 Design: Juhtumid genereeritakse piiriväärtuste, ekvivalentsusklasside, veaarvamise ja hägustamise abil.
  • 📊 Prioriteet: Järjesta kehtetud sisendid mõju järgi, sest ammendav negatiivne kajastus pole taskukohane.
  • ⚠️ Kompromiss: Liigne negatiivne testimine kulutab eelarvet, mida positiivse katvuse jaoks võib vaja minna rohkem.

Negatiivne testimine tarkvara testimisel sobimatute sisendnäidetega

Negatiivne testimine

Negatiivne testimine on tarkvara testimise tüüp, mida kasutatakse tarkvararakenduse kontrollimiseks ootamatute sisendandmete ja tingimuste suhtes. Ootamatud andmed või tingimused ulatuvad valest andmetüübist lihtsas vormiväljal kuni tahtliku häkkerirünnakuni. Negatiivse testimise eesmärk on vältida rakenduse krahhi sobimatu sisendi korral ning parandada toote kvaliteeti ja stabiilsust.

Ainult positiivne testimine tõestab, et süsteem töötab normaalsetes tingimustes. Negatiivne testimine kinnitab, et sama süsteem saab hakkama ka ebanormaalsete tingimustega, mida rikketaluv toode nõuab.

Negatiivse testimise näide

Lift on näide, mida negatiivse testimise selgitamiseks kõige sagedamini kasutatakse, kuna nii selle normaalset käitumist kui ka rikkekäitumist on lihtne ette kujutada.

Lifti nõuded on tuttavad: korruse numbri vajutamine saadab lifti sellele korrusele ja uks avaneb automaatselt, kui lift jõuab määratud korrusele.

Mõned sama tõusu negatiivsed stsenaariumid on loetletud allpool koos eeldusega, et positiivne testimine teeb selle asemele vastava tulemuse.

Negatiivne testimine Positiivne testimine
Mis juhtub, kui inimeste arv (kaal) ületab määratud piiri? Eeldatakse, et lifti siseneb ainult kindlaksmääratud arv inimesi
Mis juhtub, kui keegi liftis suitsetab või süttib tulekahju? Eeldatakse, et lifti sees ei ole suitsu ega tuld
Mis juhtub, kui töö ajal tekib voolukatkestus? Eeldatakse, et lifti töötamise ajal elektrikatkestust ei toimu.

Kõik need juhtumid kuuluvad negatiivse testi alla. Ühegi juhtumi puhul ei saa garanteerida, et see kunagi ei juhtu, seega tuleb igaüks neist kontrolli alla saada.

Oletame, et ülekoormuse seisundit ei kontrollita kunagi ja lift käitub ülekoormuse korral ebanormaalselt. See üksainus tühimik kahjustab süsteemi töökindlust ja võib isegi elu ohtu seada. See ongi see, mida negatiivne testimine praktikas tähendab ja miks see on oluline.

Tarkvara käitub samamoodi. Negatiivne test kaldub tahtlikult kõrvale tavapärasest tööprotseduurist. Mõelge registreerimisvormile.

Negatiivne testimine Positiivne testimine
Sisestage e-posti aadressi väljale sobimatu e-posti aadress E-posti väljale sisestatakse ainult kehtivad e-posti aadressid
Sisestage telefoninumbri väljale sobimatu telefoninumber, näiteks tähemärgid Numbriväljale sisestatakse ainult numbrid
Laadi üles pilt, mille suurus jääb määratud piiridest väljapoole Laaditakse üles ainult määratud suuruse piires olevad pildid
Laadige üles sobimatud failid, näiteks XML or SQL failid pildi üleslaadimise väljal Üles laaditakse ainult kehtivad pildivormingud, näiteks .jpg või .png

Kõik need negatiivsed juhtumid peavad ikkagi süsteemi tööle jätma. Kui numbriväljale trükitakse märk, ei saa rakendus töödelda ootamatuid andmeid, mida see kunagi ei oodanud, ja see võib krahhi minna. Veelgi hullem, SQL süstimine Samas väljal olev string võib andmebaasi sisu kustutada. Sellised kaod on negatiivse testimise põhjuseks.

Miks teha negatiivseid teste?

Testimine võtab aega ja raha, seega on oluline otsustada, mida, kuidas ja kui palju testida. Argument selle eelarve osaliseks kulutamiseks negatiivsele testimisele näeb projekti kahelt poolt vaadatuna välja erinev.

Organisatsiooni perspektiiv

Kvaliteetse toote kliendile tarnimine on organisatsiooni kohustus ja negatiivsed testimistulemused on osa sellest kohustusest. See on ka organisatsiooni tõend selle kohta, et ta tegi kõik mõistliku rikke vältimiseks, kuigi ükski süsteem pole täiesti veavaba.

Mõju on otsustav tegur. E-kaubanduse sait võib läbida kõik positiivsed testid ja ikkagi sisaldada lünka, mis võimaldab ründajal käivitada SQL-süstimise ja selle taga olevad andmed kustutada. See on tõsine turvaauk ja seda otsitakse ainult negatiivse testimise abil.

Avalikele rakendustele, eriti veebisaitidele, pole külastajate kasutuse üle peaaegu mingit kontrolli, seega on negatiivne testimine ainus viis kinnitada, et ebatavaline kasutus on hõlmatud ja kontrollitud. Sama kehtib ka pahatahtlike kasutajate kohta: ründajad otsivad aktiivselt võimalusi süsteemi murdmiseks ja häkkimisstsenaariumid kuuluvad täielikult negatiivse testi alla.

Kliendi vaatenurk

Kliendid ootavad toodet, millel pole ühtegi haavatavust, ja negatiivne testimine toetab seda ootust. Tundlike toodete, näiteks e-kaubanduse või veebipõhise aktsiatega kauplemise puhul... turvalisuse testimine ja negatiivsed testid on pigem kohustuslikud kui valikulised.

Kliendi ainus tegelik mure on hind. Kui rikke mõju on analüüsitud, saab klient otsustada, kui kaugele negatiivse testimisega minna.

Kuidas teha negatiivset testi

Negatiivse testimise aluseks on iga sisendi kaalumine, mida rakendus füüsiliselt vastu võtta saab, mitte ainult sisendite arvestamine, mida see peaks vastu võtma. Igaüks neist kuulub kuhugi. Testjuhtum isegi kui see on ilmselgelt vale viis funktsiooni kasutamiseks. E-posti välja testitakse kõigega, mis ei ole kehtiv e-posti aadress, ja pildi üleslaadimise juhtelementi testitakse iga failitüübiga, mis ei ole pilt.

Võimalike sobimatute sisendite loend on sisuliselt lõputu, seega tuleb negatiivseid testijuhtumeid prioritiseerida. Pildivälja puhul, mis aktsepteerib ainult .png-faile, sisaldavad kandidaatide üleslaadimised .jpeg-, .xml-, .xls- ja paljusid teisi. XML- või SQL-failil on palju suurem potentsiaalne mõju kui .jpeg-failil, seega need juhtumid käivitatakse esimesena. Juhtumite järjestamine mõju järgi enne käivitamist hoiab negatiivse testimise taskukohase hinnaga.

Enamik negatiivseid testijuhtumeid pärineb pigem väikesest hulgast väljakujunenud disainitehnikatest kui improvisatsioonist:

  • Piirväärtused: rakendage väärtusi vahetult väljaspool kehtivat vahemikku, näiteks 0 ja 101 väljal, mis aktsepteerib väärtusi 1 kuni 100.
  • Sobimatud ekvivalentsusklassid: Valige igast tagasilükatud sisendi klassist üks esindaja, näiteks tähed numbriväljal.
  • Viga arvamisel: Kasutage varasemate defektide kogemust, et sihtida sisendeid, mis kõige tõenäolisemalt seda tüüpi funktsiooni rikuvad.
  • Vigased ja vaenulikud andmed: skriptimärgendid, SQL-fragmendid ja ülisuured kasulikud koormused, mis uurivad valideerimist ja turvalisuse käsitlemist.
  • Hägustestimine: genereerib automaatselt suures koguses juhuslikku või muteerunud sisendit, et leida käsitlemata krahhe.
  • Katkestatud vood: tühistada, värskendada, ajalõpp või kaotada ühenduse tehingu keskel.

Olenemata sellest, milline tehnika juhtumi tekitab, tuleb oodatav tulemus kirja panna kontrollitud ja loetava tõrkena – valideerimissõnumina, tagasilükatud üleslaadimisena, puhta tagasipööramisena – ja mitte kunagi pelgalt „süsteem ei jookse kokku”.

Negatiivse testi plussid ja miinused

Nagu igal teisel testimismeetodil, on ka negatiivsel testimisel eelised ja puudused, mis sõltuvad sellest, kus, millal ja kui palju seda rakendatakse.

Negatiivse testimise eelised

  • See kaitseb toote kvaliteeti otseselt, sest kvaliteetne toode on selline, millel puuduvad ärakasutatavad haavatavused.
  • See laiendab ulatust. Vigane sisend jõuab reaalajas süsteemi tahtlikult või kogemata, seega peavad negatiivsed juhtumid esinema positiivsete kõrval, et kajastus oleks mõttekas.
  • See suurendab klientide usaldust enne versiooni avaldamist.
  • See toob esile defektid, milleni positiivne testimine struktuurilt ei jõua, näiteks käsitlemata erandid ja nõrk sisendi valideerimine.

Negatiivse testimise miinused

  • Mõnes olukorras on see aja ja energia raiskamine. Kui rakendus on loodud ühele kasutajale, pole 100 samaaegse kasutaja juhtum testimist väärt, seega on õigete tingimuste valimine oluline ja mõned süsteemid vajavad üldse väga vähe negatiivseid teste.
  • Juhtumite kujundamiseks on vaja oskuslikke ja kogemustega inimesi.
  • Kliendi seisukohast lisab see kulusid ja võib avaldamist edasi lükata.
  • See võistleb pingutuse nimel. Meeskond, mis kulutab palju negatiivsele testimisele, võib lõpuks positiivsele testimisele liiga vähe investeerida.

KKK

Positiivne testimine annab kehtivaid andmeid ja kinnitab oodatud tulemust. Negatiivne testimine annab kehtetuid andmeid, valesid vorminguid ja katkiseid järjestusi ning kinnitab rakenduse tagasilükkamist kontrollitud teatega, mitte ebaõnnestumist.

Tühjad volitused, kehtiv kasutaja vale parooliga, SQL-fragmendid kasutajanimes, ülepikad stringid, tühikud alguses või lõpus, keelatud kontod ja korduvad ebaõnnestunud katsed lukustuse toimimise kinnitamiseks.

Ei. Need kattuvad sobimatu või pahatahtliku sisendi puhul, kuid turvatestimine hõlmab ka autentimist, autoriseerimist, krüpteerimist ja seansi käsitlemist. Negatiivne testimine on laiem sisendi ja tingimuste tehnika.

Tavaliselt kirjutavad neid testijad ja kvaliteedikontrolli insenerid, sageli koos arendajaga, kes vaatab üle veateed ja ärianalüütik kinnitab, milliseid sobimatuid tingimusi nõuded tegelikult keelavad.

Piisavalt, et katta iga tagasilükatud sisendi klassi, iga piiri ja iga suure mõjuga rikketee. Lisaks sellele ei anna lisatud juhtumid erilist väärtust, seega risk ja mõju seavad lõpu.ping Punkt.

Jah. Vigase sisendi juhtumid on väga korduvad, seega sobivad need automaatika testimine ja regressioonianalüüside komplektid. Hägusustööriistad automatiseerivad juhusliku sisendi genereerimise, samas kui väited kontrollivad valideerimisteadete ilmumist.

Mudelid loevad nõudeid või vormiskeemi ning pakuvad välja sobimatuid väärtusi, piiritingimusi ja vaenulikke stringe, mida testija ei pruugi käsitsi loetleda. Ülevaataja kinnitab ikkagi, et iga oodatav tulemus vastab spetsifikatsioonile.

Jah, see mustandab olemasolevast testfailist kinnituskoodi, sobimatute andmete kinnitusi ja parameetritega juhtumeid. Genereeritud ootused vajavad ülevaatamist, sest usutava välimusega väide võib kodeerida valet käitumist.

Võta see postitus kokku järgmiselt: