{"id":15055,"date":"2020-06-05T07:30:43","date_gmt":"2020-06-05T05:30:43","guid":{"rendered":"https:\/\/www.unilab.eu\/?p=15055"},"modified":"2020-05-28T10:06:57","modified_gmt":"2020-05-28T08:06:57","slug":"testing-debugging","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/testing-debugging\/","title":{"rendered":"Testing e Debug: come automatizzarlo"},"content":{"rendered":"<p>Le fasi di <strong>debug<\/strong> e <strong>testing<\/strong> sono fra le pi\u00f9 delicate da eseguire durante tutto lo sviluppo di un software. Esse hanno infatti il compito di verificare il corretto funzionamento del codice e la presenza di eventuali errori (anche detti bug). Effettuarle nella maniera corretta \u00e8 importante, ma spesso anche difficile e laborioso.<\/p>\n<p>Gli sviluppatori, tuttavia, possono contare su <strong>software di controllo automatizzati<\/strong>, capaci di sostituire l\u2019operatore umano nei test di verifica pi\u00f9 ripetitivi. L\u2019<strong>automazione<\/strong> di questi importanti processi deve, per\u00f2, essere fatta con strumenti affidabili, in modo da garantire l\u2019acquisizione di dati utili e certi.<\/p>\n<p><strong>Differenze fra debug e testing del software<\/strong><\/p>\n<p><strong>Testing e debug<\/strong> hanno due definizioni che spesso vengono utilizzate come sinonimo l\u2019una dell\u2019altra, ma (seppur interconnesse) sono in realt\u00e0 operazioni ben distinte.<\/p>\n<p>Il <strong>testing di un software<\/strong> consiste nel verificare che quest\u2019ultimo rispetti i requisiti richiesti dal cliente e che funzioni correttamente. \u00c8 in tale fase che vengono <strong>identificati eventuali errori<\/strong> (che possono essere sia di sintassi del codice, ma anche di incompatibilit\u00e0 fra funzioni integrate).<\/p>\n<p>Una volta che le anomalie sono state individuate, si passa all\u2019operazione di <strong>debugging<\/strong> o debug, ovvero la fase di correzione delle stesse. Infine, per verificare se le modifiche apportate funzionano, si esegue nuovamente il testing.<\/p>\n<p><strong>Automatizzare testing e debug: perch\u00e9 \u00e8 utile<\/strong><\/p>\n<p>Lo sviluppo di applicazioni e software sempre pi\u00f9 complessi, che necessitano di un elevato grado di flessibilit\u00e0 e scalabilit\u00e0, comporta operazioni di testing e debug non indifferenti. Individuare manualmente gli errori fra migliaia di righe di codice \u00e8 un <strong>lavoro lungo<\/strong>, che richiede tempo, risorse e pazienza.<\/p>\n<p>Con i <strong>test di automazione<\/strong>, invece, le suddette operazioni possono essere eseguite dalle macchine, cos\u00ec da liberare gli sviluppatori dall\u2019onere di compiere verifiche difficili e soprattutto ripetitive. Quando si testa un software, infatti, molte delle prove da effettuare sono similari e variano solo in alcuni aspetti (come ad esempio un diverso sistema operativo o dati di input differenti).<\/p>\n<p>Approntare terminali diversi, con decine di operatori impegnati a testare l\u2019applicazione in ogni possibile scenario, risulterebbe per qualunque azienda di sviluppo software troppo dispendioso a livello economico e temporale. Ecco dunque perch\u00e9 <strong>l\u2019automazione \u00e8 la scelta pi\u00f9 sensata e conveniente<\/strong>.<\/p>\n<p><strong>Come si automatizzano testing e debug<\/strong><\/p>\n<p>L\u2019automazione di test e debug si effettua tramite appositi programmi di <strong>software testing<\/strong>. Ne esistono moltissimi in commercio, ma scegliere quello giusto non \u00e8 sempre facile e immediato. A seconda della tipologia di applicazione che si sta sviluppando, pu\u00f2 risultare utile personalizzare il software di testing, per adattarlo a ci\u00f2 che serve agli sviluppatori in quel momento.<\/p>\n<p>Questa necessit\u00e0 sottolinea come sia importante scegliere un programma flessibile, semplice da utilizzare e che permetta un certo grado di integrazione. Non \u00e8 raro, infatti, che gli sviluppatori, una volta terminata l\u2019applicazione da testare, si mettano a lavorare sul software di testing, in modo da <strong>prepararlo adeguatamente per le verifiche<\/strong> di cui hanno bisogno.<\/p>\n<p>Va tuttavia sottolineato che quanto detto fino ad ora \u00e8 relativo ad ambienti di sviluppo <strong>waterfall<\/strong>, in cui il codice viene scritto in toto prima di essere testato. L\u2019automazione in modelli <strong>Agile\/DevOps<\/strong> (che si basano sull\u2019integrazione e la distribuzione continua di nuove parti del software) \u00e8 possibile, ma richiede programmi di testing pi\u00f9 specifici e complessi.<\/p>\n<p>I software automatici, in questo caso, devono essere in grado di <strong>eseguire continuamente i test<\/strong>, rimanendo al passo con il ciclo di design del prodotto. Scegliere l\u2019applicazione giusta (sia essa commerciale o open source), \u00e8 ancora pi\u00f9 importante per facilitare le operazioni di testing e debug.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-15055\" data-postid=\"15055\" class=\"themify_builder_content themify_builder_content-15055 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Le fasi di debug e testing sono fra le pi\u00f9 delicate da eseguire durante tutto lo sviluppo di un software. Esse hanno infatti il compito di verificare il corretto funzionamento del codice e la presenza di eventuali errori (anche detti bug). Effettuarle nella maniera corretta \u00e8 importante, ma spesso anche difficile e laborioso.<\/p>\n","protected":false},"author":10,"featured_media":15053,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"46","_seopress_titles_title":"","_seopress_titles_desc":"Le fasi di debug e testing sono fra le pi\u00f9 delicate da eseguire durante tutto lo sviluppo di un software. Esse hanno infatti il compito di verificare il corretto funzionamento del codice e la presenza di eventuali errori (anche detti bug). Effettuarle nella maniera corretta \u00e8 importante, ma spesso anche difficile e laborioso.","_seopress_robots_index":"","_seopress_analysis_target_kw":"debugging","footnotes":""},"categories":[46],"tags":[],"class_list":["post-15055","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\/15055","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=15055"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/15055\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/15053"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=15055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=15055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=15055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}