Testauksen hallinta: JUnit, Mockito ja integraatiotestit · Oppitunti

Testidatan hallinta

Kehittäkää strategioita testidatan luomiseen, hallintaan ja siivoamiseen, jotta E2E-testit voidaan suorittaa toistettavasti.

Oppitunti 3/411 vaihetta

Testidatan hallinta on ilmainen Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Testauksen hallinta: JUnit, Mockito ja integraatiotestit-kurssilla on yhteensä 4 oppituntia.

E2E-testidatan perusteet

End-to-End-testauksessa (E2E) testidata on ratkaisevan tärkeää. Se tarkoittaa tietoja, joita sovelluksesi käyttää testin aikana, kuten käyttäjätilejä, tuotetietoja tai tilaushistoriaa.

Ilman hyvää testidataa E2E-testeistäsi tulee epäluotettavia. Kuvittele testaavasi verkkokaupan kassatoimintoa ilman ostoskorissa olevaa tuotetta tai rekisteröityä käyttäjää!

E2E-testidatan haasteet

E2E-testien testidatan hallintaan liittyy erityisiä haasteita:

  • Monimutkaisuus: E2E-testit käsittelevät usein järjestelmän useita osia, mikä edellyttää monimutkaisia data-asetuksia.
  • Riippuvuudet: Data voi riippua ulkoisista järjestelmistä tai muista moduuleista, mikä vaikeuttaa sen hallintaa.
  • Tila: Testit voivat jättää järjestelmän odottamattomaan tilaan, mikä vaikuttaa seuraaviin testeihin.
  • Siivous: Datan poistaminen testin jälkeen voi olla hankalaa, mutta se on välttämätöntä toistettavuuden kannalta.

Datan luominen API:n kautta

Yleinen strategia on luoda testidata ohjelmallisesti sovelluksesi omien API-rajapintojen avulla (esimerkiksi REST API -päätepisteillä). Näin data kulkee saman validointilogiikan läpi kuin oikean käyttäjän data.

Kokeile suorittaa tämä esimerkki, joka simuloi käyttäjän luomista API:n kautta:

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
  public static void main(String[] args) throws IOException, InterruptedException {
    String jsonPayload = "{\"username\": \"testuser\", \"email\": \"test@example.com\"}";
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/users"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println("API Call Status: " + response.statusCode());
    System.out.println("Response Body: " + response.body());
  }
}

Data tietokantaskripteillä

Joissakin E2E-testeissä data täytyy ehkä lisätä suoraan tietokantaan SQL-skriptien avulla. Tämä on nopeaa, mutta ohittaa sovelluksesi liiketoimintalogiikan.

Käytä tätä menetelmää harkiten, tyypillisesti perustietojen luomiseen tai silloin, kun API:n kautta luominen on liian hidasta tai monimutkaista.

INSERT INTO users (id, username, email)
VALUES (101, 'db_user', 'db@example.com');

INSERT INTO products (id, name, price)
VALUES (201, 'Test Product A', 19.99);

Testidatatehtaiden käyttäminen

Testidatatehtaat (tai generaattorit) ovat työkaluja tai mukautettuja luokkia, jotka automatisoivat realistisen ja vaihtelevan datan luomisen. Fakerin kaltaiset kirjastot voivat luoda nimiä, osoitteita ja paljon muuta.

Näin voit luoda monipuolisia testitapauksia ilman manuaalista työtä. Tässä on yksinkertainen esimerkki tehtaan toimintaperiaatteesta:

// Imagine a UserFactory class
class User {
    String username;
    String email;
    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }
    @Override
    public String toString() {
        return "User: " + username + " (" + email + ")";
    }
}

class UserFactory {
    private static int counter = 0;
    public static User createRandomUser() {
        counter++;
        return new User("user_" + counter, "user" + counter + "@example.com");
    }
}

public class Main {
  public static void main(String[] args) {
    User user1 = UserFactory.createRandomUser();
    User user2 = UserFactory.createRandomUser();
    System.out.println(user1);
    System.out.println(user2);
  }
}

Eristä testidata

Yksi tärkeimmistä periaatteista on testidatan eristäminen. Jokaisen testin tai testisarjan tulisi mielellään toimia omalla, yksilöllisellä datakokonaisuudellaan.

Tämä estää testejä häiritsemästä toisiaan, jolloin ne ovat luotettavampia ja helpompia selvittää. Jaettu data voi johtaa epävakaisiin testeihin, jotka läpäisevät tai epäonnistuvat arvaamattomasti.

Ympäristökohtainen data

Testidatan täytyy usein olla erilaista eri ympäristöissä (esimerkiksi kehitys-, staging- ja tuotantoympäristössä). Joissakin ympäristöissä voi olla erityisiä määrityksiä tai ulkoisia palveluintegraatioita, jotka edellyttävät yksilöllistä dataa.

Hallitse tätä ympäristömuuttujien, määritystiedostojen tai kullekin ympäristölle tarkoitettujen erillisten datakokonaisuuksien avulla.

Datan siivouksen tärkeys

Testidatan luominen on vasta puolet työstä; sen siivoaminen on yhtä tärkeää. Testin suorittamisen jälkeen kaikki sen luoma data pitäisi poistaa.

Miksi siivous on niin tärkeää?

  • Varmistaa, että testit ovat todella toistettavia.
  • Estää testausympäristön saastumisen datalla.
  • Välttää odottamattomat sivuvaikutukset seuraavissa testeissä.

Ohjelmallinen siivous

Aivan kuten luot datan ohjelmallisesti, myös se pitäisi poistaa ohjelmallisesti. Tämä voi tarkoittaa 'delete'-API-päätepisteen kutsumista tai SQL-DELETE-lauseiden suorittamista.

Siivous suoritetaan usein @AfterEach- tai @AfterAll-tyyppisessä metodissa (testauskehyksestä riippuen), jotta se varmasti suoritetaan testien päätyttyä.

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
  public static void main(String[] args) throws IOException, InterruptedException {
    String userIdToDelete = "testuser"; // Or an ID obtained during creation
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/users/" + userIdToDelete))
        .DELETE()
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println("Delete Status: " + response.statusCode());
  }
}

Testidatakysely

Mitkä seuraavista ovat hyviä käytäntöjä testidatan hallintaan End-to-End-testeissä (E2E)?

Kertaus: testidatan hallinta

Olet oppinut, että tehokas testidatan hallinta on välttämätöntä vakaille ja toistettaville E2E-testeille. Käsittelimme seuraavia aiheita:

  • Datan luomisen strategiat (API:t, tietokantaskriptit, tehtaat).
  • Datan eristämisen ja ympäristökohtaisen datan tärkeys.
  • Datan siivoamisen välttämättömyys testien jälkeen.

Näitä strategioita soveltamalla voit rakentaa vankempia ja luotettavampia E2E-testikokonaisuuksia!

Aloita maksutta

Opi Testauksen hallinta: JUnit, Mockito ja integraatiotestit tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Testidatan hallinta” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppimispolun 3 oppituntia, myös oppitunnin “Testidatan hallinta”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Testauksen hallinta: JUnit, Mockito ja integraatiotestit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Testidatan hallinta”?

Kehittäkää strategioita testidatan luomiseen, hallintaan ja siivoamiseen, jotta E2E-testit voidaan suorittaa toistettavasti. Harjoittelet Testauksen hallinta: JUnit, Mockito ja integraatiotestit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Testauksen hallinta: JUnit, Mockito ja integraatiotestit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Testidatan hallinta”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppitunnilla?

Kyllä. Jokainen Testauksen hallinta: JUnit, Mockito ja integraatiotestit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. E2E-testaus ja integraatiotestaus
  2. Yleiskatsaus E2E-testaustyökaluihin
  3. Testidatan hallinta
  4. Luotettavien E2E-testien kirjoittaminen: häilyvyyden torjuminen
← Takaisin: Testauksen hallinta: JUnit, Mockito ja integraatiotestit