How to ensure high quality while developing Android applications? Detailed description of the development process and tools which Google uses: code review, static analysis, automated tests, monkey testing... Experience form using these tools. How applicable are those tools for startups and rapid development?
2. Continuous Integration
- Šta je to continous integration?
- Šta ovaj proces donosi:
- izbegavanje integracionih problema,
- poboljšanje kvaliteta kontinualnom kontrolom,
- lakše odrzavanje,
- kontrolisanje tehničkog duga.
- povecava transparentnost projekta
- ranije uočavanje grešaka
- poboljšava komunikaciju u timu
3. Šta dobijamo sa CI
• Uvek postoji bild aplikacije koji može da se
instalira
• Najnovija verzija aplikacije je testirana
• Možemo lako da ispratimo korake definisane u
Definition of Done
6. Izmene u kodu
• coding standard
https://source.android.com/source/code-
style.html
• formatiranje koda android-
formatting.xml android.importorder
• refaktoring http://sourcemaking.com/refactoring
7. Komitovanje na gerrit
• git-repo https://code.google.com/p/git-repo/
• format komit poruke:
– kratak naslov,
– opis izmena,
– zavisnost od drugih izmena,
– link na dizajn dokument, user story itd.
8. Jenkins job
• Trigger on commit, nightly job
• Checkout code
• Build
• Run tests on device or emulator
• Run code analysis
• Run monkey test
9. Automatizovani testovi
• Funkcionalni testovi:
– Roboelectric
– Android Testing
• UI testovi:
– UI Automator
– Robotium
• Monkey test
• Šta testirati, odakle početi
10. Statička analiza koda
• Lint
• Findbugs
• Coverity
• Protex
• Popraviti kritične greške i izbegavati dodavanje
novih
11. Peer review
• Verifikovanje izmene
• Provera da li je neka druga funkcionalnost
pokvarena
• Provera kvaliteta koda – coding standard,
formatting, refactoring
• Testiranje
• Peer review +1
12. Architect approval
• Da li su svi koraci Definition of Done ispunjeni:
– Da li su dodati novi testovi
– Da li je napisana dokumentacija
– itd.
• Da li se integriše u ispravan branch
• Approval +2
13. Šta je specifično za Android
• Testiranje na različitim uređajima
• Cloud remote testing
• Deployment faza
14. Promenite navike
• Pravite male komitove, sa jasno definisanim
izmenama funkcionalnosti
• Pišite unit testove
• Kod pripada celom timu, ne autorima
15. Primenjivost u Startup-u
• Kolika je investicija postaviti ovakav proces
• Koliko treba održavanja
• Koji su benefiti
• Kada u projekat uvesti CI
(a) Koliko od vas je pisao Android aplikacije? (b) Koliko od vas se profesionalno bavi razvojem Android aplikacija?
sta je to continous integration
sta ovaj proces donosi
izbegavanje integracionih problema
poboljsanje kvaliteta kontinualnom kontrolom
lakse odrzavanje
smanjivanje tehnickog duga
povecava transparentnost projekta
lakse uocavanje gresaka
poboljsava komunikaciju u timu
source controll
build server
review server
alati za staticku analizu koda
-kako izgleda jedan ciklus
Izmene u kodu
coding standard https://source.android.com/source/code-style.html
formatiranje koda – eclipse formatter
refaktoring http://sourcemaking.com/refactoring
Brancing strategy – fix for, main, maintenance, feature branch
Šta sve radi jenkins job
Kako se konfigurise – jenkins plugins
Trigerovanje na komit, specijalni job-ovi
Integracija sa gerritom +1 verified
Test na uredjaju ili emulatoru
Sta treba sve pokriti testovima
Odnos cena-pokrivenost
Testirati parsiranje, serializaciju, algoritme, formattere
Gui smoke tests
google email
https://android.googlesource.com/platform/packages/apps/Email/+/master
Sta radi svaki od ovih alata i na sta se fokusira
Sta raditi sa false positive greskama
kolika je investicija postviti ovakav proces
koliko treba odrzavanja
koji su benefiti
kada u projekat uvesti CI
Inicijalna investicija od par nedelja dok se ne postav svi alati