<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>testing Archivi - RD Tech</title>
	<atom:link href="https://www.rdtech.it/category/education/testing/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.rdtech.it/category/education/testing/</link>
	<description>Ricerca e Sviluppo messi a disposizione delle Imprese Italiane</description>
	<lastBuildDate>Tue, 08 Aug 2023 15:58:04 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Test Driven Development (TDD): Vantaggi ed esempi pratici</title>
		<link>https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/</link>
					<comments>https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Tue, 08 Aug 2023 15:53:04 +0000</pubDate>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[regressions]]></category>
		<category><![CDATA[solve bugs]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test driven development]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1700</guid>

					<description><![CDATA[<p>Introduzione Nell&#8217;ambito dello sviluppo software, il Test Driven Development (TDD) sta emergendo come un fondamentale approccio per creare applicazioni solide e affidabili. Attraverso la scrittura anticipata dei test, il TDD offre benefici significativi che influenzano la qualità e l&#8217;efficienza dello sviluppo. In questo articolo, esploreremo i vantaggi del Test Driven Development, con esempi concreti in JavaScript, evidenziando come questa metodologia possa notevolmente migliorare il processo di sviluppo. TDD e ottimizzazione del codice Consideriamo l&#8217;esempio di una classe JavaScript per una calcolatrice. Cominciamo scrivendo un test che delinea il comportamento atteso: describe("Calculator class", () => { test('it should add two numbers', ()…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/">Test Driven Development (TDD): Vantaggi ed esempi pratici</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1700" class="elementor elementor-1700">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-69e6ccc elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="69e6ccc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ea1411" data-id="5ea1411" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-d0f9acf elementor-widget elementor-widget-heading" data-id="d0f9acf" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}</style><h2 class="elementor-heading-title elementor-size-default">Introduzione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-add46d4 elementor-widget elementor-widget-text-editor" data-id="add46d4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style>				<p>Nell&#8217;ambito dello sviluppo software, il Test Driven Development (TDD) sta emergendo come un fondamentale approccio per <strong>creare applicazioni solide e affidabili.</strong> <br />Attraverso la <strong>scrittura anticipata dei test</strong>, il TDD offre benefici significativi che influenzano la qualità e l&#8217;efficienza dello sviluppo. <br />In questo articolo, esploreremo i vantaggi del Test Driven Development, con esempi concreti in JavaScript, evidenziando come questa metodologia possa notevolmente <strong>migliorare il processo di sviluppo.</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-0ee6949 elementor-widget elementor-widget-heading" data-id="0ee6949" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">TDD e ottimizzazione del codice</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-6e2b9b1 elementor-widget elementor-widget-text-editor" data-id="6e2b9b1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Consideriamo l&#8217;esempio di una classe JavaScript per una calcolatrice. <br /><strong>Cominciamo scrivendo un test che delinea il comportamento atteso:</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a11b009 elementor-widget elementor-widget-code-highlight" data-id="a11b009" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>describe("Calculator class", () => {
    test('it should add two numbers', () => {
        const calc = new Calculator();
        expect(calc.add(2, 3)).toBe(5);
    });
})
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-8995805 elementor-widget elementor-widget-text-editor" data-id="8995805" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Il TDD ci impone di ponderare la progettazione del codice prima ancora di iniziare a programmare, risultando in una base solida per lo sviluppo.<br />Per creare la funzionalità richiesta basta scrivere &#8220;il codice necessario per far passare il test&#8221;.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ddcd981 elementor-widget elementor-widget-code-highlight" data-id="ddcd981" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(numberA, numberB) {
        return numberA + numberB;
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-00bee73 elementor-widget elementor-widget-text-editor" data-id="00bee73" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>L&#8217;eccessiva semplificazione dell&#8217;esempio non lo fa apprezzare, ma scrivere prima il test e poi il codice, specialmente in software reali, è una pratica che nella maggior parte dei casi permette di ridurre notevolmente la mole di linee di codice prodotte, perché lo sviluppatore tende ad avere molto più chiaro il requisito da soddisfare. </p>						</div>
				</div>
				<div class="elementor-element elementor-element-363ccd4 elementor-widget elementor-widget-heading" data-id="363ccd4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Estenzione delle funzionalità in TDD</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-25b27e3 elementor-widget elementor-widget-text-editor" data-id="25b27e3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Supponiamo di dover estendere la funzione add in modo da accettare un numero indefinito di argomenti da sommare.</p><p>Modifichiamo il codice del test</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6db7b78 elementor-widget elementor-widget-code-highlight" data-id="6db7b78" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>describe("Calculator class", () => {
    // Aggiorniamo la descrizione del test
    test('it should add multiple numbers', () => {
        const calc = new Calculator();
        expect(calc.add(2, 3)).toBe(5);
        // aggiungiamo i casi da supportare
        expect(calc.add(1,2,3,4)).toBe(10);
    });
})
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-6bcda1e elementor-widget elementor-widget-text-editor" data-id="6bcda1e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Modifichiamo il codice nella maniera più semplice per far passare il test</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6072e3a elementor-widget elementor-widget-code-highlight" data-id="6072e3a" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(...numbers) {
        let result = 0;
        for(let number of numbers) {
            result += number;
        }
        return result;
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-ac06753 elementor-widget elementor-widget-text-editor" data-id="ac06753" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Attraverso i test, otteniamo un metodo efficace per estendere una funzionalità <strong>senza creare regressioni sul funzionamento precedente.</strong></p><p>La considerazione è sempre la stessa, è già visibile anche in questo esempio, ma è molto più apprezzabile su codice più complesso.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8074193 elementor-widget elementor-widget-heading" data-id="8074193" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Refactoring con il TDD</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-0dce625 elementor-widget elementor-widget-text-editor" data-id="0dce625" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Consideriamo di dover rifattorizzare il codice della funzione add per ottimizzarla.<br />In questo caso non abbiamo bisogno di scrivere un altro test.<br /><strong>Per rifattorizzare una funzione in TDD è sufficiente modificare la funzione stessa assicurandosi che i test continuino a passare.</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-338a58f elementor-widget elementor-widget-code-highlight" data-id="338a58f" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(...numbers) {
        return Math.sum(...numbers);
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1d3a62a elementor-widget elementor-widget-heading" data-id="1d3a62a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Rilevamento più preciso di Bug ed Errori</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-163c2e8 elementor-widget elementor-widget-text-editor" data-id="163c2e8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Programmare implementando il Test Driven Development produce fin da subito una copertura dei test piuttosto alta, specialmente se in <a href="https://www.google.it/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwiQr8ajtM2AAxXGVvEDHd4oB7EQFnoECBoQAQ&amp;url=https%3A%2F%2Fwww.redhat.com%2Fit%2Ftopics%2Fdevops%2Fwhat-is-ci-cd&amp;usg=AOvVaw0Fybq5lcx-eGczQzlPoQkQ&amp;opi=89978449">CI/CD</a> sono state implementate regole di soglia che impediscono la pubblicazione di codice non testato o che presenta errori in fase di test.</p><p>Questo significa che una buona fetta di bug, specificamente i bug dovuti a regressioni nel codice, vengono prevenuti.<br />Gli altri però, durante lo sviluppo, devono essere risolti come al solito.</p><p>Consideriamo il caso in cui il client chiami la funzione add inserendo valori non numerici. In produzione avremo un comportamento inaspettato nonostante i test continuino a passare.</p><p>Ecco come risolvere un bug implementando il TDD:</p><p>Scriviamo il codice che descrive il bug:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-f7ca869 elementor-widget elementor-widget-code-highlight" data-id="f7ca869" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>describe("Calculator class", () => {
    // ...
    test('it should throw if at least one argument is not a number', () => {
        const calc = new Calculator();
        expect(calc.add("hello", 3)).toThrow("All arguments must be of type numeric.");
    });
})</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-7426d18 elementor-widget elementor-widget-text-editor" data-id="7426d18" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Come fatto fin&#8217;ora, scriviamo il codice minimo per soddisfare il requisito:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-dad41da elementor-widget elementor-widget-code-highlight" data-id="dad41da" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(...numbers) {
        if(numbers.some(n => typeof n !== number)) {
            throw new Error("All arguments must be of type numeric.");
        }
        return Math.sum(...numbers);
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-d0de012 elementor-widget elementor-widget-heading" data-id="d0de012" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Incremento della Fiducia e Velocità nello Sviluppo</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-8f7cf9f elementor-widget elementor-widget-text-editor" data-id="8f7cf9f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Attraverso l&#8217;approccio TDD, sviluppiamo fiducia nella stabilità del codice. I test costanti assicurano che le modifiche non causino regressioni, permettendoci di sviluppare nuove funzionalità con rapidità.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6040e84 elementor-widget elementor-widget-heading" data-id="6040e84" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-088a651 elementor-widget elementor-widget-text-editor" data-id="088a651" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Il Test Driven Development (TDD) rappresenta un metodo potente per lo sviluppo, offrendo una serie di vantaggi tangibili. </p><p>Con esempi pratici in JavaScript, abbiamo illustrato come il TDD potenzia la progettazione, riduce gli errori, agevola il refactoring e incrementa la fiducia nello sviluppo. </p><p>Integrando il TDD nella propria pratica di sviluppo, è possibile garantire applicazioni di alta qualità e affidabilità. </p><p>Hai domande o vuoi approfondimenti su questo argomento? <a href="_wp_link_placeholder" data-wplink-edit="true">Contattaci</a>.</p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-894ce48 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="894ce48" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b8407e8" data-id="b8407e8" data-element_type="column">
			<div class="elementor-widget-wrap">
									</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/">Test Driven Development (TDD): Vantaggi ed esempi pratici</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
