Mikä on testikäyttöinen kehitys (TDD)? Opetusohjelma esimerkin kanssa

Testiohjattu kehitys

Test Driven Development (TDD) on ohjelmistokehitysmenetelmä, jossa testitapauksia kehitetään määrittämään ja vahvistamaan, mitä koodi tekee. Yksinkertaisesti sanottuna kunkin toiminnon testitapaukset luodaan ja testataan ensin ja jos testi epäonnistuu, uusi koodi kirjoitetaan testin läpäisemiseksi ja koodin tekemiseksi yksinkertaiseksi ja virheettömäksi.

Testiohjattu kehitys alkaa suunnitella ja kehittää testejä sovelluksen jokaiselle pienelle toiminnallisuudelle. TDD kehottaa kehittäjiä kirjoittamaan uuden koodin vain, jos automaattinen testi on epäonnistunut. Tämä välttää koodin päällekkäisyyden. TDD: n koko muoto on testipohjainen kehitys.

TDD: n yksinkertainen käsite on kirjoittaa ja korjata epäonnistuneet testit ennen kirjoittamista uusi koodi (ennen kehitystä). Tämä auttaa välttämään koodin päällekkäisyyksiä, kun kirjoitamme pienen määrän koodia kerrallaan testien läpäisemiseksi. (Testit ovat vain vaatimusehtoja, jotka meidän on testattava täyttääkseen ne.) testi ennen sovelluksen varsinaista kehittämistä. Siksi TDD: tä kutsutaan joskus myös nimellä Test First Development.

Tässä opetusohjelmassa saat lisätietoja-

  • TDD-testin suorittamisesta
  • TDD Vs. Perinteinen testaus
  • Mikä on hyväksyntä TDD ja kehittäjien TDD
  • TDD: n skaalaus ketterällä mallilla ajetulla kehityksellä (AMDD)
  • Test Driven Development (TDD) vs. Ketterä malliohjattu kehitys (AMDD)
  • Esimerkki TDD: stä
  • TDD: n edut

Kuinka suorittaa TDD-testi

Seuraavissa vaiheissa määritetään, miten TDD-testi suoritetaan.

  1. Lisää testi.
  2. Suorita kaikki testit ja katso, epäonnistuvatko uudet testit.
  3. Kirjoita joitain -koodi.
  4. Suorita testit ja Refactor-koodi.
  5. Toista.

TDD-sykli määrittelee

  1. Kirjoita testi
  2. Tee se suoritettavaksi.
  3. Muuta koodi tehdä siitä oikein eli Refactor.
  4. Toista prosessi.

Joitakin selityksiä TDD: stä:

  • TDD ei tarkoita ”testausta”. eikä ”Suunnittelusta”.
  • TDD ei tarkoita ”kirjoita joitain testejä, sitten rakenna järjestelmä, joka läpäisee testit.
  • TDD ei tarkoita” tee paljon testejä. ”

TDD vs. perinteinen testaus

TDD-lähestymistapa on ensisijaisesti määritystekniikka. Se varmistaa, että lähdekoodisi testataan perusteellisesti vahvistuksen yhteydessä. taso.

  • Perinteisessä testauksessa onnistunut testi löytää yhden tai useamman vian. Se on sama kuin TDD. Kun testi epäonnistuu, olet edistynyt, koska tiedät, että sinun on ratkaistava ongelma.
  • TDD varmistaa, että järjestelmäsi todella täyttää sille määritellyt vaatimukset. Se auttaa rakentamaan luottamusta järjestelmääsi.
  • TDD: ssä keskitytään enemmän tuotantokoodiin, joka tarkistaa, toimiiko testaus oikein. Perinteisessä testauksessa painopiste on enemmän testitapausten suunnittelussa. Ovatko testit osoittaneet sovelluksen asianmukaisen / virheellisen suorituksen vaatimusten täyttämiseksi.
  • TDD: ssä saavutat 100% kattavuustestin. Jokainen koodirivi testataan, toisin kuin perinteinen testaus.
  • Sekä perinteisen testauksen että TDD: n yhdistelmä johtaa järjestelmän testaamisen tärkeyteen eikä järjestelmän täydellisyyteen.
  • Ketterä mallinnus (AM), sinun tulisi ”testata tarkoituksella”. Sinun pitäisi tietää, miksi testaat jotain ja minkä tason se on testattava.

Mikä on hyväksyntä TDD ja kehittäjän TDD

TDD: tä on kaksi tasoa

  1. Hyväksyntä TDD (ATDD): ATDD: llä kirjoitat yhden hyväksymistestin. Tämä testi täyttää spesifikaation vaatimukset tai järjestelmän käyttäytymisen. Sen jälkeen kirjoita vain tarpeeksi tuotanto- / toiminnallisuuskoodia kyseisen hyväksymistestin suorittamiseksi. Hyväksyntätesti keskittyy järjestelmän yleiseen käyttäytymiseen. ATDD tunnettiin myös nimellä Behavioral Driven Development (BDD).
  2. Kehittäjän TDD: Kehittäjä TDD: llä kirjoitat yhden kehittäjätestin eli yksikötestin ja sitten vain tarpeeksi tuotantokoodin kyseisen testin täyttämiseksi. Yksikkötesti keskittyy järjestelmän kaikkiin pieniin toimintoihin. Kehittäjän TDD: tä kutsutaan yksinkertaisesti nimellä TDD.

    ATDD: n ja TDD: n päätavoitteena on määritellä ratkaisulle yksityiskohtaiset, suoritettavat vaatimukset juuri oikeaan aikaan (JIT) -periaatteella. JIT tarkoittaa vain järjestelmässä tarvittavien vaatimusten huomioon ottamista. Joten lisää tehokkuutta.

TDD: n skaalaus ketterän mallin ohjaaman kehityksen avulla (AMDD)

TDD on erittäin hyvä yksityiskohtaisissa määrittelyissä ja validoinnissa. Se epäonnistuu ajatellen suurempia asioita, kuten yleistä suunnittelua, järjestelmän käyttöä tai käyttöliittymää.AMDD korjaa ketterät skaalausongelmat, joita TDD ei.

AMDD: tä käytettiin siis suurempiin ongelmiin.

AMDD: n elinkaari.

Mallipohjaisessa kehityksessä (MDD) luodaan laajat mallit ennen lähdekoodi on kirjoitettu. Millä puolestaan on ketterä lähestymistapa?

Yllä olevassa kuvassa kukin ruutu edustaa kehitystoimintaa.

Visiointi on yksi TDD-prosesseista, jotka ennakoivat / kuvittelevat testejä, jotka suoritetaan projektin ensimmäisen viikon aikana. Visioinnin päätavoitteena on tunnistaa järjestelmän laajuus ja järjestelmän arkkitehtuuri. Menestyksen onnistumiseksi tehdään korkean tason vaatimukset ja arkkitehtuurimallinnus.

Se on prosessi, jossa ei tehdä tarkkaa ohjelmiston / järjestelmän määrittelyä, mutta tutkitaan ohjelmiston / järjestelmän vaatimuksia, mikä määrittelee projektin kokonaisstrategian.

  1. Iteraatio 0: Visiointi

On olemassa kaksi pääaktivointia.

  1. Alustavien vaatimusten visiointi.

    Järjestelmän korkean tason vaatimusten ja laajuuden tunnistaminen voi kestää useita päiviä. Pääpaino on käyttömallin, alustavan verkkotunnusmallin ja käyttöliittymämallin (UI) tutkimiseen.

  2. Alkuperäinen arkkitehtisuunnittelu.

    Järjestelmän arkkitehtuurin tunnistaminen vie myös useita päiviä. Sen avulla voidaan asettaa teknisiä ohjeita projektille. Pääpaino on tutkia teknologiakaavioita, käyttöliittymän kulkua, verkkotunnusmalleja ja muutostapauksia.

  1. Iteraatiomallinnus:

    Tässä tiimin on suunniteltava kullekin iteraatiolle tehtävä työ.

  • Jokaisessa iteraatiossa käytetään ketterää prosessia, ts. jokaisen iteraation aikana uusi työkohde lisätään prioriteetilla.
  • Ensimmäinen korkeampi priorisoitu työ otetaan huomioon. Lisätyt työkohteet voidaan priorisoida tai poistaa esineiden pinosta milloin tahansa.
  • Ryhmä keskustelee siitä, kuinka he aikovat toteuttaa kunkin vaatimuksen. Mallinnusta käytetään tähän tarkoitukseen.
  • Mallinnusanalyysi ja suunnittelu tehdään jokaiselle vaatimukselle, joka aiotaan toteuttaa kyseiselle iteraatiolle.
  1. Mallin isku:

    Tätä kutsutaan myös nimellä Just in time Modeling.

  • Tässä mallinnusistunnossa on mukana 2/3-jäseninen ryhmä, joka keskustelee asioista paperilla tai taululla.
  • Yksi ryhmän jäsen kysyy toiselta mallintaa heidän kanssaan. Tämä mallinnusistunto kestää noin 5-10 minuuttia. Missä tiimin jäsenet kokoontuvat jakamaan taulua / paperia.
  • He tutkivat asioita, kunnes eivät löydä ongelman tärkeintä syytä. Juuri ajoissa, jos yksi tiimin jäsen tunnistaa haluamansa ongelman ratkaista sitten hän / hän ottaa nopeasti apua muiden tiimin jäsenten. .
  1. Test Driven Development (TDD).
  • Se edistää sovelluskoodisi ja yksityiskohtaisten eritelmien vahvistamista.
  • Sekä hyväksymistesti (yksityiskohtaiset vaatimukset) että kehittäjien testit (yksikkötesti) ovat TDD-tuloja.
  • TDD tekee koodista yksinkertaisemman ja selkeämmän. Sen avulla kehittäjä voi pitää vähemmän dokumentaatiota.
  1. Arvostelut.
  • Tämä on valinnainen. Se sisältää kooditarkastukset ja mallien tarkastelut.
  • Tämä voidaan tehdä tehdään jokaiselle iteraatiolle tai koko projektille.
  • Tämä on hyvä vaihtoehto antaa palautetta projektille.

Test Driven Development (TDD) vs. Ketterä malliohjattu kehitys (AMDD)

Esimerkki TDD: stä

Tässä tässä esimerkissä määritämme luokan salasanan. Tämän luokan osalta yritämme täyttää seuraavat ehdot.

Salasanan hyväksymisen edellytys:

  • Salasanan tulisi olla 5-10 merkkiä.

Ensin kirjoitetaan koodi joka täyttää kaikki edellä mainitut vaatimukset.

Skenaario 1: Testin suorittamiseksi luomme luokan PasswordValidator ();

Suoritetaan luokan TestPassword () yläpuolella;

Lähtö ohitetaan alla olevan kuvan mukaisesti;

Tulos:

Skenaario 2: Tässä voimme katso menetelmässä TestPasswordLength () ei tarvitse luoda luokan PasswordValidator -ilmentymää. Esimerkki tarkoittaa luokan objektin luomista viittaamaan kyseisen luokan jäseniin (muuttujat / menetelmät).

Poistamme luokan PasswordValidator pv = new PasswordValidator () koodista. Voimme kutsua isValid () -menetelmää suoraan PasswordValidatorilla. IsValid (”Abc123”).(Katso alla oleva kuva)

Joten Refactor (vaihda koodi) kuten alla:

Skenaario 3: Kun palauttamisen jälkeen tulos näyttää virheellisen tilan (katso alla oleva kuva), tämä johtuu siitä, että olemme poistaneet ilmentymän. Joten ei ole viittausta ei-staattiseen menetelmään isValid ().

Joten meidän on muutettava tätä menetelmää lisäämällä ”staattinen” sana ennen loogista, koska julkinen staattinen looginen isole on isValid (merkkijonon salasana). Refactoring Class PasswordValidator () poistaa yllä olevan virheen testin läpäisemiseksi.

Tulos:

Muutettuasi luokan PassValidator () jos suoritamme testin, tulos läpäistään alla olevan kuvan mukaisesti.

TDD: n edut

  • Varhainen virhe ilmoituksen.

    Kehittäjät testaavat koodinsa, mutta tietokantamaailmassa tämä koostuu usein manuaalisista testeistä tai kertaluonteisista skripteistä. TDD: n avulla muodostat ajan myötä joukon automaattisia testejä, jotka sinä ja kaikki muut kehittäjät voivat suorittaa uudelleen haluamallasi tavalla.

  • Parempi muotoilu, puhtaampi ja laajennettava koodi.
    • Se auttaa ymmärtämään, miten koodia käytetään ja miten se on vuorovaikutuksessa muiden moduulien kanssa.
    • Se johtaa parempaan suunnittelupäätökseen ja ylläpidettävämpään koodiin.
    • TDD mahdollistaa pienemmän koodin kirjoittamisen yhdellä vastuulla kuin monoliittiset menettelyt, joilla on useita vastuita. Tämä tekee koodista helpommin ymmärrettävän.
    • TDD pakottaa myös kirjoittamaan vain tuotantokoodin läpäisemään testit käyttäjän vaatimusten mukaisesti.
  • Luottamus refaktorille
    • Jos muokkaat koodia, koodissa voi olla katkoksia. Joten automaattisten testien avulla voit korjata nämä tauot ennen julkaisua. Oikea varoitus annetaan, jos taukoja havaitaan käytettäessä automaattisia testejä.
    • TDD: n käyttämisen pitäisi johtaa nopeampaan, laajennettavaan koodiin, jossa on vähemmän vikoja ja jotka voidaan päivittää pienimmällä riskillä. >
    • Hyvä ryhmätyöhön

      Tiimin jäsenen poissa ollessa muut ryhmän jäsenet voivat helposti ottaa koodin vastaan ja työskennellä sen parissa. Se auttaa myös tiedon jakamista, mikä tekee tiimistä tehokkaamman kokonaisuutena.

    • Hyvä kehittäjille

      Vaikka kehittäjien on käytettävä enemmän aikaa TDD-testitapausten kirjoittamiseen, virheenkorjaukseen ja uusien ominaisuuksien kehittämiseen kuluu paljon vähemmän aikaa. Kirjoitat puhtaamman, vähemmän monimutkaisen koodin.

    Yhteenveto:

    • TDD tarkoittaa testiohjattua kehitystä. Se on prosessi koodin muokkaamiseksi aiemmin suunnitellun testin läpäisemiseksi.
    • Siinä painotetaan enemmän tuotantokoodia kuin testitapausten suunnittelua.
    • Testiohjattu kehitys on prosessi. koodin muokkaamisesta aiemmin suunnitellun testin läpäisemiseksi.
    • Ohjelmistotuotannossa sitä kutsutaan joskus nimellä ”Test First Development”.
    • TDD sisältää koodin muokkaamisen eli jonkin määrän koodin muuttamisen / lisäämisen olemassa olevaan koodiin vaikuttamatta koodin käyttäytymiseen.
    • TDD käytettäessä koodi tulee selkeämmäksi ja helpommaksi ymmärrä.

    Tämän artikkelin on kirjoittanut Kanchan Kulkarni

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *