Regressiotestaus

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 6.9.2022 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

Regressiotestaus ( eng.  regression testinglat.  regressio  "liikkuminen takaisin, paluu, vetäytyminen") on yhteisnimi kaikenlaisille ohjelmistotestauksille, joiden tarkoituksena on havaita virheet jo testatuissa lähdekoodin osissa . Tällaisia ​​virheitä - kun ohjelmaan tehtyjen muutosten jälkeen jokin, jonka olisi pitänyt toimia, lakkaa toimimasta - niitä kutsutaan regressiovirheiksi . 

Regressiotestaus (joillekin[ mitä? ] lähteet) sisältää uuden virheenkorjauksen  - äskettäin löydetyn vian korjauksen tarkistamisen, vanhan virheen korjauksen  - tarkistamisen, ettei aiemmin korjattu ja varmennettu vika toistu järjestelmään uudelleen, sekä myös sivuvaikutuksen  - tarkastetaan, että aiemmin toiminut toiminnallisuus ei ole rikki , jos sen koodiin voi vaikuttaa joidenkin muiden toimintojen vikojen korjaaminen. Yleisesti käytettyjä regressiotestausmenetelmiä ovat aikaisempien testien uudelleenajo sekä sen tarkistaminen, onko regressiovirheitä päässyt seuraavaan versioon koodin yhdistämisen seurauksena.

Ohjelmistokehityskokemuksesta tiedetään, että samojen virheiden toistuminen on melko yleinen tapaus. Joskus tämä johtuu heikkoista versionhallintatekniikoista tai inhimillisestä virheestä versionhallinnassa . Mutta yhtä usein ratkaisu ongelmaan on "lyhytaikainen": seuraavan ohjelman muutoksen jälkeen ratkaisu lakkaa toimimasta. Ja lopuksi, kun kirjoitat mitä tahansa koodin osaa uudelleen, esiin tulee usein samat virheet, jotka olivat edellisessä toteutuksessa.

Siksi virheen korjaamisen yhteydessä pidetään hyvänä käytäntönä luoda sille testi ja suorittaa se säännöllisesti ohjelman myöhempien muutosten kanssa. Vaikka regressiotestaus voidaan tehdä manuaalisesti, se tehdään useimmiten erikoisohjelmien avulla, joiden avulla voit suorittaa kaikki regressiotestit automaattisesti . Jotkut projektit käyttävät jopa työkaluja regressiotestien automaattiseen suorittamiseen tietyllä aikavälillä. Tämä tehdään yleensä jokaisen onnistuneen kokoamisen jälkeen (pienissä projekteissa) joko joka ilta tai joka viikko.

Regressiotestaus on olennainen osa Extreme Programming -ohjelmaa . Tämä menetelmä korvaa suunnitteludokumentaation laajennettavalla, toistettavissa olevalla ja automatisoidulla koko ohjelmistopaketin testauksella ohjelmistokehitysprosessin jokaisessa vaiheessa .

Käyttö

Regressiotestausta voidaan käyttää paitsi ohjelman oikeellisuuden tarkistamiseen, sitä käytetään usein myös tuloksen laadun arvioimiseen. Joten, kun kehitetään kääntäjää ja suoritettaessa regressiotestejä, otetaan huomioon tuloksena olevan koodin koko, sen suoritusnopeus ja kunkin testitapauksen käännösaika.

Luokitus

S. Yoo ja M. Harman [1] tarjoavat artikkelissaan seuraavan regressiotestauksen luokituksen:

Aseta minimointiongelma

Sarjan minimointitestillä pyritään pienentämään testijoukon kokoa poistamalla testitapaukset testijoukosta tietyn kriteerin perusteella. On olemassa kolme lähestymistapaa, joista ensimmäinen käyttää automaattista tietoturvatestausta haavoittuvuuksien havaitsemiseen tutkimalla sovellusviat, jotka voivat havaita tunnetut haittaohjelmat, kuten virukset tai madot. Tämä lähestymistapa ottaa huomioon, että vain edellisen version epäonnistuneet testit suoritetaan uudelleen järjestelmän uudessa versiossa ongelman korjaamisen jälkeen.

Toinen lähestymistapa on suunniteltu havaitsemaan ja korjaamaan verkkosovellusten pienissä julkaisuissa olevia haavoittuvuuksia. Se muodostaa kiinteän linkin edellisen version sivuihin käyttämällä iteraattoreita, jotka on valittu tutkimaan haavoittuvuuksia sisältäviä verkkosivuja.

Ja lopuksi, kolmas lähestymistapa tarjoaa testauksen, jossa järjestelmä mukautuu itseensä jo tunnettujen vikojen varalta. Kirjoittajat välttävät toistamasta jo tunnettuja virheitä harkitsemalla suoritettaviksi vain niitä testejä, jotka paljastivat aiempien versioiden tunnetut viat.

Tehtävä priorisoida

Priorisointitestin ongelmana on testien oikea järjestys, joka maksimoi halutut ominaisuudet, kuten vikojen varhaisen havaitsemisen. Myös nykyiset priorisointimenetelmät huomioivat vain haavoittuvuudet.

Eräs menetelmä tarjoaa virhepohjaisia ​​prioriteettitestejä, jotka hyödyntävät suoraan tietoa kyvystään havaita vikoja.

Toinen tarjoaa vaihdettavan äänitystoistojärjestelmän, jonka avulla voit kirjoittaa tallennetun, suoritetun sovelluksen version uudeksi, muokatuksi. Niiden suoritus on priorisoitu, koska optimaalinen muokattu uudelleenkirjoitus määritetään kustannusfunktion perusteella ja mitataan alkuperäisen suorituksen ja muokatun suorituksen välinen ero uudelleen yrittäessä.

Testin valintaongelma

Valintamenetelmällä voit valita osajoukon tai kaikki testitapaukset ohjelmiston muuttuneiden osien testaamiseksi. Seuraavat lähestymistavat testaavat sekä suojausmekanismeja että haavoittuvuuksia.

  1. Tilakaaviopohjainen (UML-pohjainen) regressiotestausmenetelmä todentamisen, luottamuksellisuuden, saatavuuden, valtuutuksen ja eheyden turvallisuusvaatimuksiin. Sekvenssikaaviona esitetyt testit valitaan vaatimusmuutostestin perusteella.
  2. Ontologioiden ei-toiminnallisiin vaatimuksiin perustuva lähestymistapa regressiotestauksen parantamiseen. Testit valitaan ei-toiminnallisten vaatimusten, kuten turvallisuuden, suorituskyvyn ja luotettavuuden, muutosten ja vaikutusten perusteella. Jokainen testi liittyy muokattuun vaatimukseen, joka valitaan regressiotestausta varten.
  3. Lähestymistapa, jolla varmistetaan lisätodisteet palvelun turvallisuusvaatimusten sertifioimiseksi. Tämä lähestymistapa perustuu testipalvelumallin muutosten havaitsemiseen, mikä määrittää, pitäisikö luoda uusia testitapauksia vai valitako olemassa olevat testitapaukset uudelleen suoritettaviksi erillisessä palvelussa.
  4. Lähestymistapa turvallisten järjestelmien kehittämiseen yhteisillä kriteereillä arvioituna. Tässä lähestymistavassa tietoturvatestikohteet luodaan manuaalisesti ja esitetään sekvenssikaaviona. Jos niitä muutetaan, uudet testit kirjoitetaan tarpeen mukaan ja sitten kaikki testit suoritetaan uudella versiolla.
  5. Lähestymistapa verkkopalvelujulkaisujen tietoturvatestausvaatimuksiin. Palvelun käyttäjä voi ajoittain suorittaa uudelleen testisarjan palvelua vastaan ​​varmistaakseen, että käyttäjällä on edelleen oikeat oikeudet.
  6. Kattavuuspohjainen valintamenetelmä suojauskäytäntöjen evolutiivista testausta varten. Jokainen niistä sisältää sääntösarjan sen määrittämiseksi, kenellä on pääsy resurssiin ja millä ehdoilla.

Edut ja haitat 

Regressiotestaus suoritetaan, kun ohjelmiston olemassa olevaan toiminnallisuuteen tehdään muutoksia tai jos ohjelmistossa on virheenkorjaus. Regressiotestaus voidaan toteuttaa useilla lähestymistavoilla. Kaikkien testien läpäiseminen muokatun ohjelman toimesta antaa varmuuden siitä, että ohjelmistoon tehdyt muutokset eivät vaikuta olemassa olevaan toiminnallisuuteen, jonka tulee joka tapauksessa pysyä ennallaan.

Ketterässä projektinhallintaprosessissa, jossa ohjelmistokehityksen elinkaari on hyvin lyhyt, resurssit ovat niukat ja ohjelmistomuutoksia tehdään erittäin usein. Regressiotestaus voi aiheuttaa paljon tarpeettomia yleiskustannuksia.

Yleensä regressiotestaus tehdään automaatiotyökaluilla, mutta nykyisen sukupolven regressiotestaustyökaluja ei ole suunniteltu käsittelemään tietokantasovelluksia. Tästä syystä tietokantoja käyttävien sovellusten regressiotestin suorittaminen saattaa aiheuttaa odottamattomia kustannuksia, koska se vaatii paljon manuaalista työtä.

Lainaukset

Ohjelmiston ylläpidon perusongelma on, että yhden vian korjaaminen aiheuttaa suurella todennäköisyydellä (20-50 %) uuden. Siksi koko prosessi noudattaa periaatetta "kaksi askelta eteenpäin, yksi askel taaksepäin".

Miksi emme voi korjata virheitä tarkemmin? Ensinnäkin, jopa piilotettu vika ilmenee epäonnistumisena yhdessä paikassa. Todellisuudessa sillä on usein seurauksia koko järjestelmään, jotka eivät yleensä ole ilmeisiä. Jokainen yritys korjata se pienellä vaivalla korjaa sen, mikä on paikallista ja ilmeistä, mutta ellei rakenne ole erittäin selkeä tai dokumentaatio on erittäin hyvä, tämän korjauksen pitkän aikavälin vaikutukset jäävät huomaamatta. Toiseksi, virheitä ei yleensä korjaa ohjelman tekijä, vaan usein nuorempi ohjelmoija tai harjoittelija.

Uusien bugien vuoksi ohjelman ylläpito vaatii paljon enemmän järjestelmän virheenkorjausta lauseketta kohden kuin mikään muu ohjelmointimuoto. Teoriassa jokaisen korjauksen jälkeen on suoritettava koko joukko testitapauksia, joita vastaan ​​järjestelmä on tarkastettu aiemmin, jotta voidaan varmistaa, ettei se ole vaurioitunut jollain käsittämättömällä tavalla. Käytännössä tällaisen backtracking (regressio)testauksen pitäisi todellakin lähestyä tätä teoreettista ihannetta, ja se on erittäin kallista.

- F. Brooks Myyttinen mieskuukausi eli ohjelmistojärjestelmien luominen [2]

Katso myös

Muistiinpanot

  1. S. Yoo ja M. Harman. Regressiotestauksen minimointi, valinta ja priorisointi: Tutkimus.. - 2010. - S. 121-141.
  2. F. Brooks, Myyttinen mieskuukausi eli miten ohjelmistojärjestelmiä tehdään . Per. englannista. - Pietari: Symbol-Plus, 2001. - 304 s.: ill. (s. 113-114).

Linkit

Kirjallisuus