Denne uken dove jeg inn i automatisert testing med Vinkelmåler.Siden å bygge en gren mislykkes mye i det siste med timeouts og otherissues, skal jeg prøve å finne ut mer og fikse dette.

hva er automatisert testing.

Automatisert testing gjør livet enklere når det er satt opp riktig og nyttig:) Automatisert testing bruker programvare / verktøy for å teste kode raskt. Du setter opp testtilfeller og de utføres gjennom verktøyet. Ingen menneskelig interaksjon for å teste er nødvendig etter at du skrev disse tilfellene. Det kan sammenligne, utføre en enter data gjennom testene.

De vanligste testene og deres forskjeller.

de to vanligste testmetodene jeg kjørte inn så langt erunit testing OG E2E testing.

Enhetstesting

Enhetstesting er fokusert på testing av enkeltenheter.Tenk på dette som en funksjon eller en liten del av koden.Du håner (falske) tjenester, nettverk og andre ressurser og gjør all testing isolert.
I Angular Karma og Jasmine rammeverk er mest brukt tilskriv enhet tester.

e2e testing

med e2e testing kan du gå GJENNOM GUI som en bruker gjør.Klikke knapper, sider, menys, CRUD. (ikke i produksjon)
Mest vanlig bruk FOR e2e testing Med Vinkel Er Selen web-driver med Vinkelmåler.
Så for å teste koden din er det nyttig å bruke enhetstester.Hvis du vil teste funksjonell bruk av nettstedet ditt, bør DU prøve E2E.

Hvorfor teste?

hensikten er å møte problemer raskt.FOR E2E testing: Også du ikke ønsker å teste ved å klikke om skjermer for å se ifa knappen fortsatt fungerer eller en side laster selv.Det ville være mye arbeid og er ikke konsekvent hvis det ville bli gjortav forskjellige utviklere.

Sette Opp Vinkelmåler.

hvordan installere vinkelmåler.

for å installere vinkelmåler kjører du følgende fra kommandolinjen:
du installerer vinkelmåler ved å kjøre:

npm install -g protractor

deretter installerer du webdriver manager for selen.

webdriver-manager update

webdriver-manager start

Bygg en test.

først trenger du to filer for å lage en test, en spec-fil og config-fil.
i config-filen konfigurerer du plasseringen av spec-filene. Den inneholder også nettleseren du vil bruke til å teste, standard Er Chrome.Selen serveraddress er inkludert for å kommunisere.Og også rammen er satt, dette Er Jasmine.Så ser det ut som dette:

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

for å bygge en test må du bestemme en sak. Du bygger saken i spec-filen. Først bestemmer du hva testen må do.In i dette tilfellet sjekker du om destinasjonssiden din viser velkomstmeldingen.

 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') })})

først beskriver du siden eller elementet du vil teste, i dette eksemplet er det destinasjonssiden. Beskriv er navnet på testsuite og Jasmine syntaks.Den inneholder strømmen fra ende til slutt. Innenfor dette er ‘ det ‘ testtilfeller.
så bestemmer du hva ‘ det ‘ må gjøre. ‘Det’ er en global funksjon Fra Jasmine. Du kan ha flere ‘ it ‘ testtilfeller i flyten.(beskriv)
i dette tilfellet sjekker du om destinasjonssiden hadde fått velkomstmeldingen vist og derfor er tilgjengelig som forventet. (true, toBeThruthy) du sjekker også om teksten er den samme som teksten på destinasjonssiden (toEqual (‘yourText’)

Async Venter.

JavaScript er asynkron, du vet ikke hvilket skript som skal utføres først. Vinkelmåler flyter er synkron, trinnene dine er i en bestemt rekkefølge. Klikk på denne, så den knappen.
Vinkelmåler flyter er skrevet med et løfte. Vinkelmåleren kan handtere lofte med a vente til den er fullfort.

syntaksen til async await er mye som TypeScript-syntaksen.
den asynkrone funksjonen kan pakkes med ‘asynkron’ og ‘venter’.
Await brukes før linjen som vi ønsker å vente på.

 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') })})

hva var hovedproblemet med mine bygg?

mine tester mislyktes mye med timeouts. Jeg brukte async avvente og hadde fortsatt noen problemer. Som du kan se, er syntaksen nesten den samme Med TypeScript async / await.

jeg fant dette på protractortest.org nettstedet.

ikke glem å slå av control_flow, du kan ikke bruke en blanding av async/await og kontrollflyten: async / await fører til at kontrollflyten blir upålitelig(se github-problemet). Så hvis du async/venter hvor som helst i en spec, bør DU bruke SELENIUM_PROMISE_MANAGER: false

jeg la dette til config og feilsøkt venstre over feil.
jeg bygger litt vent / sovetid mellom noen tester og det går bra.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.