Vuonna ohjelmointi The laite testi (tai " TU ", tai " UT " Englanti) on menettely, joka mahdollistaa tarkistaa oikean toiminnan tietyn osan ohjelmiston tai osan ohjelman (nimeltään "yksikkö” tai ”moduuli”).
Ei-kriittisissä sovelluksissa yksikkötestien kirjoittamista on pitkään pidetty sivutehtävänä. Extreme Programming (XP) tai Test Driven Development (TDD) -menetelmät ovat kuitenkin asettaneet yksikötestauksen, joka tunnetaan nimellä "ohjelmoijan testit", takaisin ohjelmointitoiminnan keskelle.
Sunit testi ympäristö varten Smalltalk kielen , luodutLokakuu 1994kirjoittanut Kent Beck . Vuonna 1997 Kent Beck tapasi Erich Gamma , jonka kanssa hän loi JUnit , jotka kuuluvat niiden suosio johti monien yksikkötestaus puitteet , tämä sarja on nimeltään xUnit .
Samanaikaisesti kehitettiin ATTOL-yksikötesti , jota Sextant Avionique käytti sitten vuonna 1998
Kirjoitamme testin vertaillaksemme toteutusta sen määrittelyyn. Testi määrittelee Lopetuskriteeri (tila tai lähdöt lopussa suorituksen) ja sen avulla voidaan ratkaista onnistumisen tai epäonnistumisen tarkistaa. Erittelyn ansiosta voidaan sovittaa annettu tulotila tulokseen tai lähtöön. Testi tekee mahdolliseksi varmistaa, että otto / anto-suhde antama selityksessä on todellakin suoritetaan.
XP-menetelmä suosittelee testien kirjoittamista samanaikaisesti tai jo ennen testattavaa toimintoa ( Test Driven Development ). Tämä antaa mahdollisuuden määritellä tarkasti kehitettävän moduulin rajapinta. Testit suoritetaan koko kehityksen ajan, mikä antaa mahdollisuuden nähdä, vastaako juuri kirjoitettu koodi vaatimusta.
Kun ohjelmaa muokataan, yksikkötestit raportoivat regressiot . Jotkut testit voivat todellakin epäonnistua muutoksen seurauksena, joten on joko tarpeen kirjoittaa testi uudelleen vastaamaan uusia odotuksia tai korjata virhe koodissa.
Yksikkötestejä voidaan käyttää API: n täydennyksenä , on erittäin hyödyllistä lukea testit, jotta ymmärretään kuinka menetelmää käytetään. Lisäksi on mahdollista, että dokumentaatio ei ole enää ajan tasalla, mutta testit itse vastaavat sovelluksen todellisuutta.
Määritämme yleensä 4 vaihetta yksikötestin suorittamisessa:
Tämä on ohjelmoijan tehtävä testata moduuli muusta ohjelmasta riippumatta varmistaakseen, että se täyttää toiminnalliset vaatimukset ja että se toimii oikein kaikissa olosuhteissa. Tätä tarkistusta pidetään välttämättömänä, etenkin kriittisissä sovelluksissa. Siihen liittyy yleisesti koodin kattavuuden tarkistus (rakenteellisen kattavuuden arviointi), joka koostuu sen varmistamisesta, että kaikki testit johtavat kaikkien koodissa olevien ohjeiden (tai määrätyn murto-osan) suorittamiseen.
Kaikki yksikötestit on toistettava uudelleen koodin muokkaamisen jälkeen sen varmistamiseksi, ettei regressioita ole (uusien toimintahäiriöiden esiintyminen). Tietyn "testistrategian" käyttö voi rajoittaa toistettavia testejä, esimerkiksi: muunnosvaikutusten analyysi, joka on korreloitu todisteiden kanssa moduulien riippumattomuudesta, antaa mahdollisuuden kohdistaa toistettavat yksikkötestitapaukset.
Testin on vastattava sovelluksen spesifikaatioita, joten sinun on ensin kirjoitettava testit ja läpäistävä ne myöhemmin sen sijaan, että kirjoitat koodin ennen ja otat riskin siitä, että se vaikuttaa kirjoituskokeiden aikana. TDD- menetelmän suuri puolustaja Bob Martin tarjoaa yksinkertaisen mallin yksikkötestien kirjoittamiseen:
Harjoituskokeet ovat objekteja simuloida todellinen objekti hallitusti. Joissakin tapauksissa mallin käyttö on välttämätöntä koodin peittoajan säästämiseksi ja testin luotettavuuden säästämiseksi .
Pilkun väärinkäytöllä voi kuitenkin olla päinvastainen vaikutus, mukaan lukien testin suoritusajan pidentäminen, mikä tekee testeistä monimutkaisen ymmärrettävän.
Suurin osa kehyksiä ja xUnit perheen mahdollistavat sukupolven yksikkö testi luokkiin. Nämä kehykset tarjoavat kuitenkin vain luokkien luurangon. Kehittäjän on siis kirjoitettava testit.
Yksikkötestien luominen on tärkeä aihe tutkijoille, ja useat konferenssit ovat kiinnostuneita tästä aiheesta, kuten kansainvälinen ohjelmistojen testauksen ja analyysin symposium (ISSTA), kansainvälinen ohjelmistotekniikan konferenssi (ICSE) ja automatisoitu ohjelmistotekniikka (ASE).
Jotkin testit eivät välttämättä enää läpäise ohjelman koodia muokattaessa. tässä tapauksessa kehittäjän on määritettävä, tuleeko se itse koodista vai testistä: jos se tulee testistä, kehittäjän on muutettava testiään, koska sen poistaminen lisäisi ohjelman regressiomahdollisuuksia. Jotkut tutkijat ovat kehittäneet työkaluja tämän ongelman ratkaisemiseksi.
ReAssert on työkalu, joka ehdottaa korjauksia epäonnistuneelle testille. Se analysoi testejä muokkaamiseksi ja ehdottaa muutoksia kehittäjälle. Jos ehdotus sopii kehittäjälle, he voivat tehdä muutoksen napin painalluksella.
Parametroitavat yksikötestit ovat yksikötestejä, jotka ottavat parametrit. Sitten he voivat käyttää parametreja kuten QuickCheck. Näitä testejä tukevat JUnit , TestNG ja NUnit .
Luotaen konkreettisiin panos- ja tulostetapauksiin, Oraclen luomiseen ja testien kattavuuteen tapausten minimoimiseksi tutkijat ovat onnistuneet luomaan konfiguroitavat yksikötestit. Tämän menetelmän tulokset ovat lupaavia.
Yksikkötestien suorittamiseen on monia työkalupaketteja ( kehyksiä ). Niitä on pääasiassa ohjelmointikieliä . Esimerkiksi Test::More varten Perl .
Yleinen termi " xUnit " osoittaa työkalun, joka mahdollistaa yksikötestien suorittamisen tietyllä kielellä (jonka alkukirjain korvaa yleensä "x").
Erilaiset työkalut mahdollistavat yksikötestien automatisoinnin: