{"id":3306,"date":"2023-01-19T13:19:29","date_gmt":"2023-01-19T13:19:29","guid":{"rendered":"https:\/\/bulutistan.com\/blog\/?p=3306"},"modified":"2024-01-20T10:56:16","modified_gmt":"2024-01-20T10:56:16","slug":"behavior-driven-development-bdd","status":"publish","type":"post","link":"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/","title":{"rendered":"Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar"},"content":{"rendered":"<p><b>Davran\u0131\u015f odakl\u0131 geli\u015ftirme<\/b> yani <b>behavior driven development (BDD)<\/b>, bir sistemin davran\u0131\u015f\u0131n\u0131, bireysel bile\u015fenlerinin davran\u0131\u015flar\u0131 a\u00e7\u0131s\u0131ndan tan\u0131mlamaya odaklanan bir yaz\u0131l\u0131m geli\u015ftirme yakla\u015f\u0131m\u0131d\u0131r. Test Driven Development&#8217;\u0131n (TDD) bir uzant\u0131s\u0131d\u0131r ve teknik olmayan payda\u015flar\u0131n anlamas\u0131 i\u00e7in testlerin daha kolay olan do\u011fal bir dil bi\u00e7iminde yaz\u0131lmas\u0131n\u0131 i\u00e7erir.<\/p>\n<p>BDD&#8217;nin amac\u0131, sistemin istenen davran\u0131\u015f\u0131n\u0131 anlamak ve a\u00e7\u0131klamak i\u00e7in herkesin kullanabilece\u011fi ortak bir dil ve bir dizi uygulama sa\u011flayarak geli\u015ftiriciler, kalite kontrol personeli ve i\u015f payda\u015flar\u0131 aras\u0131ndaki ileti\u015fimi ve i\u015fbirli\u011fini geli\u015ftirmektir.<\/p>\n<p>BDD temel olarak a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li>Uygulanmas\u0131 gereken davran\u0131\u015f\u0131 tan\u0131mlay\u0131n.<\/li>\n<li>\u0130stenen davran\u0131\u015f\u0131 do\u011fal bir dil bi\u00e7iminde tan\u0131mlayan bir test yaz\u0131n.<\/li>\n<li>Testi \u00e7al\u0131\u015ft\u0131r\u0131n ve ba\u015far\u0131s\u0131z oldu\u011fundan emin olun.<\/li>\n<li>\u0130stenen davran\u0131\u015f\u0131 uygulamak i\u00e7in kod yaz\u0131n.<\/li>\n<li>Emin olmak i\u00e7in testi tekrar \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li>Bak\u0131m\u0131 ve okunabilirli\u011fi iyile\u015ftirmek i\u00e7in kodu gerekti\u011fi gibi yeniden d\u00fczenleyin.<\/li>\n<li>BDD, \u00e7evik geli\u015ftirme metodolojileri ile birlikte kullan\u0131labilir ve genellikle test s\u00fcrecini otomatikle\u015ftirmek i\u00e7in Cucumber veya SpecFlow gibi ara\u00e7larla birlikte kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Bulutistan hizmetlerinin detaylar\u0131na ula\u015fmak i\u00e7in<\/span><a href=\"https:\/\/bulutistan.com\/cloud\/\"> <span style=\"font-weight: 400;\">t\u0131klay\u0131n\u0131z<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2 id=\"behavior-driven-development-secimi\">Behavior Driven Development Se\u00e7imi<\/h2>\n<p>Bir yaz\u0131l\u0131m geli\u015ftirme projesinde BDD&#8217;nin (Davran\u0131\u015f Odakl\u0131 Geli\u015ftirme) kullan\u0131l\u0131p kullan\u0131lmayaca\u011f\u0131na karar verirken dikkate al\u0131nmas\u0131 gereken birka\u00e7 fakt\u00f6r vard\u0131r:<\/p>\n<h3 id=\"1-ekip-ihtiyaclari\">1. Ekip ihtiya\u00e7lar\u0131<\/h3>\n<p>BDD, geli\u015ftiriciler, test m\u00fchendisleri ve teknik olmayan payda\u015flar aras\u0131ndaki i\u015fbirli\u011fini geli\u015ftirmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Ekibinizde \u00e7ok \u00e7e\u015fitli teknik ge\u00e7mi\u015fe sahip ki\u015filer varsa veya ekip \u00fcyeleri aras\u0131nda daha iyi ileti\u015fim ve anlay\u0131\u015fa ihtiya\u00e7 varsa, BDD sizin i\u00e7in uygun olabilir.<\/p>\n<h3 id=\"2-proje-karmasikligi\">2. Proje karma\u015f\u0131kl\u0131\u011f\u0131<\/h3>\n<p>BDD, \u00f6zellikle karma\u015f\u0131k gereksinimleri veya \u00e7ok say\u0131da payda\u015f\u0131 olan projelere yard\u0131mc\u0131 olabilir. Sistemin istenen davran\u0131\u015f\u0131n\u0131 somut ve test edilebilir bir \u015fekilde a\u00e7\u0131klamak i\u00e7in senaryolar kullanarak ekiplerin projenin gerekliliklerini daha iyi anlamalar\u0131na ve bunlar \u00fczerinde anla\u015fmaya varmalar\u0131na yard\u0131mc\u0131 olabilir.<\/p>\n<h3 id=\"3-once-test-yaklasimi\">3. \u00d6nce test yakla\u015f\u0131m\u0131<\/h3>\n<p>BDD, bir \u00f6zelli\u011fin kodunu uygulamadan \u00f6nce testler (senaryolar) yazmay\u0131 i\u00e7erir. Ekibiniz geli\u015ftirme i\u00e7in \u00f6nce test yakla\u015f\u0131m\u0131 konusunda rahatsa, BDD sizin i\u00e7in uygun olabilir.<\/p>\n<h3 id=\"4-otomatik-test\">4. Otomatik test<\/h3>\n<p>BDD, sistemin beklendi\u011fi gibi davrand\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in otomatik testler yazmay\u0131 i\u00e7erir. Ekibiniz zaten otomatik testlere a\u015finaysa veya bu yakla\u015f\u0131m\u0131 benimsemekle ilgileniyorsa, BDD iyi bir se\u00e7im olabilir.<\/p>\n<p>Sonu\u00e7 olarak, BDD kullanma karar\u0131, projenizin ve ekibinizin \u00f6zel ihtiya\u00e7lar\u0131na ve hedeflerine ba\u011fl\u0131 olacakt\u0131r. Bu fakt\u00f6rleri g\u00f6z \u00f6n\u00fcnde bulundurmak ve BDD&#8217;nin projeniz i\u00e7in uygun olup olmad\u0131\u011f\u0131n\u0131 belirlemek faydal\u0131 olabilir.<\/p>\n<h2 id=\"behavior-driven-development-cercevesi\">Behavior Driven Development \u00c7er\u00e7evesi<\/h2>\n<p>BDD s\u00fcrecini desteklemek i\u00e7in kullan\u0131labilecek birka\u00e7 BDD \u00e7er\u00e7evesi vard\u0131r. Pop\u00fcler BDD \u00e7er\u00e7evelerinden biri Cucumber\u2019d\u0131r.<\/p>\n<p>Cucumber, Gherkin adl\u0131 do\u011fal bir dilde senaryo yazmak i\u00e7in bir s\u00f6zdizimi sa\u011flayarak BDD&#8217;yi destekleyen bir ara\u00e7t\u0131r. Gherkin senaryolar\u0131, teknik olmayan payda\u015flar\u0131n kolayca anlayabilece\u011fi \u015fekilde yaz\u0131l\u0131r ve sistemin davran\u0131\u015f\u0131n\u0131 kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan tan\u0131mlar.<\/p>\n<p>Cucumber&#8217;\u0131 kullanmak i\u00e7in ekipler senaryolar\u0131n\u0131 Gherkin s\u00f6zdiziminde yazarlar ve &#8220;.feature&#8221; uzant\u0131l\u0131 bir dosyaya kaydederler. Ard\u0131ndan, sistemin senaryolarda a\u00e7\u0131kland\u0131\u011f\u0131 gibi davranmas\u0131na neden olacak kodu uygularlar.<\/p>\n<p>Ekipler, senaryolar\u0131 y\u00fcr\u00fctmek ve sistemin beklendi\u011fi gibi davrand\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in &#8220;.feature&#8221; dosyalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak \u00fczere Cucumber&#8217;\u0131 kullan\u0131r. Cucumber senaryolar\u0131 y\u00fcr\u00fct\u00fcr ve sistemin beklenen \u00e7\u0131kt\u0131y\u0131 \u00fcretip \u00fcretmedi\u011fini kontrol eder. Senaryolardan herhangi biri ba\u015far\u0131s\u0131z olursa, Cucumber ba\u015far\u0131s\u0131zl\u0131\u011f\u0131 rapor eder ve neyin yanl\u0131\u015f gitti\u011fine dair ayr\u0131nt\u0131lar sa\u011flar.<\/p>\n<p>Genel olarak Cucumber, bir sistemin istenen davran\u0131\u015f\u0131n\u0131 tan\u0131mlayan senaryolar yazmak ve y\u00fcr\u00fctmek i\u00e7in bir yol sa\u011flayarak BDD s\u00fcrecini desteklemek i\u00e7in yararl\u0131 bir ara\u00e7t\u0131r.<\/p>\n<h2 id=\"bddnin-ozellikleri\">BDD&#8217;nin \u00d6zellikleri<\/h2>\n<p>BDD&#8217;yi (Davran\u0131\u015f Odakl\u0131 Geli\u015ftirme) di\u011fer yaz\u0131l\u0131m geli\u015ftirme yakla\u015f\u0131mlar\u0131ndan ay\u0131ran \u00e7e\u015fitli \u00f6zelliklere sahiptir. Bu \u00f6zellikler a\u015fa\u011f\u0131daki gibidir:<\/p>\n<h3 id=\"1-isbirligi\">1. \u0130\u015fbirli\u011fi<\/h3>\n<p>BDD, geli\u015ftiriciler, test m\u00fchendisleri ve teknik olmayan payda\u015flar aras\u0131ndaki i\u015fbirli\u011fine odaklan\u0131r. Ekipleri, bir sistemin istenen davran\u0131\u015f\u0131 olu\u015fturmas\u0131 i\u00e7in konu\u015fma ve somut \u00f6rnekler kullanmaya te\u015fvik eder.<\/p>\n<h3 id=\"2-davranisa-odaklanma\">2. Davran\u0131\u015fa odaklanma<\/h3>\n<p>BDD, kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan sistemin davran\u0131\u015f\u0131na odaklan\u0131r. Ama\u00e7, i\u015fletmenin ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131layan ve kullan\u0131c\u0131lara de\u011fer sunan yaz\u0131l\u0131mlar olu\u015fturmakt\u0131r.<\/p>\n<h3 id=\"3-dogal-dil-sozdizimi\">3. Do\u011fal dil s\u00f6zdizimi<\/h3>\n<p>BDD senaryolar\u0131, teknik olmayan payda\u015flar\u0131n anlamas\u0131 i\u00e7in Gherkin adl\u0131 bir do\u011fal dil s\u00f6zdiziminde yaz\u0131l\u0131r.<\/p>\n<h3 id=\"4-otomatik-testler\">4. Otomatik testler<\/h3>\n<p>BDD, sistemin beklendi\u011fi gibi davrand\u0131\u011f\u0131n\u0131 do\u011frulayan otomatik testler (senaryolar) yazmay\u0131 i\u00e7erir. Bu testler Gherkin s\u00f6zdiziminde yaz\u0131l\u0131r ve sistemin beklenen \u00e7\u0131kt\u0131y\u0131 \u00fcretip \u00fcretmedi\u011fini kontrol etmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3 id=\"5-surekli-entegrasyon\">5. S\u00fcrekli entegrasyon<\/h3>\n<p>BDD temel olarak, test ger\u00e7ekle\u015ftirmek i\u00e7in geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn sonuna kadar beklemek yerine kod de\u011fi\u015fikliklerinin s\u00fcrekli olarak entegre edilmesini ve test edilmesini i\u00e7erir. Bu, sorunlar\u0131 geli\u015ftirme s\u00fcrecinin erken a\u015famalar\u0131nda yakalamaya ve yaz\u0131l\u0131m\u0131n kalitesini art\u0131rmaya yard\u0131mc\u0131 olur.<\/p>\n<h2 id=\"bdd-nasil-uygulanir\">BDD Nas\u0131l Uygulan\u0131r?<\/h2>\n<p>BDD&#8217;nin uygulanmas\u0131nda yer alan genel ad\u0131mlar a\u015fa\u011f\u0131dakileri i\u00e7erir:<\/p>\n<h3 id=\"1-cevik-bir-gelistirme-metodolojisi-benimseyin\">1. \u00c7evik bir geli\u015ftirme metodolojisi benimseyin<\/h3>\n<p>BDD temel olarak Scrum veya Kanban gibi \u00e7evik geli\u015ftirme metodolojileri ile birlikte kullan\u0131l\u0131r. \u00c7evik bir yakla\u015f\u0131m\u0131n benimsenmesi, geli\u015ftirme s\u00fcrecinizin yinelemeli, i\u015fbirli\u011fine dayal\u0131 ve m\u00fc\u015fteriye de\u011fer sa\u011flamaya odakl\u0131 olmas\u0131n\u0131 sa\u011flamaya yard\u0131mc\u0131 olur.<\/p>\n<h3 id=\"2-sistemin-davranisini-tanimlayin\">2. Sistemin davran\u0131\u015f\u0131n\u0131 tan\u0131mlay\u0131n<\/h3>\n<p>BDD&#8217;yi uygulaman\u0131n ilk ad\u0131m\u0131, olu\u015fturdu\u011funuz sistemin davran\u0131\u015f\u0131n\u0131 tan\u0131mlamakt\u0131r. Bu, uygulanmas\u0131 gereken temel davran\u0131\u015flar\u0131 belirlemeyi ve bunlar\u0131 herkesin anlayabilece\u011fi \u015fekilde tan\u0131mlamay\u0131 i\u00e7erir.<\/p>\n<h3 id=\"3-istenen-davranisi-tanimlayan-testler-yazin\">3. \u0130stenen davran\u0131\u015f\u0131 tan\u0131mlayan testler yaz\u0131n<\/h3>\n<p>Sistemin davran\u0131\u015flar\u0131 tan\u0131mland\u0131ktan sonraki ad\u0131m, istenen davran\u0131\u015f\u0131 tan\u0131mlayan testleri do\u011fal dil format\u0131nda yazmakt\u0131r. Bu testler, teknik olmayan payda\u015flar\u0131n kolayca anlayabilece\u011fi bir \u015fekilde yaz\u0131lmal\u0131 ve teknik uygulama ayr\u0131nt\u0131lar\u0131ndan \u00e7ok davran\u0131\u015f\u0131n i\u015f de\u011ferine odaklanmal\u0131d\u0131r.<\/p>\n<h3 id=\"4-testleri-calistirin-ve-basarisiz-olduklarindan-emin-olun\">4. Testleri \u00e7al\u0131\u015ft\u0131r\u0131n ve ba\u015far\u0131s\u0131z olduklar\u0131ndan emin olun<\/h3>\n<p>Testler yaz\u0131ld\u0131ktan sonra ba\u015far\u0131s\u0131z olduklar\u0131ndan emin olmak i\u00e7in \u00e7al\u0131\u015ft\u0131r\u0131lmal\u0131d\u0131r. Bu, testlerin ge\u00e7erlili\u011fini ve istenen davran\u0131\u015f\u0131n hen\u00fcz ger\u00e7ekle\u015fmemi\u015f olmas\u0131n\u0131 sa\u011flad\u0131\u011f\u0131 i\u00e7in \u00f6nemli bir ad\u0131md\u0131r.<\/p>\n<h3 id=\"5-istenen-davranisi-uygulamak-icin-kod-yazin\">5. \u0130stenen davran\u0131\u015f\u0131 uygulamak i\u00e7in kod yaz\u0131n<\/h3>\n<p>Testler yap\u0131ld\u0131ktan sonraki ad\u0131m, istenen davran\u0131\u015f\u0131 uygulamak i\u00e7in kod yazmakt\u0131r. Bu, \u00fcretim kodunun veya test kodunun yaz\u0131lmas\u0131n\u0131 i\u00e7erebilir.<\/p>\n<h2 id=\"davranis-odakli-gelistirme-neden-bu-kadar-avantajlidir\">Davran\u0131\u015f Odakl\u0131 Geli\u015ftirme Neden Bu Kadar Avantajl\u0131d\u0131r?<\/h2>\n<p>Davran\u0131\u015f odakl\u0131 geli\u015ftirme (BDD), son kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan yaz\u0131l\u0131m\u0131n davran\u0131\u015f\u0131na odaklanan bir yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecidir. Geli\u015ftiricilerin yaz\u0131l\u0131m\u0131n istenen davran\u0131\u015f\u0131n\u0131 kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan anlamas\u0131na ve yaz\u0131l\u0131m\u0131n bu beklentileri kar\u015f\u0131layacak \u015fekilde geli\u015ftirilmesini sa\u011flamas\u0131na yard\u0131mc\u0131 oldu\u011fu i\u00e7in faydal\u0131d\u0131r.<\/p>\n<p>BDD kullanman\u0131n \u00e7e\u015fitli faydalar\u0131 vard\u0131r. Bunlar a\u015fa\u011f\u0131dakileri i\u00e7erir:<\/p>\n<ul>\n<li>BDD, geli\u015ftirmeyi i\u015f hedefleriyle uyumlu hale getirmeye yard\u0131mc\u0131 olur. BDD, son kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan yaz\u0131l\u0131m\u0131n davran\u0131\u015f\u0131na odaklanarak geli\u015ftirilmekte olan yaz\u0131l\u0131m\u0131n i\u015fletmenin ve m\u00fc\u015fterilerinin ihtiya\u00e7 ve beklentilerini kar\u015f\u0131lamas\u0131n\u0131 sa\u011flamaya yard\u0131mc\u0131 olur.<\/li>\n<li>BDD, geli\u015ftiriciler ve payda\u015flar aras\u0131nda i\u015fbirli\u011fini te\u015fvik eder. BDD, geli\u015ftirilmekte olan yaz\u0131l\u0131m\u0131n ilgili t\u00fcm taraflar\u0131n ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamas\u0131n\u0131 sa\u011flamaya yard\u0131mc\u0131 olan geli\u015ftiriciler, test m\u00fchendisleri ve di\u011fer payda\u015flar aras\u0131ndaki ileti\u015fimi ve i\u015fbirli\u011fini te\u015fvik eder.<\/li>\n<li>BDD, yaz\u0131l\u0131m\u0131n test edilebilir olmas\u0131n\u0131 sa\u011flamaya yard\u0131mc\u0131 olur. BDD, yaz\u0131l\u0131m\u0131n davran\u0131\u015f\u0131n\u0131 test etmesi kolay bir \u015fekilde tan\u0131mlamaya odaklan\u0131r, bu da yaz\u0131l\u0131m\u0131n y\u00fcksek kalitede olmas\u0131n\u0131 ve zaman i\u00e7inde bak\u0131m\u0131n\u0131n kolayca yap\u0131lmas\u0131n\u0131 sa\u011flamaya yard\u0131mc\u0131 olur.<\/li>\n<li>BDD, yaz\u0131l\u0131m\u0131n davran\u0131\u015f\u0131na odaklanarak, geli\u015ftirme s\u00fcrecinin ba\u015flar\u0131nda kusurlar\u0131n yakalanmas\u0131na yard\u0131mc\u0131 olur, bu da daha sonra hata ay\u0131klama ve yeniden \u00e7al\u0131\u015fma ihtiyac\u0131n\u0131 azaltarak zamandan ve maliyetten tasarruf sa\u011flayabilir.<\/li>\n<\/ul>\n<h2 id=\"bdd-test-kullanicilarini-nasil-etkiler\">BDD Test Kullan\u0131c\u0131lar\u0131n\u0131 Nas\u0131l Etkiler?<\/h2>\n<p>BDD, bir yaz\u0131l\u0131m geli\u015ftirme ekibindeki test uzmanlar\u0131n\u0131n rol\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde etkileme potansiyeline sahiptir. BDD&#8217;nin ana hedeflerinden biri, geli\u015ftiriciler ve test m\u00fchendisleri aras\u0131ndaki i\u015fbirli\u011fini geli\u015ftirmektir.<\/p>\n<p>Bir BDD s\u00fcrecinde test uzmanlar\u0131, sistemin istenen davran\u0131\u015f\u0131n\u0131 tan\u0131mlamas\u0131 i\u00e7in geli\u015ftiriciler ve di\u011fer payda\u015flarla i\u015fbirli\u011fi yaparak, projenin ba\u015f\u0131ndan itibaren yer al\u0131r. Test uzmanlar\u0131 ayr\u0131ca bu davran\u0131\u015f\u0131 somut ve test edilebilir bir \u015fekilde tan\u0131mlayan senaryolar\u0131n yaz\u0131lmas\u0131nda da \u00f6nemli bir rol oynar.<\/p>\n<p>Geli\u015ftirme s\u0131ras\u0131nda test uzmanlar\u0131, sistemin beklendi\u011fi gibi davrand\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in bu senaryolar\u0131 kullan\u0131r. Senaryolar\u0131 y\u00fcr\u00fctmek ve sistemin beklenen \u00e7\u0131kt\u0131y\u0131 \u00fcretip \u00fcretmedi\u011fini kontrol etmek i\u00e7in Cucumber gibi bir ara\u00e7 kullanabilirler.<\/p>\n<p>Genel olarak BDD&#8217;nin amac\u0131, test uzmanlar\u0131n\u0131n ve geli\u015ftiricilerin i\u015fin ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131layan ve kullan\u0131c\u0131lara de\u011fer sunan yaz\u0131l\u0131mlar olu\u015fturmak i\u00e7in birlikte \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olmakt\u0131r. BDD, sadece kusurlar\u0131 bulmak yerine sistemin istenen davran\u0131\u015f\u0131na odaklanarak, test uzmanlar\u0131n\u0131n geli\u015ftirme s\u00fcrecinde daha proaktif ve de\u011ferli bir rol oynamas\u0131na yard\u0131mc\u0131 olabilir.<\/p>\n<p><span style=\"font-weight: 400;\">Bulutistan hizmetlerinin detaylar\u0131na ula\u015fmak i\u00e7in<\/span><a href=\"https:\/\/bulutistan.com\/cloud\/\"> <span style=\"font-weight: 400;\">t\u0131klay\u0131n\u0131z<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2 id=\"bdd-ve-tdd-arasindaki-farklar\">BDD ve TDD Aras\u0131ndaki Farklar<\/h2>\n<p><b>BDD (Behavior-Driven Development &#8211; Davran\u0131\u015f Odakl\u0131 Geli\u015ftirme) <\/b>ve <b>TDD (Test-Driven Development &#8211; Test Odakl\u0131 Geli\u015ftirme)<\/b>, geli\u015ftirme s\u00fcrecinin bir par\u00e7as\u0131 olarak otomatik testler yazmay\u0131 i\u00e7eren yaz\u0131l\u0131m geli\u015ftirme yakla\u015f\u0131mlar\u0131d\u0131r. Bununla birlikte, iki yakla\u015f\u0131m aras\u0131nda baz\u0131 temel farkl\u0131l\u0131klar vard\u0131r:<\/p>\n<h3 id=\"1-odak\">1. Odak<\/h3>\n<p>BDD ve TDD aras\u0131ndaki temel fark, testlerin odak noktas\u0131d\u0131r. TDD&#8217;de bir \u00f6zelli\u011fin uygulanmas\u0131n\u0131 test etmeye odaklan\u0131rken, BDD, sistemin davran\u0131\u015f\u0131n\u0131 kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan test etmeye odaklan\u0131r. BDD senaryolar\u0131, do\u011fal bir dil s\u00f6zdiziminde yaz\u0131l\u0131r ve sistemin davran\u0131\u015f\u0131n\u0131, kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan nas\u0131l davranmas\u0131 gerekti\u011fine g\u00f6re tan\u0131mlar.<\/p>\n<h3 id=\"2-isbirligi\">2. \u0130\u015fbirli\u011fi<\/h3>\n<p>BDD, geli\u015ftiriciler, test m\u00fchendisleri ve teknik olmayan payda\u015flar aras\u0131ndaki i\u015fbirli\u011fini geli\u015ftirmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. BDD senaryolar\u0131, t\u00fcm ekip \u00fcyelerinin anlayabilece\u011fi \u015fekilde yaz\u0131l\u0131r ve sistemin istenen davran\u0131\u015f\u0131 \u00fczerinde herkesin hemfikir olmas\u0131na yard\u0131mc\u0131 olmak i\u00e7in kullan\u0131l\u0131r. Buna kar\u015f\u0131l\u0131k, TDD daha \u00e7ok geli\u015ftiricinin bak\u0131\u015f a\u00e7\u0131s\u0131na odaklan\u0131r, testler genellikle kodla yaz\u0131l\u0131r ve teknik olmayan payda\u015flar i\u00e7in daha az eri\u015filebilir olur.<\/p>\n<h3 id=\"3-test-yazma\">3. Test yazma<\/h3>\n<p>TDD&#8217;de, testler uygulama kodundan \u00f6nce yaz\u0131l\u0131r ve ama\u00e7, testleri ge\u00e7mek i\u00e7in gereken minimum kod miktar\u0131n\u0131 yazmakt\u0131r. BDD&#8217;de testler (senaryolar), istenen davran\u0131\u015f ekip taraf\u0131ndan tart\u0131\u015f\u0131l\u0131p \u00fczerinde anla\u015fmaya var\u0131ld\u0131ktan sonra yaz\u0131l\u0131r.<\/p>\n<p>Genel olarak, BDD ve TDD, otomatikle\u015ftirilmi\u015f test i\u00e7in yararl\u0131 yakla\u015f\u0131mlard\u0131r ve daha geni\u015f bir test stratejisinin par\u00e7as\u0131 olarak birlikte kullan\u0131labilir. Hangi yakla\u015f\u0131m\u0131n en uygun oldu\u011fu, projenin ve ekibin \u00f6zel ihtiya\u00e7lar\u0131na ba\u011fl\u0131 olacakt\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"Davran\u0131\u015f odakl\u0131 geli\u015ftirme yani behavior driven development (BDD), bir sistemin davran\u0131\u015f\u0131n\u0131, bireysel bile\u015fenlerinin davran\u0131\u015flar\u0131 a\u00e7\u0131s\u0131ndan tan\u0131mlamaya odaklanan bir&hellip;\n","protected":false},"author":1,"featured_media":3860,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_singular_sidebar":"","csco_page_header_type":"","csco_appearance_grid":"","csco_page_load_nextpost":"","csco_post_video_location":[],"csco_post_video_location_hash":"","csco_post_video_url":"","csco_post_video_bg_start_time":0,"csco_post_video_bg_end_time":0},"categories":[10,17],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar - Bulutistan Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar - Bulutistan Blog\" \/>\n<meta property=\"og:description\" content=\"Davran\u0131\u015f odakl\u0131 geli\u015ftirme yani behavior driven development (BDD), bir sistemin davran\u0131\u015f\u0131n\u0131, bireysel bile\u015fenlerinin davran\u0131\u015flar\u0131 a\u00e7\u0131s\u0131ndan tan\u0131mlamaya odaklanan bir&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/\" \/>\n<meta property=\"og:site_name\" content=\"Bulutistan Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-19T13:19:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-20T10:56:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bulutistan.com\/blog\/wp-content\/uploads\/2023\/01\/Depositphotos_652839744_S.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Bulutistan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bulutistan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/\",\"url\":\"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/\",\"name\":\"Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar - Bulutistan Blog\",\"isPartOf\":{\"@id\":\"https:\/\/bulutistan.com\/blog\/#website\"},\"datePublished\":\"2023-01-19T13:19:29+00:00\",\"dateModified\":\"2024-01-20T10:56:16+00:00\",\"author\":{\"@id\":\"https:\/\/bulutistan.com\/blog\/#\/schema\/person\/06a4312aff9f5a9fc23e25fe7a27076e\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bulutistan.com\/blog\/#website\",\"url\":\"https:\/\/bulutistan.com\/blog\/\",\"name\":\"Bulutistan Blog\",\"description\":\"Teknolojide Yol Arkada\u015f\u0131n\u0131z\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bulutistan.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/bulutistan.com\/blog\/#\/schema\/person\/06a4312aff9f5a9fc23e25fe7a27076e\",\"name\":\"Bulutistan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/bulutistan.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b09f693645c754f52af6ce46e1749e1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b09f693645c754f52af6ce46e1749e1?s=96&d=mm&r=g\",\"caption\":\"Bulutistan\"},\"sameAs\":[\"https:\/\/bulutistan.com\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar - Bulutistan Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/","og_locale":"tr_TR","og_type":"article","og_title":"Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar - Bulutistan Blog","og_description":"Davran\u0131\u015f odakl\u0131 geli\u015ftirme yani behavior driven development (BDD), bir sistemin davran\u0131\u015f\u0131n\u0131, bireysel bile\u015fenlerinin davran\u0131\u015flar\u0131 a\u00e7\u0131s\u0131ndan tan\u0131mlamaya odaklanan bir&hellip;","og_url":"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/","og_site_name":"Bulutistan Blog","article_published_time":"2023-01-19T13:19:29+00:00","article_modified_time":"2024-01-20T10:56:16+00:00","og_image":[{"width":1000,"height":750,"url":"https:\/\/bulutistan.com\/blog\/wp-content\/uploads\/2023\/01\/Depositphotos_652839744_S.jpg","type":"image\/jpeg"}],"author":"Bulutistan","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Bulutistan","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/","url":"https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/","name":"Behavior Driven Development (BDD) Nedir? BDD Yakla\u015f\u0131m\u0131, TDD ile Aralar\u0131ndaki Farklar - Bulutistan Blog","isPartOf":{"@id":"https:\/\/bulutistan.com\/blog\/#website"},"datePublished":"2023-01-19T13:19:29+00:00","dateModified":"2024-01-20T10:56:16+00:00","author":{"@id":"https:\/\/bulutistan.com\/blog\/#\/schema\/person\/06a4312aff9f5a9fc23e25fe7a27076e"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bulutistan.com\/blog\/behavior-driven-development-bdd\/"]}]},{"@type":"WebSite","@id":"https:\/\/bulutistan.com\/blog\/#website","url":"https:\/\/bulutistan.com\/blog\/","name":"Bulutistan Blog","description":"Teknolojide Yol Arkada\u015f\u0131n\u0131z","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bulutistan.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":"Person","@id":"https:\/\/bulutistan.com\/blog\/#\/schema\/person\/06a4312aff9f5a9fc23e25fe7a27076e","name":"Bulutistan","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/bulutistan.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b09f693645c754f52af6ce46e1749e1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b09f693645c754f52af6ce46e1749e1?s=96&d=mm&r=g","caption":"Bulutistan"},"sameAs":["https:\/\/bulutistan.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/posts\/3306"}],"collection":[{"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/comments?post=3306"}],"version-history":[{"count":3,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/posts\/3306\/revisions"}],"predecessor-version":[{"id":4288,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/posts\/3306\/revisions\/4288"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/media\/3860"}],"wp:attachment":[{"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/media?parent=3306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/categories?post=3306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bulutistan.com\/blog\/wp-json\/wp\/v2\/tags?post=3306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}