2016-07-22 33 views
5

Przede wszystkim przepraszam, jeśli marnuję twój czas, ponieważ wygląda to na prosty krok, którego nie jestem w stanie wymyślić nawet po pewnych badaniach.Automatyzacja testowania TestStack.White UI w Windowsie pod Windows przy użyciu Jenkinsa

Ok, oto, co próbuję osiągnąć, napisałem kilka testów interfejsu użytkownika przy użyciu TestStack.White, chciałbym wykonać to na Jenkins Slave jako inny użytkownik, ponieważ aplikacja zachowuje się inaczej w zależności od ról, które są przypisane do nich w usłudze Active Directory.

Więc po wykonaniu trochę wyszukiwania w google znalazłem następujące linki, które są istotne dla tego, co próbuję osiągnąć.

Wygląda na to, że muszę zainstalować TightVNC na Jenkins niewolnika i należy podłączyć do niewolniczej od Jenkins Mistrza i wykonać testy na niewolnika .

Co prowadzi mnie do pierwszego pytania, jak mogę to osiągnąć z pracy Jenkinsa?

Informacje o logowaniu się jako różni użytkownicy Rozumiem, że mogę użyć "autologon.exe", aby to osiągnąć. Zastanawiam się, jak mogę to zrobić w Windows Slave z Jenkins Master. Moja firma nie zezwala na SSH na instancje Windows (maszyny slave), nie mogę zdalnie wykonać SSH z Jenkins Master.

Rozumiem, że mogę nie patrzeć na to poprawnie, więc każda pomoc będzie bardzo ceniona.

Z góry dziękujemy za poświęcony czas i porady.

+1

Myślę, że głównym problemem z uruchomieniem testów interfejsu użytkownika bez nadzoru na serwerze jest potrzeba uruchomienia interaktywnej sesji. To znaczy. musi być zalogowany użytkownik w sesji interaktywnej, która nie jest zablokowana lub w inny sposób "bez głowy", w przeciwnym razie wiele rzeczy po prostu nie działa. Używanie maszyn wirtualnych jest często odpowiednim podejściem, ale dodaje jeszcze więcej komplikacji. W naszym własnym produkcie rozwiązaliśmy problem, nie wykonując w ogóle testów interfejsu użytkownika, ale zamiast tego syntetyzujemy nasze własne abstrakcyjne zdarzenia wejściowe w odpowiedniej kolejności, aby reszta kodu działała właściwie cienko, a tym samym pomniejszała problem z sesją. – Joey

Odpowiedz

1

Dzięki wszystkim za komentarze i odpowiedzi, w zasadzie to, co zrobiłem, aby to działa na mnie,

  1. Ustanowienie połączenia VNC z klientem VNC na Jenkins niewolnika, to nie była wykonywana ręcznie przez Jenkinsa.
  2. Użyj aplikacji o nazwie "Kofeina", aby zapobiec blokowaniu się okien, symuluje zdarzenie kluczowania na F15 (co xx sekund), aby nie było przerwy w testowaniu zadania w moim projekcie.
  3. Uruchamia połączenie JNLP z aplikacją Jenkins Master i aplikacją "Kofeina" jako częścią logowania do systemu Windows za pośrednictwem połączenia VNC.
  4. Zamknij się z połączenia VNC (bez wylogowywania), zostało to wykonane ręcznie, nie przez Jenkins.
  5. Pozwól, aby kompilacja działała jak różni użytkownicy używający PSExec na niewolnikach.

Wydaje się, że działa dobrze, jak dotąd, nie odpowiedziałem wcześniej, ponieważ chciałem monitorować pracę przez kilka dni przed opublikowaniem mojej odpowiedzi tutaj.

1

Przygotowuję się do zrobienia czegoś podobnego, ale buduję warstwę komunikacyjną w naszej aplikacji do automatyzacji interfejsu użytkownika, aby nasza maszyna do budowania (nasza firma wykonywała własną maszynę do kompilacji) mogła wysyłać żądanie TCP w tę iz powrotem. Zamierzam wdrożyć automatyzację interfejsu użytkownika i kompilację do udziału, a następnie uruchomić maszynę wirtualną. Szablon maszyn budujących będzie miał skrypt uruchamiania, który uruchamia obie nasze aplikacje z udziału. Gdy maszyna wirtualna zostanie uruchomiona, mam zamiar komunikować się z aplikacją Automatyzacji interfejsu użytkownika, aby poinformować o jej uruchomieniu i poinformuje mnie, kiedy to zrobię, aby umożliwić zburzenie maszyny wirtualnej. Zamierzam zapisać wszystkie wyniki testu w udziale w celach raportowania.

Wiem, że to nie odpowiada bezpośrednio na twoje pytanie, ale takie podejście jest znane mi z wielu osób pracujących w różnych strukturach automatyzacji.

Gdybym miał to zrobić w Jenkinsie, zajrzałbym do systemu wtyczek Jenkins. System wtyczek, o ile mi wiadomo, korzysta z Javy, więc powinieneś być w stanie stworzyć pewien rodzaj warstwy komunikacyjnej i interfejs z jakimś typem maszyny wirtualnej. Jeśli nie masz opcji, aby uruchomić i zatrzymać maszynę wirtualną, będziesz musiał sprawdzić proces uruchamiania i zatrzymywania na zdalnym komputerze podczas maskowania jako użytkownik. Wiem, że można to zrobić w języku C#, ale nigdy nie zaglądałem do niego w Javie.