{"id":8036,"date":"2018-11-07T07:30:13","date_gmt":"2018-11-07T06:30:13","guid":{"rendered":"http:\/\/www.unilab.eu\/?p=8036"},"modified":"2021-04-14T12:12:28","modified_gmt":"2021-04-14T10:12:28","slug":"tdd-bdd","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/tdd-bdd\/","title":{"rendered":"Sviluppo: Test Driven vs Behavioural Driven (tdd bdd)"},"content":{"rendered":"<p>Nel mondo dello sviluppo software, \u00e8 naturale sentire parlare del binomio<strong> tdd bdd<\/strong>. Con TDD, acronimo di Test Driven Development, si inquadra un processo di sviluppo che si basa sulla stesura di test automatici. La suddetta, deve avvenire prima di quella del software stesso, che deve essere sottoposto a procedure di testing.<\/p>\n<p>Fondamentale inoltre \u00e8 che lo sviluppo del software sia orientato al superamento di specifici test automatici precedentemente predisposti. Per entrare maggiormente nello specifico, \u00e8 il caso di ricordare che il TDD si divide in quattro parti: <strong>analisi, design, sviluppo e testing<\/strong>.<\/p>\n<p>Gli sviluppatori, in poche parole, osservano il dominio del problema e lo analizzano, per trovare poi le applicazioni adatte per risolverlo. Queste ultime, ovviamente, devono essere sottoposte a una <strong>procedura di testing<\/strong>.<\/p>\n<p>I passi da seguire per concretizzare l&#8217;intero processo sono i seguenti:<\/p>\n<ul>\n<li>\u03bb <strong>Scrittura di un unit test destinato al fallimento<\/strong>: in questo caso, il risultato del lavoro dello sviluppatore deve essere il pi\u00f9 semplice possibile. Fondamentale \u00e8 che sia destinato a fallire. Lo sviluppatore, infatti, deve indicare come non dovrebbe comportarsi il codice.<\/li>\n<li>\u03bb <strong>Esecuzione del test<\/strong>: nel momento in cui le procedure di testing falliscono, arriva il momento di scrivere il codice minimo per farli passare. In questa fase, \u00e8 cruciale non aggiungere nuovi elementi.<\/li>\n<li>\u03bb <strong>Miglioramento del test<\/strong>: lo sviluppatore che ritiene di poter ottimizzare il codice che ha scritto, pu\u00f2 farlo ed eseguire nuovi test. Una volta raggiunto un risultato ottimale, non resta che iniziare a creare nuovi unit test e andare avanti.<\/li>\n<\/ul>\n<p>Caratterizzato da vantaggi che riguardano la possibilit\u00e0 di riutilizzare il codice e di lavorare in gruppo, il TDD si contrappone spesso al BDD, acronimo per Behaviour Driven Development.<\/p>\n<p><strong>\u00a0<\/strong><strong>Cos\u2019\u00e8 il Behaviour Driven Development?<\/strong><\/p>\n<p>Vediamo ora il secondo polo del binomio tdd bdd. Il Behaviour Driven Development. Parte della <strong>filosofia agile<\/strong>, ha lo scopo di ottimizzare la comunicazione tra i professionisti che si occupano di un determinato progetto di sviluppo.<\/p>\n<p>Nel corso del processo di BDD, le funzionalit\u00e0 vengono descritte tramite le cosiddette <strong>user stories<\/strong>. Le suddette sono composte da:<\/p>\n<ul>\n<li>\u03bb Una descrizione testuale finalizzata alla pianificazione o utilizzabile come promemoria.<\/li>\n<li>\u03bb Una conversazione avente come obiettivo quello di approfondire eventuali aspetti non chiari.<\/li>\n<li>\u03bb Un test finalizzato a verificare se la story \u00e8 completa o no.<\/li>\n<\/ul>\n<p>Fondamentale \u00e8 che la descrizione sia concisa, redatta con un linguaggio naturale e in grado di attenersi a una specifica funzionalit\u00e0. Essenziale infine \u00e8 che non contenga aspetti tecnici.<\/p>\n<p>Una volta completata la story, arriva il momento di concentrarsi sui possibili scenari di <strong>esecuzione della funzionalit\u00e0.<\/strong> Lo scenario delle singole user stories costituisce il vero e proprio test di accettazione da considerare dopo la fine dello sviluppo della funzionalit\u00e0.<\/p>\n<p>La <strong>descrizione dello scenario<\/strong> deve essere gestita considerando tre step, che sono riassumibili con i termini given, when e then. I dettagli in merito sono i seguenti:<\/p>\n<ul>\n<li>\u03bb Dato uno specifico contesto (given)<\/li>\n<li>\u03bb Se si verifica un determinato evento (when)<\/li>\n<li>\u03bb Deve succedere una cosa specifica (then)<\/li>\n<\/ul>\n<p>Nello s<strong>tep given<\/strong>, vengono inclusi i passi tecnici necessari affinch\u00e9 il sistema arrivi allo status corretto per eseguire il test. Per quel che concerne lo step when, invece, ricordiamo che si parla di un evento che deve avvenire per mezzo di un utente, con lo scopo di azionare la funzionalit\u00e0 sotto esame.<\/p>\n<p>Parliamo infine dello step then, fondamentale per comprendere il secondo punto del binomio tdd bdd e caratterizzato da una descrizione di quello che avviene nel sistema, con un focus sulle <strong>reazioni apprezzabili dalla singola applicazione<\/strong>. In tale fase, lo sviluppatore capisce se il test \u00e8 stato passato o meno.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-8036\" data-postid=\"8036\" class=\"themify_builder_content themify_builder_content-8036 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Nel mondo dello sviluppo software, \u00e8 naturale sentire parlare del binomio tdd bdd. Con TDD, acronimo di Test Driven Development, si inquadra un processo di sviluppo che si basa sulla stesura di test automatici. <\/p>\n","protected":false},"author":10,"featured_media":8038,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"%%title%% %%page%% %%sep%% %%sitename%%","_seopress_titles_desc":"Nel mondo dello sviluppo software, \u00e8 naturale sentire parlare del binomio tdd bdd. Con TDD, acronimo di Test Driven Development, si inquadra un processo di sviluppo che si basa sulla stesura di test automatici.","_seopress_robots_index":"","_seopress_analysis_target_kw":"tdd bdd","footnotes":""},"categories":[46],"tags":[],"class_list":["post-8036","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coffee-break-it","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/8036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/comments?post=8036"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/8036\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/8038"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=8036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=8036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=8036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}