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,
- adjon hozzá egy tesztet.
- Futtasson minden tesztet, és nézze meg, hogy nem sikerül-e új teszt.
- Írjon néhányat kód.
- Futtasson teszteket és Refactor kódot.
- Ismételje meg.
A TDD ciklus meghatározza
- Írjon tesztet
- Futtassa.
- Módosítsa a kódot hogy helyes legyen, azaz Refactor.
- 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
- 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.
- 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.
- 0-as iteráció: Képzelés
Két fő alaktiválás létezik.
- 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.
- 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.
- 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.
- 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. .
- 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.
- 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