2009-12-08 16 views
8

Jestem nowy w testowaniu jednostkowym, więc chciałbym poznać opinię niektórych, którzy są trochę bardziej zorientowani.testy jednostkowe dla skrobania ekranu?

Potrzebuję krótko napisać skrobanie ekranu. System docelowy to web ui, w którym będzie obfite przetwarzanie HTML i podobna niestabilna dobroć. Nigdy nie otrzymam powiadomienia o żadnych zmianach w systemie docelowym (np. Przebudują swoją witrynę lub w inny sposób zmieniają jej funkcjonalność). Tak więc przewiduję, że mój kod będzie łamał się regularnie.

Sądzę więc, że moje prawdziwe pytanie brzmi: ile, jeśli w ogóle, moich testów jednostkowych powinienem się martwić lub poradzić sobie z interfejsem (strona, którą skrobię), zmieniając?

Myślę, że testy jednostkowe czy nie, będę musiał mocno przetestować w czasie wykonywania, ponieważ muszę upewnić się, że dane, które spożywają są nieskazitelne. Nawet jeśli przeprowadzałem testy jednostkowe przed każdym uruchomieniem, interfejs internetowy mógł nadal zmieniać się między testami i środowiskiem wykonawczym.

Czy skupiam się na testowaniu kodu i obsłudze wyjątków? Czy to oznacza narysowanie linii na piasku i całkowite wykluczenie tego rodzaju testów z testów jednostkowych?

Dzięki

+1

Nie sądzę, że masz na myśli "testy jednostkowe". Testy jednostkowe są czymś, co wykonujesz, aby przetestować napisany kod na zasadniczo poziomie metody. Sposób, w jaki czytam twoje pytanie, brzmi bardziej jak twoja rozmowa o automatycznych testach, aby sprawdzić, czy twoje dane wejściowe są wystarczająco dobre, aby przejść przez resztę pracy. Czy to prawda? –

+0

Nie jestem pewny, ale na przykład przewidywałem metodę getGoogleSearchResult() i dla tej metody mogłem wykonać test i twierdzenia. I nie, nie zdrapuję Google SERP.:) – Chris

Odpowiedz

6

Testy jednostek powinny być zawsze projektowane tak, aby miały powtarzalne znane wyniki.

Dlatego do testów jednostkowych ekran-zgrzebłowego, powinno być pisanie testu przeciwko znanym zestawem HTML (można użyć atrapa obiektu do reprezentowania)

rodzaj rzeczy mówisz nie robi naprawdę brzmi to jak scenariusz testowania jednostkowego - jeśli chcesz, aby twój kod działał tak sprawnie, jak to możliwe, to więcej, jak mówisz, o testowaniu kodu i obsłudze wyjątków.

Chciałbym również dołączyć kod alarmowy, aby system informował o wszelkich okazjach, gdy HTML nie zostanie przeanalizowany zgodnie z oczekiwaniami.

+0

Tak. Zrobiłem coś bardzo podobnego. Pobierz kod HTML pasujący do różnych przypadków (sekcja obecna, brakująca sekcja, tabela pusta itp.) I podaj te ciągi do swojej klasy parsowania (która powinna być oddzielna od twojej klasy internetowej downloader). – TrueWill

+0

Dziękuję Myślę, że to naprawdę przemawia do mojego dokładnego konfliktu z tym. I zgodził się na kod ostrzegawczy! – Chris

1

Myślę, że testy jednostkowe rzeczą może być przydatna dla tutaj jest, jeśli masz serwer gromadzeniu dadzą ci wczesnego ostrzegania kod nie działa. Nie można napisać testu jednostkowego, aby udowodnić, że przesuwanie ekranu nadal będzie działało, jeśli witryna zmieni swój kod HTML (ponieważ nie można określić, co zmienią).

Być może uda Ci się napisać test jednostkowy, aby sprawdzić, czy coś pożytecznego powróci z twoich wysiłków.

+0

Sprawdzanie, czy coś użytecznego (i mieści się w znanych ograniczeniach) jest w zasadzie tym, co miałem na myśli, gdybym pisywał testy jednostkowe dla różnych metod skrobania. – Chris

2

Powinieneś starać się rozdzielić swoje testy tak często, jak to możliwe. Przetestuj przetwarzanie danych za pomocą testów niskiego poziomu, które wykonują rzeczywisty kod (tj. , a nie za pośrednictwem symulowanej przeglądarki).

W symulowanej przeglądarce po prostu upewnij się, że robią się właściwe rzeczy, gdy klikasz przyciski, przesyłasz formularze i podążasz za odnośnikami.

Nigdy nie próbuj sprawdzać, czy układ jest poprawny.

+0

Brak przeglądarki w miksie. Po prostu wykonywanie wiersza poleceń i zwijanie. – Chris

Powiązane problemy