React Native -sovelluksen (osa-1) testaaminen

(21. joulukuuta 2020)

Johdanto

Useimpien kehittäjien mielestä testaus on tylsää ja tuskallista kirjoittaa, mutta tiedätkö mitä? Tarvitaan suurta taitoa ja kokemusta, jotta osataan kirjoittaa mielekkäitä ja ylläpidettäviä testejä. Tieto, jonka saat oppimalla koodin testaamisen, muuttaa myös koodin kirjoittamistapaa kehityksessä. Tämän artikkelin pitäisi auttaa sinua aloittamaan testausmatkasi.

Paremman testauksen ohjeet

Nämä ovat joitain ohjeita, jotka sain tietää tutkittuani, kuinka muut kehittäjät testaavat koodiaan. Näiden ohjeiden noudattaminen helpotti testien kirjoittamista ja ylläpitämistä koko koodipohjassa.

1. Älä testaa koodisi toteutusta.

Ymmärrämme miksi tämä on tärkeää, käymme läpi skenaarion. Oletetaan, että kirjoitit funktion, joka vie syötteeksi n ja tuottaa ensimmäisen n numerot.

Oletetaan, että testaat getSumOfFirstN haulle n=2 väittämällä, että add kutsutaan 2 times argumenteilla (0, 2) ja (2, 1) ja on 3.

Myöhemmin huomaat, että on parempi tapa löytää ensimmäisen n numerot ja kirjoita yllä oleva koodi uudelleen.

Testisi alkaa rikki, koska et enää soita add

Tämä oli yksinkertainen esimerkki, ja se on y se saattaa tuntua vasta-intuitiiviselta, mutta olen nähnyt monet kehittäjät tekemässä täsmälleen tällaista testausta, jossa virhettä ei ole niin helppo nähdä.

2. Älä anna testiesi tulla uudeksi tekniseksi velaksi

Testaus on tärkeää, mutta sinun on myös toimitettava koodi asianomaisille sidosryhmille ajoissa. Jos kirjoitat uutta ominaisuutta tai muokkaat olemassa olevaa ominaisuutta, se rikkoo vanhoja testitapauksiasi tai käytät huomattavan määrän varatusta ajasta vanhojen testitapausten korjaamiseen vaadittavien ominaisuuksien rakentamisen sijaan, lopulta lopulta poistat kaikki vanhat testit ja vaarantaa projektin epäonnistumisen tuotannossa.

Näiden ohjeiden noudattamisen pitäisi auttaa sinua varmistamaan, että testisi ovat joko helposti korjattavissa tai eivät riko lainkaan koodikannan muuttuessa. >

3. Kun testaat käyttöliittymää, kirjoita testit tavalla, joka simuloi käyttäjän todellista käyttäytymistä.

Oletetaan, että testaat onko tämä painike hahmonnettu ja toimiiko se odotetusti vai ei, mieti ensin, kuinka käyttäjä löytää tämän painikkeen ja käyttää sitä. Toivon, että he näkisivät Lähetä-tekstin ja painaisivat sitä, joten juuri sitä simuloimme. Testitapauksessamme etsimme ensin tekstiä ”Lähetä” ja simuloimme sitten ”onPress” -tapahtumaa siinä ja väitämme sitten mitä sen piti tehdä.

Joissakin tapauksissa se ei ehkä ole Kohdistettava komponentti on helppo yksilöidä yksiselitteisesti, ja tällöin voit käyttää testID prop -arvoa, mutta muista, että et simuloi käyttäjän täydellistä käyttäytymistä, jos käytät testID, koska käyttäjät eivät kohdista komponentteja niiden testID perusteella.

Miksi tämä on tärkeää? Miksi meidän on yritettävä simuloida käyttäjän käyttäytymistä mahdollisimman paljon testattaessa käyttöliittymää? Tämä johtuu siitä, että loppujen lopuksi ihminen on vuorovaikutuksessa käyttöliittymän eikä tietokoneen kanssa, ja jos he näkevät painikkeessa renderöimisen ”Hei” eikä ”Lähetä”, testitapauksesi pitäisi epäonnistua, koska se voi heittää loppukäyttäjän pois.

4. Puhtaita toimintoja on helpompi testata kuin epäpuhtaita toimintoja.

Puhtaat toiminnot ovat toimintoja, jotka antavat aina saman lähdön vastaavalle tulolle, ts. Jos puhdas toiminto pumpaa 2 1: lle, se tekisi aina niin, kun taas epäpuhtaat toiminnot saattavat pumpata 2 ensimmäisen puhelun jälkeen ja sitten pumpata ulos 5 toisessa puhelussa.

Tämä on kätevä pitää mielessä koodia kirjoitettaessa. Epäpuhtausfunktioiden testaaminen voi olla helpompaa, jos moduuli, joka tuo ”epäpuhtauden” tällaisiin toimintoihin, voidaan pilkata.

5.Käytä testeissä syötteinä ja väitteinä kalusteita

Oletetaan, että sinulla on työntekijätyyppinen objekti ja sinulla on useita toimintoja, kuten toiminto, jolla isot kirjaimet name, toiminto, jolla tarkistetaan onko työntekijä aikuinen vai ei.

Oletetaan, että otat tämän objektin syötteenä kaikissa testitapauksissa.

Nämä ovat nuken tiedot tai ”kiinnittimesi”. Ensimmäisessä testitapauksessa, joka testaa, toimiiko nimi isolla kirjaimella, toimi odotetusti vai ei, väität, että sen lähtö on yhtä suuri kuin { ...employee, name: employee.name.toUpperCase() }, ja toisessa testitapauksessa väität tuottaako funktio employee.age >= 18 vai ei, ja niin edelleen.

Saatat miettiä, minkä edun saamme käyttämällä kalusteita tällä tavalla? Vastaus on, että helpotat testien nopeaa korjaamista tulevaisuudessa kirjoittamalla testisi tällä tavalla.

Esim. Entä jos haluamme lisätä toisen ominaisuuden maritalStatus työntekijäobjektiin, koska nyt kaikkien työntekijöidemme on ilmoitettava siviilisääty. Jos ensimmäisessä testitapauksessamme väitimme lähdön olevan yhtä suuri kuin { name: "KARTIK", age: 25, sex: "Male", children: 0 } { ...employee, name: employee.name.toUpperCase() }: n sijaan, testitapauksemme rikkoutuu. Se hajoaa myös, jos muutamme name -arvon muuhun. Toisin sanoen testitapauksemme ei olisi lainkaan joustava, ja siten on suurempi mahdollisuus rikkoutua johtuen toisistaan ​​riippumattomista muutoksista koodipohjassa.

6. Kirjoita komponenttitestit osille ja apuohjelmatoiminnoille

Nämä ovat koodisi osia, joita useat moduulit käyttävät. Siksi ne on testattava kaikkien mahdollisten tulojen / reunatapausten suhteen, koska et tiedä miten muut moduulit aikovat käyttää näitä toimintoja / komponentteja. Näin ollen näillä ei pitäisi olla odottamattomia käyttäytymisiä.

7. Kirjoita integraatiotestejä näytöille

Yksikkötestejä on vaikea kirjoittaa näytöille, koska yleensä ne riippuvat suuresta määrästä komponentteja ja muita kolmannen osapuolen kirjastoja, kuten redux-myymälää. Joten kirjoittaaksesi yksikkötestejä näytöille, sinun on ensin pilkattava kaikki nämä riippuvuudet, mikä on paljon työtä. Siksi on parempi kirjoittaa integraatiotestejä tässä tapauksessa.

7. Kirjoita E2E-testit alkuperäisen koodin testaamiseksi

Natiivi koodi ei toimi jest-ympäristössä. Joten sen testaamiseksi sinun on käytettävä kirjastoa, kuten Detox.

8. Tee aina tilannekuvien testaus näytöille ja komponenteille

Jos muutat tyylin komponentissa, jota useat muut näytöt / komponentit käyttävät, niiden tilannekuvatestit epäonnistuvat, ennen kuin päivität otokset. Se auttaa sinua ymmärtämään, mihin muihin moduuleihin tekemäsi muutos vaikutti. Jos työskentelet ryhmässä, se auttaa arvostelijaa PR-arvostelujen aikana ymmärtämään, mihin moduuleihin komponentissa tekemäsi muutos vaikutti, koska näiden moduulien tilannekuvien muutokset näkyvät PR: ssäsi.

Päätelmä

Toivon, että pidit tästä artikkelista hyödyllistä ja jos olet hämmentynyt juuri lukemastasi, älä huoli. Tämän sarjan toinen osa on opetusohjelma testausympäristön määrittämiseen React Native -sovellukseen koodinäytteillä testausnäytöistä, komponenteista ja toiminnoista noudattaen tässä ensimmäisessä osassa asetettuja ohjeita.

Vastaa

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