Wstydzę się zadać to pytanie, ale jestem ciekawy. Niedawno napisałem skrypt (bez organizowania kodu w modułach), który odczytuje pliki dziennika sklepu i zapisuje informacje w bazie danych.Perl: Jaka jest definicja testu?
Na przykład, napisałem coś takiego (przez Richarda Huxton):
while (<$infile>) {
if (/item_id:(\d+)\s*,\s*sold/) {
my $item_id = $1;
$item_id_sold_times{$item_id}++;
}
}
my @matched_items_ids = keys %item_id_sold_times;
my $owner_ids =
Store::Model::Map::ItemOwnerMap->fetch_by_keys(\@matched_item_ids)
->entry();
for my $owner_id (@$owner_ids) {
$item_id_owner_map{$owner_id}++;
}
powiedzieć, to skrypt nazywa script.pl. Podczas testowania pliku zrobiłem plik script.t i musiałem powtórzyć niektóre bloki script.pl w script.t. Po skopiowaniu odpowiednich sekcji kodu potwierdzam:
is($item_id_sold_times{1}, 1, "Number of sold items of item 1");
is($item_id_owner_map{3}, 8, "Number of sold items for owner 3");
itd. I tak dalej.
Ale niektórzy zwracają uwagę, że to, co napisałem, nie jest testem. To jest skrypt potwierdzający. Dobry test wymagałby napisania kodu z modułami, napisania skryptu, który kopie metody w modułach i napisania testu dla modułu.
To sprawiło, że pomyślałem o tym, co jest definicją testu najczęściej używanego w inżynierii oprogramowania. Być może niektórzy z was, którzy przetestowali nawet podstawowe funkcje Perla, mogą mi pomóc. Skrypt (niezmodyfikowany) nie może być właściwie przetestowany?
Pozdrowienia
Powiem to moim rówieśnikom i jeśli będą dalej zadawać pytania, powiem im po prostu cytowanie Briana d Foy'a. Powinno to zadziałać tak, jak dowiedzieliśmy się z Twojej książki tutaj :) – ado
Test (dobry) to coś, co dostarcza cennych informacji do niektórych interesariuszy. Zupełnie inne pytanie brzmi, jak powinieneś pisać testy jednostkowe dla skryptu Perla. :-) – Edu