2011-01-18 10 views
16

Odpowiadam za testowanie aplikacji internetowej przedsiębiorstwa, która intensywnie korzysta z AJAX. Muszę zbudować system, który umożliwi ciągłe przeprowadzanie testów bez interwencji człowieka. Obecnie najbardziej interesuje mnie testowanie obciążenia, ale chcę, aby te same skrypty były używane do generowania obciążenia w testach funkcjonalnych.Prawdziwa bezgłowa przeglądarka

Obecnie do testu obciążenia używam grinder. Nagrywamy skrypty, a następnie przetwarzamy je, aby obsłużyć między innymi żądania asynchroniczne. Ten system działa na razie; jednakże skrypty są delikatne i nie mogę ich utrzymać podczas naszego cyklu rozwoju. Muszę być w stanie "uruchomić przeglądarkę" za pośrednictwem języka programowania, który streszcza szczegóły html i javascript, ale musi być bez głowy. Innymi słowy, jeśli mój skrypt testowy zepsuje, musi reprezentować rzeczywiste uszkodzenie aplikacji. Uruchamianie Firefoxa w xvfb nie działa, ponieważ Firefox wciąż zużywa zbyt wiele zasobów, nawet na bezgłowym komputerze linuksowym działającym pod numerem xvfb. Próbowałem prowadzić firefox za pomocą webdrivera pod bezgłowym serwerem x.

Pracuję nad HTMLUnit przez wiele dni, ponieważ jest to idealne rozwiązanie. Piszę HTMLUnit sterowników w Jython i dlatego mogę używać ich z szlifierką. Niestety mam błędy javascript (które nie są prawdziwymi błędami w firefox/chrome/IE) i myślę, że jestem na końcu drogi do tego. W każdym razie doskonale zdaję sobie sprawę z tego, że naprawdę potrzebuję alternatywy.

Wiem, że istnieją inne rozwiązania (envjs i zombie.js); jednak nie wiem, jak rozwinięte są te technologie i nie chcę marnować kolejnego tygodnia, idąc w ślepy zaułek.

Jak trudno byłoby wziąć kod źródłowy do Firefoksa lub Webkita i skomentować wszystkie wywołania renderowania/GUI i stworzyć prawdziwą przeglądarkę bez nagłówka? Czy to zostało zrobione? Czy łatwiej byłoby to zrobić niż innym? Szczerze mówiąc, nie mogę pojąć, dlaczego to się już nie stało, więc domyślam się, że jest to o wiele trudniejsze, niż się spodziewam.

Zakładam, że jeśli uda mi się uzyskać naprawdę bezgłową przeglądarkę o rozsądnych parametrach wydajności (mam dużą flotę serwerów, aby rzucić na ten problem, ale nie jest ona wystarczająco duża dla prawdziwego firefoxa z renderowaniem GUI), to ustawi się .

+0

Czy rozważałeś użycie usługi komercyjnej, takiej jak BrowserMob (http://browsermob.com/performance-testing) lub Gomez (http://www.gomez.com/products-solutions/products/load-testing/). Chociaż nie jest tanie, wydaje się łatwiejsze niż próba zhackowania Firefoksa/Webkita. –

+0

Naprawdę nie zajrzałem do tych usług, ale słyszałem o nich. Jestem pasjonatem tworzenia systemu wewnętrznego, najlepiej z wykorzystaniem technologii Open Source. Mamy wiele serwerów testujących i naprawdę chcę je wykorzystać. Dzięki za sugestię. – user573225

Odpowiedz

1

Być może będziesz w stanie skorzystać z niektórych dostępnych narzędzi do testowania jednostek JavaScript, aby skompletować potrzebne środowisko.

Na przykład stwierdziłem, że ładowanie env.js w rhino daje akceptowalną fałszywą przeglądarkę do testowania większości skryptów JavaScript. W przypadku niektórych atrybutów DOM nie ma takich atrybutów, jak elementy o rozmiarze odnoszącym się do ich okna, ale to nie był poważny problem z mojego doświadczenia.

Zobacz także:

+0

Dzięki, mógłbym spróbować env.js z rhino. To powinno pozwolić mi na integrację z aktualnymi ramami testowania obciążenia opartymi na Javie. Wszelkie pomysły na porównanie z HtmlUnit? Wszelkie doświadczenie z zombie.js? – user573225

+0

Z tego, co pamiętam, kiedy ostatnio oglądałem HTMLUnit, nie miałem obsługi JavaScript, której potrzebowałem, ale to już nie może być prawda. Nie próbowałem zombie.js, ale wygląda na to, że warto to zbadać, dziękuję za wskazanie tego. – Jonah

14

enter image description here

To zostało zrobione przez chłopaków na co http://www.phantomjs.org/.Własnymi słowami:

PhantomJS to bezgłowy WebKit z JavaScript API. Posiada szybką i natywną obsługę różnych standardów internetowych: obsługi DOM, selektora CSS, JSON, Canvas i SVG.

PhantomJS to optymalne rozwiązanie do bezgłowego testowania aplikacji internetowych, skrobania witryn, przechwytywania stron, renderowania SVG, konwertera PDF i wielu innych zastosowań.

PhantomJS jest tworzony przez Ariya Hidayat

+5

co z Gecko? – Rolf

+1

www.slimerjs.org choć nie jest bez głowy bez xvfb –

1

Spójrz na LoadBooster. Jest to usługa testowania obciĘ ... żenia oparta na chmurze, która wykorzystuje bezwzglę dnĘ ... przeglĘ ... darkę PhantomJS do testowania witryn internetowych. Zastrzeżenie: Pracuję dla LoadBooster.