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ę .
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. –
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