Testing
Programmare ad oggetti negli ultimi anni non è diventato solo una pratica comune, è probabilmente anche una moda. Gli strumenti sono diventati gli slogan, al punto che scrivere buon software sembra dipendere più dal linguaggio e dal CASE tool di turno, anziché dall’esperienza, dall’intuizione e da un pensiero scientifico, logico e rigoroso. Questa sensazione si applica anche al testing, spesso relegato all’uso di uno specifico framework. Spostando tutta la responsabilità sullo strumento, si ingenera la falsa percezione che i test non siano, a loro volta, software, ossia codice che deve essere progettato, scritto e manutenuto, in modo analogo a quello che si sta collaudando. Inoltre, il codice object-oriented non è meno error-prone di un qualsiasi altro codice. Che cosa significa, quindi, progettare e programmare meglio nel paradigma ad oggetti? Come facciamo a misurare il livello di affidabilità del software che scriviamo?
L’ingegneria del software mira a fornire degli strumenti generali per ottenere dati oggettivi sulla qualità di un sistema software, come il testing e le metriche ad esso associate. Esistono in commercio diversi tool che forniscono capacità di test più o meno sofisticate, unitamente ad un livello di automazione e di facilità d’uso piuttosto variabile. Ovviamente non esistono dei tool "tutto-fare" in grado di sopperire a tutte le esigenze, dai test di unità fino ai test di integrazione e di regressione. Il testing, infatti, sfrutta peculiarità della singola applicazione e dello specifico ambiente operativo, rendendo difficile (se non impossibile) riusare gli stessi componenti in domini o in programmi diversi. Se fallisce il riuso sulle componenti, tuttavia è più probabile riuscire a riutilizzare l’infrastruttura di test, l’organizzazione generale di alcuni componenti essenziali, seppure dotati solo di una parziale implementazione. Gli articli che trovate in questa sezione sono mirati ad illustrare lo stato dell'arte del testing di sistemi ad oggetti secondo la prospettiva appena discussa.
