Jei kada nors teko aptikti kodo klaidą, žinote, kaip tai gali būti varginanti. Šis nusivylimas tik didėja, jei dirbate su didele kodų baze.
Testavimas leidžia patikrinti, ar kodo rezultatai atitinka jūsų lūkesčius. Tokiu būdu galite lengvai nustatyti ir išspręsti problemą prieš įdiegdami programą. Testavimas ne tik padeda greičiau pastebėti kodo klaidas, bet ir verčia parašyti gerą kodą.
1. Statinis testavimas
Statinis testavimas reiškia testus, kurie vykdomi nevykdant kodo. Tai atsitinka lyginant kodą su anksčiau nustatytomis kodavimo taisyklėmis. Įprasti statinio bandymo būdai yra pūkavimas ir tipo tikrinimas.
Linting apima kodo tikrinimą, ar nėra programavimo ir stiliaus klaidų. Linter analizuoja kodą ir pažymi galimas klaidas. Pūkavimo įrankių pavyzdžiai yra EsLint, PyLint ir CSSLint.
Tipo tikrinimas yra spausdinimo taisyklių ir verčių apribojimų vykdymo procesas. Kai kurios programavimo kalbos yra stipriai įvestos, o tai reiškia, kad jos sukelia klaidų, kai reikšmės nėra tinkamai įvestos.
Tačiau kai kurios kalbos, pvz., JavaScript, turi silpną spausdinimo sistemą ir yra atlaidesnės. Šiose kalbose sunku pastebėti klaidas, todėl būtina turėti tipo tikrinimo biblioteką. Jei naudojate „JavaScript“, galite naudokite „TypeScript“, kad užtikrintumėte griežtą spausdinimą.
Taip pat galite naudoti statinės analizės įrankius, kad automatiškai analizuotumėte kodą. Šie įrankiai patikrina kodo kokybę ir praneša apie visas rastas problemas. Statinės analizės įrankių rinkoje pavyzdžiai yra „SonarQube“, „DeepSource“ ir „SpotBugs“. Rinkdamiesi statinį analizatorių įsitikinkite, kad jis palaiko jūsų programavimo kalbą.
2. Vienetų testai
Atliekant vienetinius testus, tikrinamos mažiausios tikrinamos programos dalys, siekiant nustatyti, ar jos veikia taip, kaip tikėtasi. Galite rašyti vienetų testus funkcijoms, moduliams, objektams ir kt.
Nors vienetų testai gali užtrukti, jie turėtų sutaupyti daugiau laiko, nei sugaištumėte programos derinimas parašius visą kodą.
Paprastai vieneto testavimas susideda iš keturių etapų:
- Testų kūrimas
- Testo peržiūra
- Bazinis nustatymas
- Testo vykdymas.
Vienetų testus galite rašyti rankiniu būdu arba automatizuoti naudodami vieneto testavimo sistemą. Atlikdami rankinį testą, turėtumėte parašyti kodą, kad patikrintumėte reikalingą funkciją arba įrenginį, tada vėliau ištrintumėte testavimo kodą.
Jei naudojate sistemą, nurodykite testuojamą vienetą ir laukiamus rezultatus, tada paleiskite testą. Tada testavimo sistema užregistruotų nesėkmingus ir sėkmingus testus. Paprastai geriau naudoti sistemą, nes ji greitesnė.
Rašydami vieneto testą įsitikinkite, kad testuojamas įrenginys yra nepriklausomas. Jei jis remiasi išoriniais duomenimis, pvz., kintamaisiais, galite naudoti juokelius. Maketai pakeičia trūkstamus įrenginyje naudojamus duomenis.
Pavyzdžiui, jei išbandote funkciją, kuri remiasi duomenys, gauti iš API, galite sukurti netikrų duomenų objektą bandymo tikslais.
3. Integracijos testai
Integravimo testai tikrina, kaip skirtingi komponentai veikia kartu. Tai skiriasi nuo vienetinių testų, kuriais tikrinami nepriklausomi komponentai. Po vienetinių testų rašote integravimo testus.
Integravimo testai yra būtini, nes jie užtikrina, kad jūsų programos logika galioja.
Pavyzdžiui, apsvarstykite du modulius: vieną, kuris gauna duomenis iš API, ir kitą, kuris juos analizuoja. Norite užtikrinti, kad jūsų kodas gautų teisingus duomenis ir tinkamai juos išanalizuotų.
Čia atsiranda integracijos testavimas. Tai užtikrina, kad loginiame sraute iš vieno modulio į kitą nėra klaidų.
4. Nuo galo iki galo bandymai
Visapusiškas testavimas tikrina programos srautą iš galutinio vartotojo perspektyvos. Procesas išbando programą nuo pradžios iki pabaigos, nes vartotojas naudos programą. Šie testai suteikia daugiau aprėpties nei vienetiniai ar integravimo testai.
Nuo galo iki galo bandymai apibrėžia programos priklausomybes, duomenų bazes ir išorinį ryšį. Jie kiek įmanoma tiksliau atkartoja realų scenarijų.
Pavyzdžiui, bandant registracijos formą, atliekant išsamų testą bus išbandomi įvairūs scenarijai, pvz.:
- Vartotojas, pateikiantis el. pašto adresą ir slaptažodį
- Vartotojas, naudojantis silpną slaptažodį
- Naudotojas, naudojantis netinkamą el. pašto adresą
- Vartotojas, pateikiantis tik el
- Vartotojas, pateikiantis tik slaptažodį
Nuo galo iki galo bandymai užtikrina, kad programa elgiasi taip, kaip tikimasi pagal šiuos scenarijus.
Rašymo testai vs. Kodo rašymas
Labai svarbu išbandyti programą ankstyvame kūrimo proceso etape. Nors visi šie testai yra būtini, svarbu rasti jums tinkamą pusiausvyrą. Priešingu atveju praleisite per daug laiko rašydami testus, o ne kodą.
Vienetų testavimas yra labai svarbus daugeliui programų, todėl galbūt norėsite tam skirti pakankamai laiko. Kai atliksite vienetų testus, galite būti tikri, kad jūsų programos sudedamosios dalys veikia tinkamai.