tällä viikolla sukelsin automaattiseen testaukseen Astelevyllä.Koska rakentaminen haara epäonnistuu paljon viime aikoina aikalisät ja muut asiat, aion yrittää selvittää lisää ja korjata tämän.

mikä on automatisoitu testaus.

automatisoitu testaus helpottaa elämää, kun se on määritetty oikein ja hyödyllinen :)automatisoitu testaus käyttää ohjelmistoja / työkaluja koodin testaamiseen nopeasti. Pystytät koelaukut ja ne suoritetaan työkaluilla. Ihmisten vuorovaikutusta ei tarvitse testata sen jälkeen, kun kirjoitit ne jutut. Se voi vertailla, suorittaa enter tiedot testien kautta.

yleisimmät testit ja niiden erot.

kaksi yleisintä testimenetelmää törmäsin tähän mennessä areUnit-testaukseen ja E2E-testaukseen.

yksikkötestaus

yksikkötestaus keskittyy yksittäisten yksiköiden testaamiseen.Ajattele tätä kuin funktiota tai pientä osaa koodista.Pilkkaat (väärennettyjä) palveluita, verkostoa ja muita resursseja ja teet kaikki testaukset erillään.
Angular Karma-ja Jasmine-kehyksissä käytetään enimmäkseen towriittiyksikkötestejä.

E2E-testaus

E2E-testauksella voit käydä GUI: n läpi kuten käyttäjä tekee.Napit, sivut,valikot, CRUD. (ei tuotannossa)
yleisin käyttö E2E-testauksessa kulmikkaalla on Seleeniverkkoajuri Astelevyllä.
joten koodin testaamiseen on hyödyllistä käyttää yksikkötestejä.Jos sivustosi toimivuutta haluaa testata, kannattaa kokeilla E2E: tä.

miksi testata?

tarkoituksena on kohdata ongelmat nopeasti.E2E-testausta varten: et myöskään halua testata klikkaamalla vaikka näyttöjä nähdäksesi, toimiiko painike edelleen vai lataako sivu itse.Se olisi paljon työtä ja ei ole johdonmukaista, jos se olisi doneby eri kehittäjille.

Astelevyn käyttöönotto.

astractorin asentaminen.

asentaaksesi protractorin suoritat komentoriviltä seuraavat:
asennat protractorin ajamalla:

npm install -g protractor

sen jälkeen asennat seleenin webdriver managerin.

webdriver-manager update

webdriver-manager start

Rakenna testi.

tarvitset ensin kaksi tiedostoa luodaksesi testin, spec-tiedoston ja config-tiedoston.
asetustiedostossa määrität spec-tiedostojen sijainnin. Se sisältää myös selaimen, jota haluat käyttää testaamiseen, oletuksena on Chrome.Seleeni serveraddress on mukana kommunikoida.Ja myös puitteet on asetettu, tämä on Jasmine.Sitten se näyttää jotakuinkin tältä:

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

rakentaakseen testin täytyy määrittää tapaus. Kokoat jutun spec-tiedostoon. Ensin määritetään, mitä testin on do.In tässä tapauksessa tarkistat, näyttääkö aloitussivusi tervetuliaisviestin.

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

ensin kuvataan testattava sivu tai elementti, tässä esimerkissä se on aloitussivu. Kuvaile on nimi testsuite ja Jasmine syntaksi.Se sisältää virtauksen päästä päähän. Tässä ovat ” it ” – koetapaukset.
sitten päätetään, mitä ” sen ” pitää tehdä. ”Se” on maailmanlaajuinen funktio Jasmine. Virtauksessa voi olla useita ” it ” – testilaukkuja.(describe)
tässä tapauksessa tarkistat, oliko aloitussivu saanut tervetuliaisviestin näkyviin ja on siksi odotetusti saatavilla. (totta, toBeThruthy) tarkista myös, onko teksti sama kuin Aloitussivun teksti ( toEqual(’yourText’)

Async odota.

JavaScript on asynkroninen, et tiedä mitä skripti suorittaa ensin. Astelevyt ovat synkronisia, askeleesi ovat tietyssä suoritusjärjestyksessä. Napsauta tätä, sitten tuota painiketta.
Astevirrat on kirjoitettu lupauksella. Asterractor voi hoitaa lupauksen odottamalla, kunnes se on valmis.

async Waiten syntaksi muistuttaa paljon TypeScript-syntaksia.
asynkroninen funktio voidaan kääriä sanoilla ”async” ja ”odottaa”.
odota käytetään ennen jonoa, jota haluamme odottaa.

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

mikä oli suurin ongelma rakenteissani?

testini epäonnistuivat paljon aikalisillä. Käytin async odottaa ja oli vielä joitakin ongelmia. Kuten näette, syntaksi on lähes sama TypeScript async / odota.

löysin tämän protractortest.org sivusto.

älä unohda kytkeä control_flow pois päältä, et voi käyttää Async/Waiten ja ohjausvirran yhdistelmää: async / wait aiheuttaa ohjausvirran epäluotettavaksi (katso github-ongelma). Joten jos async / odottaa missä tahansa spec, sinun pitäisi käyttää SELENIUM_PROMISE_MANAGER: false

lisäsin tämän asetukseen ja debuggasin jäljellä olevat virheet.
rakennan jossain odotus / uniaika välillä joitakin testejä ja se toimii hyvin.

Vastaa

Sähköpostiosoitettasi ei julkaista.