Blog Standard

Home Blog

blog DV

Implementare la moltiplicazione tra matrici in c#

In questo articolo vediamo come implementare la moltiplicazione tra matrici utilizzando l'overload dell'operatore * in C#, in modo da mettere a disposizione una sintassi simile a quella disponibile in Matlab. Cenni matematici La moltiplicazione tra matrici si chiama anche moltiplicazione…

ReadMore

Oltre i test: design by contract

Implementare una suite di test (automatici e manuali) che copra il sistema che si sta sviluppando a vari livelli (unità, integrazione, sistema) e secondo vari criteri (copertura di casi d'uso, partizioni equivalenti, ecc.) è senz'altro un passo fondamentale per poter…

ReadMore

Quando e perché usare una singola asserzione per test

Una delle caratteristiche di un buon test di unità è che esso possa fallire per un singolo motivo. Ad esempio, un test riguardante un metodo di serializzazione di un oggetto di tipo User che verifichi sia che la mail sia…

ReadMore

Testare output complessi: snapshot testing

Talvolta capita che sia molto complicato verificare automaticamente (i.e. con delle asserzioni) la correttezza dell'output di un SUT (System Under Test). Specialmente se ci si attiene alla buona pratica di effettuare una singola asserzione per ciascun test. Esempi tipici di…

ReadMore

Perché testare le liste con più di due elementi

Quand'ero giovane e ingenuo e dovevo testare del codice che faceva uso di liste (in senso lato: liste, array, set, stringhe di elementi separati da un certo carattere, ecc.), spesso consideravo solo i casi di liste nulle o con 0,…

ReadMore

Come valutare l’efficacia dei test

Implementare una suite di test per un software è un'attività costosa. E' dunque naturale voler valutare se i test implementati valgano lo sforzo profuso, ovvero se siano efficaci nel rilevare bug e prevenire regressioni. Premesse Di seguito si cercherà di…

ReadMore

Come testare: operazioni idempotenti

Un'operazione si dice idempotente quando ritorna sempre lo stesso risultato anche eseguendola più volte con gli stessi input. Ad esempio, un'operazione di cancellazione di un dato potrebbe essere resa idempotente restituendo "OK" sia se è stato cancellato il dato, sia…

ReadMore

Scrivere codice testabile: dependency injection

Panoramica sulla dependency injection La dependency injection consiste nell'"iniettare" le dipendenze di un componente (classe, funzione o altro) anziché crearle al suo interno. Concretamente, si tratta di passare le dipendenze come parametri del costruttore della classe o del metodo/funzione che…

ReadMore

Scrivere codice testabile: singleton

Panoramica sul pattern singleton Un singleton è una classe per la quale viene garantita l'esistenza di un'unica istanza. E' utile ad esempio per rappresentare configurazioni globali o in generale strutture dati che si vuole garantire che restino "allineate" in tutta…

ReadMore

Uno strano comportamento degli authorization filter in .NET

Disclaimer Mi è capitato di notare il seguente comportamento su un progetto Web Api (si noti che l'AuthorizationFilter per le web api è diverso da quello per i controller MVC) .NET Framework 4.8. Non ho ancora verificato se lo stesso…

ReadMore