Kilka dni temu zacząłem analizować strukturę testów jednostkowych o nazwie check, i zamierzam uruchomić test na kodzie c pod Linuksem.Czy przeprowadzanie testu jednostki z Valgrindem jest przesadą?
Teraz sprawdź, a niektóre dobrze zaprojektowane kod, a niektóre kodu testu może mi pomóc zweryfikować że podstawowa funkcjonalność jest poprawna, Znaczy to jest dość łatwe do wystarczy spojrzeć na zmiennych oraz odpowiedź z powrotem, a następnie zdecydować, czy funkcja jest prawidłowa, czy nie.
Ale powiedzmy, że chcę przetestować dynamiczną strukturę pamięci z dużo wolnego od malloc i wolnego, i okazuje się, że mogę wprowadzić dane i odzyskać poprawne dane. Ale to nie dowodzi, że nie złamałem pamięci podczas procesu, załóżmy, że zapomniałem zwolnić połowę pamięci i straciłem wskaźniki (klasyczny memelak). Ten kod prawdopodobnie przejdzie większość testów jednostkowych.
Tak więc na pytanie: jest to dobry pomysł, aby uruchomić cały kod testowy jednostki, np. Valgrind i pozwolić mu wykryć problemy malloc/free? (Albo coś podobnego w kompilacji Electric Fence?)
Czuje się dobrym pomysłem, ale nie jestem pewien, co dostaję się do tutaj .....
Dzięki Johan
Aktualizacja: Dzięki Douglas i Jonathan, wydaje się, że jest to dobry pomysł i coś powinienem kontynuować :-)
Aktualizacja: Valgrind to fajne narzędzie, jednak pierwsze memleaksy, które znalazłem robiąc to , były w strukturze testowej, a nie w moim własnym kodzie (całkiem zabawne). Tak więc wskazówką dla reszty jest sprawdzenie, czy struktura testowa urządzenia, której używasz, nie przecieka, zanim odwrócisz własny kod do góry nogami. W moim przypadku potrzebna była tylko pusta walizka testowa, od tego czasu działa tylko framework testów jednostkowych.
Istnieją również '--xml = yes' i' --xml-file = ', które ułatwiają automatyzację czytania wyników. –