Hommikune loeng: Testing Grails - Experiences from the field
Testida tuleb tervikut, tervet süsteemi
1) rakendusi
2) integratsioonipunkte
3) kogu süsteem
Testida tuleb rakendusi lahus ja samas ka koos. Unit testid ei ole piisav, vaja on ka integratsiooni ja funktsionaalseid teste.
Autotest plugin - vaatab mis sa koodis teed ja laseb selle peale testi käima.
Spock tööriist. Tundub et hetkel parim variant mis on testimiseks Grailsi lisatud.
Meetodi nimi saab olla string ehk siis kirjeldab otse ära mida antud test peaks tegema. Siia saaks väga kenasti nõudeid lisada mis tulevad analüüsi poolt.
Sisseehitatud mocking library. GrailsMock
BetaMax - salvestab reaalsega API-ga suhtluse ja pärast seda saab antud rakendust kasutada vastava API simulaatorina integratsioonitestides. Tuleks üle vaadata kuidas see töötab ja kuidas rakendada.
1) No IO in Unit tests - ei tohi teha tegevusi mis kasutavad seda tüüpi ressursse (failisüsteem, võrk, baas) et unit testid ei läheks aeglaseks
2) unit test peaks testima ainult ühte väikest funktsionaalsust - näiteks meetodit
Põhimõte - kui antud koodiblokk ei ole testitav, tuleks teha refaktooring.
Post-Dramatic-Test-Driven-Programming :)
Tuleks kirjutada test mis loob sul arenduses veaolukorra uuesti.
Ükski feature ei tohiks olla valmis kui pole kirjutatud teste.
Test fridays - kirjuta iga reede mingi test :)
Javascript UI testing - karma-test-runner raamistik, Angulari team soovitab seda.
Jmeter - testkeskonnas
Automatiseeri kõik tegevused mida muidu käsitsi peaks tegema.
CodeNarc
Code Coverage
gmetrics
Canary - end user QA :))))
Grails - Real world
Embedded TcServer - as jar
FileCacheService - hoia failid MongoDB GridFS sees (võimaldb Cloud Foundryt kasutada)
saab urli pealt striimida otse gridfs sisse ilma et peaks mällu kõike tõmbama.
Osta kvaliteetset infot. Osta theme'e
Typescript - tasuks vaadata - pakub tugevalt tüübitud javascripti sarnast keelt mis kompileeritakse javascriptiks (olemas ka grails plugin).
UI-dest tuleks vaadata lähemalt Kendo UI Angular versiooni mis tehti just opensourceks. Tundub arvestatav alternatiiv Ext JS-ile ning Bootstrapile.
GSON - domeeniobjektist JSON andmestruktuuri loomine. Ei tohiks vaikimisi lazy seoseid kohe mällu laadida.
JSON teenuste arendamise juures oleks XSD-le heaks alternatiiviks JSON andmestruktuuri kokkuleppimine koos näidis andmetega. Seda saaks serveri arendaja kasutada enda endpointide testimiseks ning UI arendaja testimiseks ilma serverita.
Jätkuvalt soovitati Grailsi webdriver plugina kasutamist functional testide tegemiseks.
Sellega konverents ka lõppes. Kokkuvõttes oli väga kasulik üritus, andis palju mõtteid millega iseseisvalt edasi tegeleda.
Kokkuvõtlikud märksõnad mis siin erinevates esitlustes läbi käisid:
REST, JSON, ASYNC, SPOCK, NOSQL, GRAILS 2.3, SPRING IO, GROOVY DSL, SPRING DSR, KARMA, MAGNOLIA, GRADLE.
Jääme ootama SpringOne 2014-st. Nüüd väike sleep ja siis ülipikale tagasisõidule.
Siia lõppu veel üks mõte kui rääkida paksudest klientidest:
http://griffon.codehaus.org + QT või JavaFX! - ütleme EI .NET-ile eks :)
QT + C++ jah kui mingi linuxiline, QT + python võimaldab ka hästi toimivaid asju teha aga kui tahta kirjutada softi mis mõeldud vaid pisipehmele siis .NET oli on ja jääb võitjaks.
ReplyDeleteMicrosoft ise aktiivselt promob HTML-is Metro rakenduste kirjutamist. Kõik tüüpilised "enterprise" rakendused võivad vabalt olla HTML-is tehtud mis jookseb siis suuremates õigustes ning kas Windows 8 runtime peal või mõnes muus konteineris (Brackets, ChromeAPP, Firefox OS konteiner vms). Me ei vaja otseselt nii paksu klienti nagu .NET pakub, lisaks kogu see overhead .NET rakenduse haldamiseks ja arendamiseks.
ReplyDeletesedant küll, tulevikku silmas pidades kindlsti. Eks tulevik näis jah kuhu see windows8 maailm viib tabletinduses ja muus valdkonnas. Mina olen seni vaadanud selles vaates kuidas seadmeid millel on olemas .net api integreerida töötavaks tervikuks. Esimesed edusammud on selles mõttes, et üleminek mingilt näruselt driverilt nt WIA toele skaneerimisel on olnud edukas. Siiani on olnud edukad ka katsed paaritada browser ja .net paks klient läbi resti kasutades jsonp.
ReplyDelete