Używam Jasmine do testowania jednostkowego, ale ostatnio szukałem narzędzia do przeprowadzania testów funkcjonalnych. Nazwy, o których często wspomniałem, to PhantomJS/CasperJS, Selenium/WebDriver, Cucumber, Capybara, ... Jednak wygląda na to, że są bezgłowe - a jednym z wymogów, które mi dano, jest to, że Testy są przeprowadzane bezpośrednio w przeglądarce, ponieważ konieczne jest sprawdzenie rzeczywistego zachowania przeglądarki na dowolnym z wielu systemów, w tym na iPadzie.Testowanie funkcjonalne JavaScript w przeglądarce
Kolejnym wymaganiem jest to, że testy są na wysokim poziomie i łatwe do napisania w JavaScript. (Eksperymentowałem trochę z Selenium/WebDriver, używając obiektu FirefoxDriver do wywołania instancji przeglądarki, jednak opcje językowe to Java, Ruby, Python i C#.)
Szorstki zarys tego, czego szukam:
- Testowanie funkcjonalności aplikacji internetowej w rzeczywistej przeglądarce. (Bez testów bez głowy).
- Testy można wykonywać na wielu różnych systemach operacyjnych, w tym na iPadzie.
- Testy będą jednak wykonywane tylko w przypadku instalacji Firefoksa. Inne przeglądarki nie są obecnie odpowiednie.
- Testy są napisane w JavaScript.
Jeśli nie ma już wielu narzędzi do wykonania czegoś, co wydaje się być podstawowym zadaniem, moja konkluzja wydaje się być taka, że ludzie nie stosują takiego podejścia do testowania - a jeśli tak, to jest prawie z pewnością dobry powód.
Więc czy przeoczyłem narzędzia, które zrobią to, co chcę, czy też funkcjonalne testy aplikacji internetowej po prostu nie są wykonywane w rzeczywistej przeglądarce przy użyciu JavaScript z jakiegoś powodu?
QUnit? Czy tęskniłem za tym, że wykonuje testy funkcjonalne w przeglądarce? Dzięki za sugestię, Pete! – Rick
Z pewnością MOŻE. Został zaprojektowany do testowania jednostkowego, ale można także przeprowadzić test integracji i funkcjonalny. – Pete
Jeśli szukasz funkcji qUnit do testowania funkcjonalnego, możesz sprawdzić FuncUnit, która bazuje na qUnit i zaprojektowana specjalnie do testowania funkcjonalnego! :) (http://funcunit.com/) – rinogo