C'è un sacco di gente oggi che vendono unit testing come il pane e burro di sviluppo. Potrebbe funzionare anche per routine fortemente orientate all'algoritmo. Tuttavia, come testare l'unità, ad esempio, un allocatore di memoria (si pensi malloc()/realloc()/free()). Non è difficile produrre un allocatore di memoria funzionante (ma assolutamente inutile) che soddisfi l'interfaccia specificata. Ma come fornire il contesto appropriato per la funzionalità di unit test che è assolutamente voluta, ma non fa parte del contratto: coalescenza blocchi liberi, riutilizzare blocchi liberi sulla prossimi allocazioni, tornando memoria libera in eccesso al sistema, affermando che la politica di assegnazione (ad esempio, first-fit) in realtà è rispettato, eccCome si svita un allocatore di memoria?
mia esperienza è che le affermazioni, anche se complessa e richiede molto tempo (ad esempio, attraversando l'intera lista gratuita per controllare invarianti) sono molto meno lavoro e sono più affidabili di unit test , esp. quando si codificano algoritmi complessi e dipendenti dal tempo.
Qualche idea?
Potrebbe per favore fornire maggiori dettagli su come scrivere i test unitari. Li stai difendendo molto, ma ho letto la domanda e poi la tua risposta e ancora non capisco cosa stai proponendo esattamente. –
La tua risposta è troppo astratta per essere utile. Puoi dare un esempio di come testare un allocatore di memoria? Rendiamolo ancora più concreto: first-fit, che restituisce il 50% dei blocchi liberi al sistema quando c'è il doppio di spazio disponibile rispetto alla memoria allocata. – zvrba
Il primo passo consiste nell'ottenere l'allocatore di memoria e rilasciare memoria dal sistema tramite un'interfaccia e non direttamente tramite chiamate di sistema dirette. Il secondo passaggio consiste nel creare una versione fittizia di questa interfaccia che è possibile utilizzare nei test. Il terzo passaggio consiste nel testare e verificare come il codice utilizza l'interfaccia. –