Suomi

Kattava opas tehokkaaseen Cypress-päästä-päähän-testauskehykseen, joka kattaa asennuksen, testien kirjoittamisen, debuggauksen, CI/CD-integraation ja parhaat käytännöt.

Cypress: Täydellinen opas web-sovellusten päästä-päähän-testaukseen

Nykypäivän nopeasti kehittyvässä web-kehityksen maailmassa web-sovellusten laadun ja luotettavuuden varmistaminen on ensisijaisen tärkeää. Päästä-päähän (End-to-End, E2E) -testaus on ratkaisevassa roolissa varmistettaessa, että kaikki sovelluksen osat toimivat saumattomasti yhdessä käyttäjän näkökulmasta. Cypress on noussut johtavaksi E2E-testauskehykseksi tarjoten kehittäjäystävällisen kokemuksen, tehokkaita ominaisuuksia ja erinomaisen suorituskyvyn. Tämä kattava opas johdattaa sinut läpi kaiken, mitä sinun tarvitsee tietää päästäksesi alkuun Cypressin kanssa ja testataksesi tehokkaasti web-sovelluksiasi.

Mitä on Cypress?

Cypress on uuden sukupolven front-end-testaustyökalu, joka on rakennettu modernia webiä varten. Toisin kuin perinteiset testauskehykset, jotka ajavat testejä selaimessa, Cypress toimii suoraan selaimessa, mikä antaa sinulle vertaansa vailla olevan hallinnan ja näkyvyyden sovelluksesi toimintaan. Se on suunniteltu nopeaksi, luotettavaksi ja helppokäyttöiseksi, mikä tekee siitä suositun valinnan kehittäjien ja QA-insinöörien keskuudessa maailmanlaajuisesti. Cypress on kirjoitettu JavaScriptillä ja suoritetaan selaimen sisällä, mikä tekee siitä erittäin suorituskykyisen ja tarjoaa vertaansa vailla olevan pääsyn sovelluksen sisäisiin osiin.

Cypressin käytön keskeiset hyödyt

Asennus ja käyttöönotto

Cypressin käytön aloittaminen on suoraviivaista. Näin asennat sen:

  1. Edellytykset: Varmista, että sinulla on Node.js ja npm (Node Package Manager) asennettuna järjestelmääsi. Voit ladata ne viralliselta Node.js-sivustolta.
  2. Asenna Cypress: Avaa terminaali tai komentokehote, siirry projektihakemistoosi ja suorita seuraava komento:
  3. npm install cypress --save-dev
  4. Avaa Cypress: Kun asennus on valmis, voit avata Cypress Test Runnerin suorittamalla:
  5. npx cypress open

    Tämä komento käynnistää Cypress Test Runnerin, joka tarjoaa graafisen käyttöliittymän testien ajamiseen ja debuggaamiseen.

Ensimmäisen Cypress-testin kirjoittaminen

Luodaan yksinkertainen testi varmistamaan, että verkkosivuston etusivu latautuu oikein. Luo uusi tiedosto nimeltä `example.cy.js` projektisi `cypress/e2e`-hakemistoon.


// cypress/e2e/example.cy.js

describe('Ensimmäinen testini', () => {
  it('Vierailee Kitchen Sink -sivustolla', () => {
    cy.visit('https://example.cypress.io')
    cy.contains('type').click()
    cy.url().should('include', '/commands/actions')

    cy.get('.action-email')
      .type('fake@email.com')
      .should('have.value', 'fake@email.com')
  })
})

Käydään tämä testi läpi:

Aja tämä testi Cypress Test Runnerissa nähdäksesi sen toiminnassa. Sinun pitäisi nähdä selaimen siirtyvän Cypress Kitchen Sink -sivustolle, napsauttavan "type"-linkkiä ja varmistavan URL-osoitteen.

Cypress-komennot

Cypress tarjoaa laajan valikoiman komentoja sovelluksesi kanssa vuorovaikuttamiseen. Tässä on joitakin yleisimmin käytettyjä komentoja:

Nämä ovat vain muutamia monista Cypressin tarjoamista komennoista. Katso Cypressin dokumentaatiosta täydellinen luettelo komennoista ja niiden asetuksista.

Assertiot Cypressissä

Assertioita käytetään varmistamaan sovelluksesi odotettu toiminta. Cypress tarjoaa laajan valikoiman sisäänrakennettuja assertioita, joilla voit tarkistaa elementtien tilan, URL-osoitteen, otsikon ja paljon muuta. Assertiot ketjutetaan Cypress-komentojen perään `.should()`-metodilla.

Tässä on joitakin yleisiä assertioesimerkkejä:

Voit myös luoda omia assertioita omiin tarpeisiisi.

Parhaat käytännöt Cypress-testien kirjoittamiseen

Parhaiden käytäntöjen noudattaminen auttaa sinua kirjoittamaan ylläpidettävämpiä, luotettavampia ja tehokkaampia Cypress-testejä. Tässä on joitakin suosituksia:

Edistyneet Cypress-tekniikat

Stubbaus ja mockaus

Cypress mahdollistaa verkkopyyntöjen ja -vastausten stubbaamisen, mikä antaa sinun simuloida erilaisia skenaarioita ja testata sovelluksesi virheenkäsittelyä. Tämä on erityisen hyödyllistä testattaessa ominaisuuksia, jotka tukeutuvat ulkoisiin API-rajapintoihin tai palveluihin.

Stubataksesi verkkopyynnön voit käyttää `cy.intercept()`-komentoa. Esimerkiksi alla oleva koodi stubbaa GET-pyynnön osoitteeseen `/api/users` ja palauttaa mock-vastauksen:


cy.intercept('GET', '/api/users', {
  statusCode: 200,
  body: [
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Doe' }
  ]
}).as('getUsers')

Voit sitten odottaa siepattua pyyntöä komennolla `cy.wait('@getUsers')` ja varmistaa, että sovelluksesi käsittelee mock-vastauksen oikein.

Local Storagen ja evästeiden käsittely

Cypress tarjoaa komentoja local storagen ja evästeiden kanssa vuorovaikuttamiseen. Voit käyttää näitä komentoja asettaaksesi, hakeaksesi ja tyhjentääksesi local storagea ja evästeitä testeissäsi.

Asettaaksesi local storage -kohteen voit käyttää `cy.window()`-komentoa päästäksesi käsiksi window-objektiin ja käyttää sitten `localStorage.setItem()`-metodia. Esimerkiksi:


cy.window().then((win) => {
  win.localStorage.setItem('myKey', 'myValue')
})

Hakeaksesi local storage -kohteen voit käyttää `cy.window()`-komentoa ja sitten `localStorage.getItem()`-metodia. Esimerkiksi:


cy.window().then((win) => {
  const value = win.localStorage.getItem('myKey')
  expect(value).to.equal('myValue')
})

Asettaaksesi evästeen voit käyttää `cy.setCookie()`-komentoa. Esimerkiksi:


cy.setCookie('myCookie', 'myCookieValue')

Hakeaksesi evästeen voit käyttää `cy.getCookie()`-komentoa. Esimerkiksi:


cy.getCookie('myCookie').should('have.property', 'value', 'myCookieValue')

Tiedostojen latausten käsittely

Cypress tarjoaa lisäosan nimeltä `cypress-file-upload`, joka yksinkertaistaa tiedostojen latauksia testeissäsi. Asenna lisäosa suorittamalla seuraava komento:

npm install -D cypress-file-upload

Lisää sitten seuraava rivi `cypress/support/commands.js`-tiedostoosi:


import 'cypress-file-upload';

Voit sitten käyttää `cy.uploadFile()`-komentoa ladataksesi tiedoston. Esimerkiksi:


cy.get('input[type="file"]').attachFile('example.txt')

IFrame-kehysten kanssa työskentely

IFrame-kehysten testaaminen voi olla hankalaa, mutta Cypress tarjoaa tavan vuorovaikuttaa niiden kanssa. Voit käyttää `cy.frameLoaded()`-komentoa odottaaksesi IFrame-kehyksen latautumista ja sitten `cy.iframe()`-komentoa saadaksesi IFrame-kehyksen document-objektin.


cy.frameLoaded('#myIframe')
cy.iframe('#myIframe').find('button').click()

Cypress ja jatkuva integraatio/jatkuva käyttöönotto (CI/CD)

Cypressin integroiminen CI/CD-putkeesi on olennaista sovelluksesi laadun varmistamiseksi. Voit ajaa Cypress-testejä headless-tilassa CI/CD-ympäristössäsi. Näin se tapahtuu:

  1. Asenna Cypress: Varmista, että Cypress on asennettu projektisi riippuvuudeksi.
  2. Määritä CI/CD: Määritä CI/CD-putkesi ajamaan Cypress-testit jokaisen buildin jälkeen.
  3. Aja Cypress headless-tilassa: Käytä `cypress run` -komentoa ajaaksesi Cypress-testit headless-tilassa.

Esimerkki CI/CD-konfiguraatiosta (käyttäen GitHub Actionsia):


name: Cypress Tests

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  cypress-run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
      - name: Install dependencies
        run: npm install
      - name: Cypress run
        uses: cypress-io/github-action@v5
        with:
          start: npm start
          wait-on: 'http://localhost:3000'

Tämä konfiguraatio ajaa Cypress-testit aina, kun koodia pushataan `main`-haaraan tai luodaan pull-pyyntö `main`-haaraa vastaan. `cypress-io/github-action` -toiminto yksinkertaistaa Cypress-testien ajamista GitHub Actionsissa.

Cypress-testien debuggaus

Cypress tarjoaa erinomaiset debuggaustyökalut, jotka auttavat sinua tunnistamaan ja korjaamaan ongelmia testeissäsi. Tässä on muutamia vinkkejä Cypress-testien debuggaamiseen:

Cypress vs. muut testauskehykset

Vaikka Cypress on tehokas päästä-päähän-testauskehys, on tärkeää ymmärtää, miten se vertautuu muihin suosittuihin vaihtoehtoihin. Tässä on lyhyt yleiskatsaus:

Kehyksen valinta riippuu projektisi erityistarpeista ja vaatimuksista. Cypress on erinomainen valinta moderneille web-sovelluksille, jotka vaativat nopeaa, luotettavaa ja kehittäjäystävällistä päästä-päähän-testausta.

Tosielämän esimerkkejä Cypressin käytöstä

Tarkastellaan muutamaa tosielämän esimerkkiä siitä, miten Cypressia voidaan käyttää erilaisten web-sovellusten testaamiseen:

Verkkokauppasovelluksen testaaminen

Voit käyttää Cypressia testaamaan erilaisia käyttäjäkulkuja verkkokauppasovelluksessa, kuten:

Tässä on esimerkki Cypress-testistä, joka varmistaa, että käyttäjä voi onnistuneesti lisätä tuotteen ostoskoriinsa:


it('Lisää tuotteen ostoskoriin', () => {
  cy.visit('/products')
  cy.get('.product-card').first().find('button').click()
  cy.get('.cart-count').should('have.text', '1')
})

Sosiaalisen median sovelluksen testaaminen

Voit käyttää Cypressia testaamaan käyttäjäinteraktioita sosiaalisen median sovelluksessa, kuten:

Tässä on esimerkki Cypress-testistä, joka varmistaa, että käyttäjä voi onnistuneesti luoda uuden julkaisun:


it('Luo uuden julkaisun', () => {
  cy.visit('/profile')
  cy.get('#new-post-textarea').type('Hei, maailma!')
  cy.get('#submit-post-button').click()
  cy.get('.post').first().should('contain', 'Hei, maailma!')
})

Pankkisovelluksen testaaminen

Pankkisovelluksissa Cypressia voidaan käyttää testaamaan kriittisiä toiminnallisuuksia, kuten:

Testi varojen siirron varmistamiseksi voisi näyttää tältä (asianmukaisella stubbauksella tietoturvan vuoksi):


it('Siirtää varoja onnistuneesti', () => {
  cy.visit('/transfer')
  cy.get('#recipient-account').type('1234567890')
  cy.get('#amount').type('100')
  cy.intercept('POST', '/api/transfer', { statusCode: 200, body: { success: true } }).as('transfer')
  cy.get('#transfer-button').click()
  cy.wait('@transfer')
  cy.get('.success-message').should('be.visible')
})

Yhteenveto

Cypress on tehokas ja monipuolinen päästä-päähän-testauskehys, joka voi auttaa sinua varmistamaan web-sovellustesi laadun ja luotettavuuden. Sen kehittäjäystävällinen API, tehokkaat ominaisuudet ja erinomainen suorituskyky tekevät siitä suositun valinnan kehittäjien ja QA-insinöörien keskuudessa maailmanlaajuisesti. Noudattamalla tässä oppaassa esitettyjä parhaita käytäntöjä voit kirjoittaa tehokkaita Cypress-testejä, jotka auttavat sinua löytämään virheet varhaisessa kehitysvaiheessa ja toimittamaan korkealaatuista ohjelmistoa käyttäjillesi.

Kun web-sovellukset kehittyvät jatkuvasti, päästä-päähän-testauksen merkitys vain kasvaa. Cypressin omaksuminen ja sen integroiminen kehitystyönkulkuusi antaa sinulle mahdollisuuden rakentaa vankempia, luotettavampia ja käyttäjäystävällisempiä web-kokemuksia.