w tym tygodniu przejrzałem automatyczne testowanie z kątomierzem.Ponieważ budowanie gałęzi ostatnio często zawodzi z timeoutami i innymi problemami, postaram się dowiedzieć więcej i to naprawić.

co to jest automatyczne testowanie.

automatyczne testowanie ułatwia życie, gdy jest poprawnie skonfigurowane i użyteczne :)automatyczne testowanie wykorzystuje oprogramowanie/Oprzyrządowanie do szybkiego testowania kodu. Konfigurujesz walizki testowe, a te są wykonywane za pomocą oprzyrządowania. Po napisaniu tych spraw nie jest wymagana żadna ludzka interakcja. Może porównywać, wykonywać dane wejściowe poprzez testy.

najczęstsze testy i ich różnice.

dwie najczęstsze metody testowania, na które do tej pory wpadłem, to testowanie unit i testowanie E2E.

testowanie jednostkowe

testowanie jednostkowe koncentruje się na testowaniu pojedynczych jednostek.Pomyśl o tym jak o funkcji lub małej części kodu.Wyśmiewasz (fałszywe) usługi, sieć i inne zasoby i wykonujesz wszystkie testy odizolowane.
w Angular Karma i jaśmin framework są najczęściej używane do testów jednostkowych.

testowanie E2E

dzięki testowaniu e2e możesz przeglądać GUI tak, jak robi to użytkownik.Klikanie przycisków, stron, menu, CRUD. (Nie w produkcji)
Najczęstszym zastosowaniem do testowania E2E z Angularem jest Selenium web-driver z kątomierzem.
więc do testowania kodu przydatne jest użycie testów jednostkowych.Jeśli chcesz przetestować funkcjonalność swojej strony, powinieneś spróbować E2E.

dlaczego testować?

celem jest szybkie napotkanie problemów.Do testowania E2E: również nie chcesz testować, klikając chociaż ekrany, aby zobaczyć przycisk ifa nadal działa lub strona ładuje się samodzielnie.To byłoby dużo pracy i nie jest spójne, jeśli byłoby doneby różnych programistów.

Ustawianie kątomierza.

jak zainstalować kątomierz.

aby zainstalować kątomierz, uruchom następujące polecenie z wiersza poleceń:
instalujesz kątomierz, uruchamiając:

npm install -g protractor

następnie instalujesz webdriver manager dla selenium.

webdriver-manager update

webdriver-manager start

Zbuduj test.

najpierw potrzebujesz dwóch plików do utworzenia testu, pliku spec i pliku konfiguracyjnego.
w pliku konfiguracyjnym konfigurujesz lokalizację plików spec. Zawiera również przeglądarkę, której chcesz użyć do testowania, domyślnie jest Chrome.Selenium serveraddress jest dołączony do komunikacji.A także ramy są ustawione, to jest Jasmine.Następnie wygląda to mniej więcej tak:

 // conf.jsexports.config = { framework: 'jasmine', seleniumAddress: 'http://localhost:4444/wd/hub', specs: }

aby zbudować test, musisz określić przypadek. Budujesz sprawę w pliku spec. Najpierw określasz, co test musi do.In w tym przypadku sprawdzasz, czy Twoja strona docelowa wyświetla komunikat powitalny.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message', () => { expect(page.containsElement('#welcome')).toBeTruthy() expect(page.getElementText('#welcome')).toEqual('Welcome') })})

najpierw opisujesz stronę lub element, który chcesz przetestować, w tym przykładzie jest to strona docelowa. Describe to nazwa składni testsuite i Jasmine.Zawiera przepływ od końca do końca. W tym są ” it ” testbases.
następnie określasz, co ” to ” musi zrobić. „It” jest funkcją globalną jaśminu. Możesz mieć wiele testów ” it ” w przepływie.(opisz)
w tym przypadku sprawdzasz, czy strona docelowa ma wyświetlony komunikat powitalny i dlatego jest dostępna zgodnie z oczekiwaniami. (true, toBeThruthy) sprawdzasz również czy tekst jest taki sam jak tekst na stronie docelowej (toEqual (’yourText’)

asynchroniczny.

JavaScript jest asynchroniczny, nie wiesz jaki skrypt wykona pierwszy. Przepływy kątomierza są synchroniczne, twoje kroki są w określonej kolejności wykonania. Kliknij ten, a następnie ten przycisk.
przepływy kątomierza są napisane obietnicą . Kątomierz może obsłużyć obietnicę z poczekaj, aż zostanie zakończona.

składnia asynchroniczna jest podobna do składni maszynopisu.
funkcję asynchroniczną można zapakować w „asynchroniczne” i „oczekujące”.
Await jest używany przed linią, na którą chcemy czekać.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message',async () => { expect(await page.containsElement('#welcome')).toBeTruthy() expect(await page.getElementText('#welcome')).toEqual('Welcome') })})

jaki był główny problem z moimi kompilacjami?

moje testy zawiodły z czasem. Użyłem asynchronicznego oczekiwania i nadal miałem pewne problemy. Jak widać, składnia jest prawie taka sama z maszynopisu async/waiting.

znalazłem to na protractortest.org miejsce.

nie zapomnij wyłączyć control_flow, nie możesz użyć kombinacji async/await i przepływu sterowania: async / await powoduje, że przepływ sterowania staje się zawodny (zobacz problem z github). Więc jeśli asynchronizujesz / oczekujesz gdziekolwiek w specyfikacji, powinieneś użyć SELENIUM_PROMISE_MANAGER: false

dodałem to do konfiguracji i debugowałem pozostałe błędy.
buduję jakiś czas oczekiwania / snu między niektórymi testami i działa dobrze.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.