Mitä tehdä, kun eksyt API-testauksessa?

(12. toukokuuta 2020)

Jos eivät vielä kirjoita testejä, sinun pitäisi aloittaa. Testit parantavat koodisi laatua, vähentävät virheitä ja pakottavat sinut todennäköisesti ajattelemaan enemmän suunnittelusta ja laadusta. Itse asiassa vaikeinta on aloittaa ja selvittää, minkä tyyppisiä testejä kirjoitetaan.

Joten aloitat Googlen ja löydät paljon testityyppejä: yksikkö, integraatio, hyväksyminen, toiminnallinen, järjestelmä, savu, e2e… Jotkut resurssit sanovat, että kattavuutesi on oltava 100\%, jotkut sanovat, että täysi kattavuus ei tarkoita, että koodisi on testattu kokonaan. Silloinkin kun päätät, minkä tyyppisiä testejä haluat käyttää, voi olla vaikea päättää, kuinka testata tiettyä logiikkaa sovelluksessasi.

Älä anna periksi! Meillä on joitain vinkkejä, jotka olemme oppineet matkan varrella, ja toivottavasti se helpottaa elämääsi.

Älä yritä testata kaikkea vain toiminnallisilla testeillä

Tämä on numero yksi virhe kehittäjät tekevät testauksessa. Joten selvennetään ensin.

Toiminnalliset testit REST Apissa tarkoittavat pyynnön lähettämistä yhdelle päätepisteelle ja sen vastauksen vahvistamista. Jos reitilläsi on useita erilaisia ​​tapauksia, joissa verkkotunnuslogiikka voi mennä, sinun on kirjoitettava jokaiselle tapaukselle erillinen testi varmistaaksesi, että ne kaikki toimivat.

Tämä voi toimia jopa hyvin pienessä sovelluksessa, mutta kuten heti kun sovelluksesi kasvaa, sitä on erittäin vaikea ylläpitää ja se on hyvin hidasta. Jossain vaiheessa menetät enemmän aikaa testien korjaamiseen ja ylläpitoon kuin tosiasiallisesti sovelluksesi kanssa työskenteleminen. Testien ei pitäisi olla kyse siitä. Opimme sen kovalla tavalla.

Testipyramidi

Testipyramidi on kaavio, joka kertoo meille, kuinka paljon testausta sinun pitäisi kirjoittaa kullekin kerrokselle.

Alemmat kerrokset ovat nopeampia, ja siksi meidän on peitettävä mahdollisimman paljon yksikkö- ja integraatiotestejä. Mitä enemmän korkean tason saat, sitä vähemmän testejä sinulla pitäisi olla. Kuulet erilaisia ​​nimityksiä yksittäisille tasoille, mutta niiden takana oleva logiikka on sama.

Testipyramidi

Yksikkötestit

Aloitetaan siis alusta – Yksikkötestit. Tässä on määritelmä:

Yksikkötestaus on ohjelmistotestauksen taso, jossa testataan ohjelmiston yksittäisiä yksiköitä / komponentteja. Tarkoituksena on vahvistaa, että ohjelmiston kukin erillinen yksikkö toimii odotetulla tavalla. Yksikkö on kaikkien ohjelmistojen pienin testattava osa.

Tämä tarkoittaa, että sinun on testattava jokainen menetelmä erikseen ja pilkattava kaikki muut menetelmät.

Se ei ole yksikkötestit, se olet sinä!

Yksikkötestit eivät ole vain hyviä koodisi toimivuuden varmistamiseksi, vaan myös tekemään sinä jonkin verran uudelleen. Niiden pitäisi olla helppo kirjoittaa. Jos kamppailet tietyn koodinpätkän testaamisen kanssa, se tarkoittaa, että koodi on kirjoitettu huonosti ja se tulisi korjata. KIINTEÄT periaatteet auttavat sinua täällä. SOLID on joukko suunnitteluperiaatteita puhtaan, tyylikkään ja luettavan koodin kirjoittamiseen. Jos kirjoitat kiinteää koodia, yksikkötestit ovat kakku.

Joten yksikkötesteillä varmistat, että koodissasi olevat yksittäiset menetelmät toimivat oikein. Se tarkoittaisi, että kaikki koodi toimii odotetulla tavalla, eikö? Ei oikeastaan. Sinun on myös varmistettava, että yksittäiset komponentit toimivat kunnossa yhdessä. Sieltä tulevat integraatiotestit.

Integraatiotestit

Integraatiotestaus on ohjelmistotestauksen vaihe, jossa yksittäiset ohjelmistomoduulit yhdistetään ja testataan ryhmänä.

Hyvä esimerkki, kun yksikkötesti ei riitä, on tietokantakysely rakentajat. Yksikkötesteissä voit varmistaa, että soitit kyselyssä haluamasi ehdot, mutta jos kyselysi on monimutkaisempi, et voi olla varma, että käyttämäsi olosuhteet palauttavat odotetun tuloksen, ennen kuin soitat varsinaisen kutsun tietokantaan. Joten täältä tulee tulla integraatiotesti, joka suorittaa kyselyn testitietokannassa ja vahvistaa odotetut tulokset.

Tapaukset, joissa tarvitset integraatiotestejä:

  • Oikean integraation varmistaminen kolmannen osapuolen kanssa osapuolikirjastot tai sovellusliittymät
  • Kahden tai useamman moduulin tarkistaminen, joissa on yksikkötestit, toimivat odotetusti yhdessä

Toiminnalliset testit

Toiminnallinen testaus määritellään joidenkin sovellusten täydellisen toimivuuden testaamiseksi.

Niitä on paljon helpompi kirjoittaa API: ssa kuin sovelluksella, jolla on käyttöliittymä. API: n toiminnallisten testien tulisi koostua todellisten pyyntöjen lähettämisestä API-päätepisteille ja vastausmuoton vahvistamisesta. Sinun on testattava jokainen reitti onnistuneiden ja virheellisten vastausten varalta.

Mutta älä tee sitä yli, et tarvitse testiä jokaiselle mahdolliselle virheelle. Tämä pitäisi jo kattaa yksikkö- ja integraatiotesteillä.Täällä haluat vain varmistaa, että reittisi palauttaa oikean virhemuodon. Jos reiteilläsi on erilaiset roolit, sinun on testattava myös suojausvirheiden vasteet.

Tässä on joitain hyödyllisiä työkaluja, joiden avulla toimintatestejäsi on helpompi kirjoittaa:

  • PHP-sovitin – Kirjasto, jonka avulla voit tarkistaa vastauksesi mallien mukaan. Voit asettaa vastauksessasi kullekin kentälle odotettavan mallin sen sijaan, että väittäisit todellisia arvoja tietokannassasi. Tällä tavalla voit testata vain vastauksen muotoa ja kenttätyyppejä huolimatta siitä, jos jokin merkkijono tai numero muuttui testitietokannassasi.
  • Postimiehen testit – voit kirjoittaa toimintatestisi Postmaniin, mikä on melko hyödyllistä frontend-tiimille, he voivat tarkistaa ja kokeile api-päätepisteitäsi. Se on kuin interaktiivinen API-dokumentaatio. Voit integroida Postman-testit Newman – komentorivin juoksijan kanssa, jonka avulla voit suorittaa testit komentorivillä ja integroida ne kansioon Jatkuva integrointi (CI) .
  • Faker – kirjasto väärennettyjen tietojen luomiseen testitietokantaan

Edessä yksi askel eteenpäin

Nyt kun tiedät koodisi toimivan, voit tarkistaa sen suorituskyvyn.

Lataa testaus

Lataa testaus tarkistaa, jos api vastaa odotetusti useille palvelimille.

Stressitestit

Tarkistetaan, toimiiko sovellusliittymä odotetusti, kun vastaanotetaan suuri määrä pyyntöjä samanaikaisesti.

Tarvitseeko minun olla 100\% kattavuus?

100\% kattavuus ei takaa, että koodisi on täysin testattu ja toimiva. Tämä tarkoittaa vain sitä, että testit käyttivät koodisi jokaista riviä, mutta se auttaa varmasti suorittamaan koodin kattavuuden, jotta näet, jäisitkö peittämästä joitain koodin osia.

Saimme tietää, että emme hyödy kirjoittamisesta testit yksinkertaisille menetelmille, kuten vetimet ja asettimet. Niiden kirjoittaminen ja ylläpito vie aikaa, varsinkin suurissa projekteissa.

Vaikka testit poistavat suurimman osan mahdollisista virheistä, on silti joitain reunatapauksia, joita et ajatellut. Jos virhe ilmenee, muista toistaa se ensin uusilla testeillä ja korjata sitten koodi. Näin kattavuutesi paranee ja olet varma, että käsittelet tapausta. Tämä voi myös olla hyvä tapa aloittaa vanhojen projektien kattaminen, joilla ei vielä ole testejä.

Tässä on hyödyllisiä työkaluja koodisi ja testien laadun tarkistamiseen:

  • Infektio – mutaatiotestaustyökalu. Mutaatiotestaus arvioi olemassa olevien testien laatua. Mutaatiotestaus muuttaa ohjelmaa pienillä tavoilla ja odottaa testiesi epäonnistuvan, mikä tarkoittaa, että mutantti tapetaan. Kutakin läpäistyä testiä varten mutantti pysyy elossa. Testisviitit mitataan niiden tappamien mutanttien prosenttiosuudella. Mutaatiotestaus tarjoaa testauskriteerin, jota kutsutaan Mutaatiopisteen indikaattoriksi (MSI) . MSI mittaa testisarjan tehokkuutta sen kyvyn perusteella havaita viat. Voit myös integroida sen CI: hen ja asettaa vähimmäis-MSI, joka vaaditaan CI: n läpäisemiseen.
  • PHPStan – PHPStan keskittyy etsimään virheitä koodistasi suorittamatta sitä. Se tarttuu kokonaisiin luokkiin vikoja jo ennen koodin testien kirjoittamista. Se siirtää PHP: n lähemmäksi käännettyjä kieliä siinä mielessä, että koodin jokaisen rivin oikeellisuus voidaan tarkistaa ennen varsinaisen rivin suorittamista.
  • Jatkuva integrointi (CI) – antaa sinun suorittaa testisi gitissä jokaisessa sitoutumisessa. Se estää sinua yhdistämästä PR-tiedostoja epäonnistuneisiin testeihin.

Johtopäätös

Testien kirjoittamiseen liittyvissä asioissa on helppo eksyä. Testauksen päätavoitteena tulisi olla varmistaa, että koodi toimii ja että sitä on helppo ylläpitää. Jos testaus on sinulle uutta, saattaa tuntua siltä, ​​että ne vievät liian paljon aikaa, mutta älä anna periksi, kun saat sen käsiinsä, se tekee koodaamisesta elämäsi helpompaa ja nopeampaa. 🙂

Tämä luova teos julkaistiin alun perin sivustolla Locastic.com – https://locastic.com/blog/what-to-do-when- eksy-api-testauksessa /

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *