{"id":7812,"date":"2018-10-22T07:30:41","date_gmt":"2018-10-22T05:30:41","guid":{"rendered":"http:\/\/www.unilab.eu\/?p=7812"},"modified":"2021-04-13T18:00:13","modified_gmt":"2021-04-13T16:00:13","slug":"black-box","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/black-box\/","title":{"rendered":"Programmazione: cos\u2019\u00e8 una Black Box?"},"content":{"rendered":"<p>Quando si parla di <strong>Black Box<\/strong>, si inquadra un modello grazie al quale \u00e8 possibile verificare che determinati software e applicazioni svolgano i compiti e le operazioni per cui sono stati realizzati. Il passaggio in questione rappresenta il test finale prima della distribuzione e della commercializzazione.<\/p>\n<p><strong>Modello Black Box: tra teoria dei sistemi e programmazione<\/strong><\/p>\n<p>Il modello Black Box trascende dal mondo della <strong>programmazione<\/strong> e tocca anche la teoria dei sistemi. Esattamente come la scatola nera di cui porta il nome, consente di verificare, avendo in mano specifiche condizioni, se si concretizzano o meno dei risultati teorizzati in precedenza.<\/p>\n<p>Tutto questo avviene senza che chi verifica l&#8217;esattezza dei suddetti risultati abbia la possibilit\u00e0 di visionare i <strong>processi interni alla scatola nera<\/strong>. La cosa ha per\u00f2 un senso, dal momento che, quando si ha a che fare con sistemi complessi, \u00e8 necessario guardare al macroscopico piuttosto che al particolare.<\/p>\n<p>In poche parole, non bisogna soffermarsi sui dettagli relativi al funzionamento degli ingranaggi, ma concentrarsi sull&#8217;<strong>analisi dei risultati ottenuti<\/strong>, che devono corrispondere a quanto previsto all\u2019inizio del processo di progettazione.<\/p>\n<p>Abbiamo gi\u00e0 ricordato che questo modello trova applicazione anche nel mondo della programmazione. Entrando maggiormente nello specifico, ricordiamo che le cosiddette scatole nere analizzano gli <strong>algoritmi<\/strong> che formano un determinato software, mettendo in primo piano risultati fortemente dipendenti dalle condizioni definite dal programmatore.<\/p>\n<p>Il professionista in questione dovr\u00e0 poi verificare che i risultati corrispondano a quanto da lui impostato durante la fase preliminare. Molto importante \u00e8 ricordare che i software messi a disposizione per le procedure di testing sono a <strong>codice sorgente chiuso<\/strong> e che chi effettua la verifica non pu\u00f2 modificare nulla.<\/p>\n<p>In tal modo, \u00e8 possibile sia <strong>tutelare il codice da eventuali plagi<\/strong>, sia evitare manomissioni che, potenzialmente, possono falsare i risultati delle procedure di testing.<\/p>\n<p><strong>Vantaggi del modello nella programmazione<\/strong><\/p>\n<p>Grazie al modello della scatola nera, \u00e8 innanzitutto possibile separare il tester dal creatore del codice. Il tester, nello specifico, agisce dal punto di vista dell&#8217;utente finale. Fondamentale \u00e8 ricordare che le procedure di testing possono seguire diverse tecniche.<\/p>\n<p>In alcuni frangenti, vengono divisi in sottoinsiemi di dati gli <strong>input da testare<\/strong>, cos\u00ec da permettere ai tester di concentrarsi su ciascuna sezione. Il percorso preciso prevede i seguenti passaggi:<\/p>\n<ul>\n<li>l dividere il software in classi di equivalenza (intervalli di valori input) analizzando ciascuna sezione;<\/li>\n<li>l appurare la presenza di eventuali errori tra i suddetti valori input;<\/li>\n<li>l effettuare un\u2019analisi a coppie di dati, cos\u00ec da tenere sotto controllo i parametri per i bug.<\/li>\n<\/ul>\n<p>La tecnica appena descritta \u00e8 nota come <strong>partition testing<\/strong> e rappresenta la soluzione pi\u00f9 classica e diffusa quando si discute di Black Box Testing. In fase di partition testing, \u00e8 molto importante definire un modello della rappresentazione dei dati di input. Il suddetto, \u00e8 noto come Input Domain Model e consente di applicare criteri specifici alla generazione dei valori. L&#8217;IDM pu\u00f2 essere definito basandosi sull\u2019interfaccia che si sta testando ma anche sulle funzionalit\u00e0.<\/p>\n<p>Un altro approccio di testing prevede la possibilit\u00e0 di pianificare <strong>test mirati all\u2019analisi di una determinata caratteristica del software<\/strong>. Da citare, infine, sono i test di regressione.<\/p>\n<p><strong>\u00a0<\/strong><strong>Le differenze rispetto al modello White Box<\/strong><\/p>\n<p>Quando ci si muove nell\u2019ambito della programmazione, bisogna ricordare che non esiste solo il modello Black Box, ma anche quello <strong>White Box.<\/strong> In questo caso, si inquadra una procedura di testing con caratteristiche diametralmente opposte rispetto a quelle descritte prima.<\/p>\n<p>Con il modello White Box, infatti, il tester considera il <strong>funzionamento interno del codice<\/strong> di un software o di un\u2019applicazione, prendendo in esame aspetti che comprendono anche le criticit\u00e0 di memoria e la gestione delle eccezioni.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-7812\" data-postid=\"7812\" class=\"themify_builder_content themify_builder_content-7812 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Quando si parla di Black Box, si inquadra un modello grazie al quale \u00e8 possibile verificare che determinati software e applicazioni svolgano i compiti e le operazioni per cui sono stati realizzati<\/p>\n","protected":false},"author":10,"featured_media":7814,"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":"Quando si parla di Black Box, si inquadra un modello grazie al quale \u00e8 possibile verificare che determinati software e applicazioni svolgano i compiti e le operazioni per cui sono stati realizzati","_seopress_robots_index":"","_seopress_analysis_target_kw":"black box","footnotes":""},"categories":[46],"tags":[],"class_list":["post-7812","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\/7812","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=7812"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/7812\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/7814"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=7812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=7812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=7812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}