Mi a tesztvezérelt fejlesztés (TDD)? Oktatóanyag a

tesztvezérelt fejlesztés

A tesztvezérelt fejlesztés (TDD) egy szoftverfejlesztési megközelítés, amelyben teszteseteket dolgoznak ki annak meghatározására és érvényesítésére, hogy a kód mit fog tenni. Egyszerűbben fogalmazva, az egyes funkciók teszteseteit először létrehozzák és tesztelik, és ha a teszt nem sikerül, akkor az új kódot megírják annak érdekében, hogy sikeres legyen a teszt, és a kód egyszerű és hibamentes legyen.

A tesztvezérelt fejlesztés tesztek tervezésével és fejlesztésével kezdődik az alkalmazás minden apró funkciójához. A TDD arra utasítja a fejlesztőket, hogy csak akkor írjanak új kódot, ha az automatizált teszt nem sikerült. Ezzel elkerülhető a kód duplikálása. A TDD teljes formája tesztvezérelt fejlesztés.

A TDD egyszerű fogalma a sikertelen tesztek írása és kijavítása írás előtt új kód (fejlesztés előtt). Ez segít elkerülni a kód megismétlődését, mivel egyszerre kis mennyiségű kódot írunk a tesztek teljesítése érdekében. (A tesztek nem más, mint követelményfeltételek, amelyeket tesztelnünk kell a teljesítésük érdekében.)

A tesztvezérelt fejlesztés az automatizált fejlesztés és futtatás folyamata. teszt az alkalmazás tényleges fejlesztése előtt. Ezért a TDD néha Test First Development néven is hívta.

Ebben az oktatóanyagban többet megtudhat-

  • A TDD teszt végrehajtása
  • A TDD Vs. Hagyományos tesztelés
  • Mi az elfogadási TDD és a Fejlesztői TDD
  • A TDD méretezése agilis modellvezérelt fejlesztéssel (AMDD)
  • Test Driven Development (TDD) vs. Agilis modellalapú fejlesztés (AMDD)
  • Példa a TDD-re
  • A TDD előnyei

A TDD teszt végrehajtása

A következő lépések meghatározzák, hogyan kell elvégezni a TDD tesztet,

  1. adjon hozzá egy tesztet.
  2. Futtasson minden tesztet, és nézze meg, hogy nem sikerül-e új teszt.
  3. Írjon néhányat kód.
  4. Futtasson teszteket és Refactor kódot.
  5. Ismételje meg.

A TDD ciklus meghatározza

  1. Írjon tesztet
  2. Futtassa.
  3. Módosítsa a kódot hogy helyes legyen, azaz Refactor.
  4. Ismételje meg a folyamatot.

Néhány pontosítás a TDD-vel kapcsolatban:

  • A TDD sem a “tesztelésről” szól. sem a “Tervezésről”.
  • A TDD nem azt jelenti, hogy “írjon néhány tesztet, majd hozzon létre egy rendszert, amely megfelel a teszteknek.
  • A TDD nem azt jelenti, hogy” sok tesztet végezzen. “

TDD vs. hagyományos tesztelés

A TDD megközelítés elsősorban specifikációs technika. Biztosítja, hogy a forráskódot alaposan teszteljük a megerősítéskor szint.

  • A hagyományos teszteléssel a sikeres teszt egy vagy több hibát talál. Ez megegyezik a TDD-vel. Ha egy teszt kudarcot vall, előrehaladt, mert tudja, hogy meg kell oldania a problémát.
  • A TDD biztosítja, hogy rendszere valóban megfeleljen a rá meghatározott követelményeknek. Ez segít növelni a bizalmat a rendszer iránt.
  • A TDD-ben nagyobb hangsúlyt fektetnek a gyártási kódra, amely ellenőrzi, hogy a tesztelés megfelelően működik-e. A hagyományos tesztelés során nagyobb hangsúlyt fektetnek a tesztesetek tervezésére. A teszt megmutatja-e az alkalmazás megfelelő / nem megfelelő végrehajtását a követelmények teljesítése érdekében.
  • A TDD-ben 100% -os lefedettségi tesztet ér el. Minden egyes kódsort tesztelnek, ellentétben a hagyományos teszteléssel.
  • Mind a hagyományos tesztelés, mind a TDD kombinációja a rendszer tesztelésének fontosságához vezet, nem pedig a rendszer tökéletességéhez.
  • Agilis modellezés (AM), akkor “céllal kell tesztelnie”. Tudnia kell, miért tesztel valamit és milyen szinten kell tesztelni.

Mi az elfogadási TDD és a Fejlesztői TDD

A TDD két szintje van

  1. Elfogadási TDD (ATDD): Az ATDD segítségével egyetlen elfogadási tesztet írsz. Ez a teszt megfelel a specifikáció követelményeinek vagy kielégíti a rendszer viselkedését. Ezután írjon csak annyi gyártási / funkcionalitási kódot, hogy teljesítse az elfogadási tesztet. Az elfogadási teszt a rendszer általános viselkedésére összpontosít. Az ATDD-t Behavioral Driven Development (BDD) néven is ismerték.
  2. Fejlesztői TDD: A Fejlesztői TDD-vel egyetlen fejlesztői tesztet, azaz egység tesztet írsz, majd csak annyi gyártási kódot, hogy teljesítsd ezt a tesztet. Az egységteszt a rendszer minden apró funkciójára összpontosít. A fejlesztői TDD-t egyszerűen TDD-nek hívják.

    Az ATDD és a TDD fő célja a megoldás részletes, futtatható követelményeinek pontos meghatározása (JIT). A JIT azt jelenti, hogy csak azokat a követelményeket vesszük figyelembe, amelyekre a rendszerben szükség van. Tehát növelje a hatékonyságot.

A TDD méretezése agilis modellalapú fejlesztéssel (AMDD)

A TDD nagyon jó a részletes specifikációban és érvényesítésben. Nem sikerül átgondolni a nagyobb kérdéseket, mint például az általános tervezés, a rendszer használata vagy a felhasználói felület.Az AMDD az Agile skálázás problémáival foglalkozik, amelyeket a TDD nem.

Így az AMDD nagyobb problémákra használt.

Az AMDD életciklusa.

A modellvezérelt fejlesztésben (MDD) kiterjedt modelleket hoznak létre a a forráskód meg van írva. Melyek viszont agilis megközelítéssel rendelkeznek?

A fenti ábrán minden mező egy fejlesztési tevékenységet jelent.

Az elképzelés az egyik TDD-folyamat, amely előre jelzi / elképzeli a teszteket, amelyeket a projekt első hetében hajtanak végre. Az elképzelés fő célja a rendszer hatókörének és a rendszer architektúrájának azonosítása. A sikeres elképzelés érdekében magas szintű követelményeket és architektúra modellezést végeznek.

Ez az a folyamat, ahol nem a szoftver / rendszer részletes specifikációja történik, hanem a szoftver / rendszer követelményeinek feltárása határozza meg a projekt átfogó stratégiáját.

  1. 0-as iteráció: Képzelés

Két fő alaktiválás létezik.

  1. A kezdeti követelmények elképzelése.

    Több napba telhet a rendszer magas szintű követelményeinek és hatókörének meghatározása. A fő hangsúly a használati modell, a kezdeti tartományi modell és a felhasználói felület modelljének (UI) feltárása.

  2. Kezdeti építészeti elképzelés.

    A rendszer architektúrájának azonosítása is több napot vesz igénybe. Lehetővé teszi a projekt műszaki irányainak meghatározását. A fő hangsúly a technológiai diagramok, a felhasználói felület (UI), a tartományi modellek és a Változás esetek feltárása.

  1. Iterációs modellezés:

    Itt a csapatnak meg kell terveznie az egyes iterációknál elvégzendő munkát.

  • Az egyes iterációkhoz agilis folyamatot használnak, azaz minden iteráció során új munkaelem kerül hozzáadásra prioritással.
  • Első magasabb prioritású a munkát figyelembe veszik. A hozzáadott munkaelemeket bármikor újrarendezheti vagy eltávolíthatja az elemekből.
  • A csapat megbeszéli, hogyan fogják végrehajtani az egyes követelményeket. A modellezést erre a célra használják.
  • Modellezés elemzés és tervezés történik minden követelménynél, amelyet az adott iteráció során megvalósítani kívánnak.
  1. Modell vihar:

    Ezt más néven a Just in time modellezésnek is nevezik.

  • Itt a modellezés 2/3 tagú csapatot foglal magában, akik papíron vagy táblán vitatják meg a kérdéseket.
  • Az egyik csapattag megkérdezi a másikat velük modellezni. Ez a modellezés körülbelül 5-10 percet vesz igénybe. Ahol a csapattagok összegyűlnek, hogy megosszák a táblát / papírt.
  • Addig vizsgálják a kérdéseket, amíg nem találják meg a probléma fő okát. Épp időben, ha az egyik csapattag azonosítja a kívánt problémát hogy megoldja, akkor gyors segítséget fog igénybe venni a csapat többi tagjával.
  • A többi csoporttag ezt követően feltárja a kérdést, majd mindenki folytatja a korábbi munkát. Felhívják stand-up modellezésnek vagy ügyfél QA munkamenetnek is. .
  1. Test Driven Development (TDD).
  • Elősegíti az alkalmazáskód és a részletes specifikáció megerősítő tesztelését.
  • Mind az elfogadási teszt (részletes követelmények), mind a fejlesztői tesztek (egység teszt) a TDD bemenetei.
  • A TDD egyszerűbbé és világosabbá teszi a kódot. Ez lehetővé teszi a fejlesztő számára, hogy kevesebb dokumentációt tartson fenn.
  1. Vélemények.
  • Ez nem kötelező. Kódellenőrzéseket és modellellenőrzéseket tartalmaz.
  • Ez lehet minden iterációhoz vagy az egész projekthez.
  • Ez jó lehetőség a projekt visszajelzésére.

Test Driven Development (TDD) Vs. Agilis modellalapú fejlesztés (AMDD)

Példa a TDD-re

Ebben a példában itt definiálunk egy osztályjelszót. Ehhez az osztályhoz megpróbáljuk kielégíteni a következő feltételeket.

A jelszó elfogadásának feltétele:

  • A jelszónak 5-10 karakter között kell lennie.

Először megírjuk a kódot amely megfelel a fenti követelményeknek.

1. forgatókönyv: A teszt futtatásához létrehozzuk a PasswordValidator () osztályt;

A TestPassword () osztály felett fogunk futni;

A kimenet átmegy az alábbiak szerint;

Kimenet:

2. forgatókönyv: Itt megtehetjük lásd a TestPasswordLength () metódusban, nincs szükség a PasswordValidator osztály példányának létrehozására. A példány egy osztály objektum létrehozását jelenti az osztály tagjainak (változók / módszerek) hivatkozására.

Eltávolítjuk a PasswordValidator pv = new PasswordValidator () osztályt a kódból. Az isValid () metódust közvetlenül a PasswordValidator segítségével hívhatjuk meg. IsValid (“Abc123”).(Lásd az alábbi képet.)

3. szcenárió: A kimenet újraszerkesztése után a hibás állapot látható (lásd az alábbi képet), mert eltávolítottuk a példányt. Tehát nincs hivatkozás a nem statikus módszerre isValid ().

Szóval meg kell változtatnunk ezt a módszert úgy, hogy a “statikus” szót hozzáadjuk a Boolean elé, mivel a nyilvános statikus logikai isValid (karakterlánc jelszó). A Class PasswordValidator () átalakítása a fenti hiba eltávolításához a teszt sikeres teljesítéséhez.

Kimenet:

Miután módosította a PassValidator osztályt () ha lefuttatjuk a tesztet, akkor a kimenet PASSED lesz, az alábbiak szerint.

A TDD előnyei

  • Korai hiba értesítés.

    A fejlesztők tesztelik a kódjukat, de az adatbázis-világban ez gyakran manuális tesztekből vagy egyszeri szkriptekből áll. A TDD használatával idővel felépít egy automatizált tesztcsomagot, amelyet Ön és bármely más fejlesztő tetszés szerint újra futtathat.

  • Jobban megtervezett, tisztább és bővíthetőbb kód.
    • Segít megérteni a kód használatát és a többi modullal való interakcióját.
    • Jobb tervezési döntést és karbantarthatóbb kódot eredményez.
    • TDD lehetővé teszi kisebb kódok írását egyetlen felelősséggel, nem pedig monolit eljárásokat, több felelősséggel. Ez megkönnyíti a kód megértését.
    • A TDD arra is kényszerít, hogy csak a gyártói kódot írja a tesztek átadásához a felhasználói igények alapján.
  • Bizalom a refaktorhoz
    • Ha refrakter kódot ad meg, akkor a kód megszakadásának lehetősége lehet. Tehát egy sor automatizált teszt segítségével kijavíthatja ezeket a töréseket a kiadás előtt. Megfelelő figyelmeztetést kapunk, ha az automatizált tesztek során szüneteket találunk.
    • A TDD használatával gyorsabb, bővíthetőbb kódot kell eredményeznie, kevesebb hibával, és minimális kockázattal frissíthetőek.
  • Jó a csapatmunkához

    Csapattag hiányában a csapat többi tagja könnyedén felveheti és kidolgozhatja a kódot. Támogatja a tudásmegosztást is, ezáltal hatékonyabbá téve a csapatot.

  • Jó a fejlesztők számára

    Bár a fejlesztőknek több időt kell eltölteniük a TDD tesztesetek megírásával, sokkal kevesebb időbe telik a hibakeresés és az új funkciók fejlesztése. Tisztább, kevésbé bonyolult kódot fog írni.

Összefoglaló:

  • A TDD a tesztvezérelt fejlesztést jelenti. Ez a kód módosítási folyamata egy korábban tervezett teszt sikeres átadása érdekében.
  • Ez nagyobb hangsúlyt fektet a gyártási kódra, mint a teszteset tervezésére.
  • A tesztvezérelt fejlesztés egy folyamat a kód módosítása a korábban tervezett teszt sikeres átadása érdekében.
  • A szoftvertervezésben néha “Test First Development” néven is ismert.
  • A TDD magában foglalja a kód visszafejlesztését, azaz bizonyos mennyiségű kód megváltoztatását / hozzáadását a meglévő kódhoz anélkül, hogy befolyásolná a kód viselkedését.
  • A TDD használatakor a kód világosabbá és egyszerűbbé válik megérteni.

A cikket Kanchan Kulkarni

készítette

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük