Jak przetestować oprogramowanie, które nagrywa płyty CD bez marnowania płyt CD?

16

Chcę napisać aplikację, której można używać do nagrywania płyt CD (muzyki). Wiem, że i tak powinienem to przetestować na prawdziwych płytach CD, ale nie chcę tego robić za każdym razem, gdy dokonam małej zmiany. Ale chcę wiedzieć i przetestować, czy odpowiednie dane zostaną spalone, więc nie dostaniesz uszkodzonych płyt CD.

Korzystam z biblioteki, która udostępnia API tylko do bezpośredniego nagrywania na dysk fizyczny; nie pozwala na zapis na obrazie dysku (co byłoby znacznie łatwiejsze do przetestowania).

Jak mogę to przetestować bez marnowania płyt CD i czasu na każdą zmianę / kilka zmian, które wprowadzę?

po prawej stronie
źródło
5
Czy byłoby możliwe przejście do biblioteki, która umożliwia zapisanie obrazu dysku?
FrustratedWithFormsDesigner

Odpowiedzi:

29

Prosta odpowiedź jest często najlepsza: płyty CD wielokrotnego zapisu?

Aby zaoszczędzić czas, pisz stosunkowo małe pliki. Co jakiś czas rób tylko większe pliki.

Kevin D.
źródło
1
Zgadzam się, że jest to prosta i dobra odpowiedź, ale jeśli WTP chce przenieść testowanie na inny poziom, wyśmiewanie API (zobacz inne odpowiedzi na to pytanie) odblokuje cały wymiar możliwości testowania (jak w automatycznym).
louisgab,
@louisgab Całkowicie się z tobą zgadzam, kiedy napisałem odpowiedź, tak naprawdę zajmowałem się kwestią marnowania płyt CD. W pełni spodziewałem się, że kolejna odpowiedź wymyśli coś lepszego (i mają). Jeśli tak, polecam podejście kpiące i sugeruję moją odpowiedź tylko wtedy, gdy WTP naprawdę chce fizycznie przetestować proces nagrywania.
Kevin D
19

Jeśli korzystasz z systemu Linux, powinieneś być w stanie skonfigurować „urządzenie cd”, które jest tylko nazwanym potokiem. Twój interfejs API zapisuje na „urządzeniu”, a drugi podłączasz do programu, który pozwala zobaczyć, co robi / przekonwertować go na obraz dysku. Wiele opcji. Zobacz ten artykuł, aby uzyskać informacje na temat nazwanych potoków.

Odpowiedź Kevina jest o wiele łatwiejsza IMO.

Spencer Rathbun
źródło
2
Tak naprawdę jestem na Mac OS X, który jest także systemem UNIX. Spróbuję tego.
prawej
6

Napisz tyle testów, ile możesz, używając próbnego interfejsu API biblioteki. Pozwala to przetestować kod w jednostkach. To pokazuje, że twój kod działa w sobie, zakładając, że biblioteka działa tak, jak powinna.

W pewnym momencie będziesz musiał przeprowadzić testy integracyjne, które faktycznie korzystają z biblioteki. Ale chodzi o to, że masz już poziom zaufania do własnego kodu, zanim przejdziesz do tego punktu. Testy integracji często wymagają więcej czasu i zasobów, jak widzieliście. Tak dokładne testy jednostkowe pozwalają nie polegać całkowicie na testach integracyjnych.

unholysampler
źródło
3

O jakich testach konkretnie mówisz?

Czytając „Nie chcę tego robić za każdym razem, gdy wprowadzam małą zmianę” w twoim pytaniu, wyobrażam sobie, że mówisz o testowaniu jednostkowym .

Później dodajesz, że korzystasz z interfejsu API odpowiedzialnego za wypalanie danych na dyskach CD. Jeśli ten interfejs API zostanie przetestowany i poprawnie udokumentowany, nie musisz zajmować się faktycznym procesem nagrywania danych na dysku CD i nie musisz go testować. W tym przypadku masz do czynienia z testami integracyjnymi , których nie musisz robić „za każdym razem, gdy [wprowadzasz] małą zmianę” .

Arseni Mourzenko
źródło
Ale muszę wiedzieć, czy prawidłowo używam interfejsu API.
prawej
@WTP: zobacz moją edycję. Ponadto poprawnie napisany interfejs API nie pozwala na tworzenie uszkodzonych płyt CD przy użyciu go niepoprawnie. Jeśli to robi, prawdopodobnie najpierw powinieneś poszukać innego API. Interfejs API ma na celu zapewnienie abstrakcji, a zwłaszcza unikanie sposobów zapobiegania korupcji podczas zapisywania danych na dysku CD.
Arseni Mourzenko
Masz rację. Interfejs API jest bardzo dobrze udokumentowany.
prawej
1

WTP,

Ponieważ chcesz przetestować swoje oprogramowanie (nie interfejs API ani rejestrator), jak wskazał Chris, niezbędna byłaby makieta interfejsu API.
Niezawodny rejestrator „ISO” do testowania integracji powinien umożliwiać zautomatyzowanie testowania zawartości dysku CD poprzez analizę pliku .iso.
Właściwie wypalenie dysku CD lub DVD nie przyniosłoby rozstrzygających wyników, ponieważ nie można ustalić, czy przyczyną błędu jest wadliwa płyta CD, wadliwa nagrywarka czy błąd oprogramowania, chyba że chcesz wykonać statystyki jakości, rejestrując wiele kopii ta sama płyta (której najwyraźniej nie masz).
Powodzenia!

Jerónimo Vargas
źródło