Building High Quality Android            Apps  By using Jenkins and Automated Device                    Tests
Getting to know each other...Leif JanzikTeam-Lead Android Developmentadesso mobile solutions GmbHTwitter: @ElliotMonsterBl...
About adesso mobile solutions GmbH•   adesso mobile solutions GmbH, Dortmund, 65 MA (Ende 2012)•   Tochterunternehmen der ...
So you are an Android Developer and everything is f***ing awesome...http://www.flickr.com/photos/fullcodepress/
Everyone loves your Appshttp://www.flickr.com/photos/fullcodepress/
Your companies headquarterlooks like thesehttp://www.flickr.com/photos/fullcodepress/
Everything is perfect!http://www.flickr.com/photos/fullcodepress/
BUThttp://www.flickr.com/photos/fullcodepress/
... time goes on, and the apps evolves,new features, new API-levels, bugfixes etc.http://www.flickr.com/photos/fullcodepre...
There are „some“ new devices ...... every dayhttp://www.flickr.com/photos/fullcodepress/
And after some Versions, Refactorings& new Features your Code looks more like this...
you try to keep everything fineand running...
... but the number of bugscontinues to grow ...
maybe your customers will reactlike this?
... but more likely they willreact like this ...
... Your companies newheadquarter ...
... and being a Android Developeris no fun no more.
Ok, maybe I exagerated a bit, BUT•   Android Apps grow more and more complex•   Customers expect a bugfree and undisturbed...
Some „everyday-problems“ we had to solve•   Apps have to be build in many different Versions (e.g.    Development/Staging-...
so what is the solution to this problem?
exessive Testing ...
but testing your own app issoooooo boring! (so it might be skipped or not done thoroughly)
that‘s why we automated much ofour testing and our build process.
„Our“ solution•   a clean and reliable development workflow•   a toolchain which supports the developers and keeps    dist...
What is Continuous Integration?• Automate everything• Build as often as possible    • Build early, build often    • e.g. o...
Benefits of Continuous Integration• Fewer Errors   • very important, not everybody installs every update, so      bugs mig...
Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
3 Major Build ProfilesBuild after Commit        Nightly Build           Release or Promoted Build• Build and archive APK  ...
Why did we choose Jenkins• Quasi-Standart CI Server (together with hudson)• A lot of useful plugins   • e.g. Maven Plugin,...
Our Jenkins System                       Jenkins                       MasterJenkins      Jenkins             Jenkins   Je...
Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
why do we need automated ui-tests?• Not all parts are covered by classic Unit-Tests• Manual Integration Tests take a lot o...
automated UI-Tests with Calabash• Cucumber based Testing Tool• Test-Specs are human readable, even for non-programmers• Bo...
ExampleFeature: Basic Mathematics  As a user I‘ll be able to do basic mathematic  operations  Scenario: Summate 2 numbers ...
• All Calabash-Tests run on real Devices, so  the results are much more reliable
Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
Publish Code Analysis Results to Sonar
Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
Any questions?
Thank you           Have a nice day at DroidConPS: if you are an StartUp or have a great idea (for mobile) ask me for     ...
Upcoming SlideShare
Loading in...5
×

Building High Quality Android Applications

1,644

Published on

The slides from my talk "Building High Quality Android Applications with Continuous Integration and Automated device tests" from April 9th at DroidCon 2013 in Berlin

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,644
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
47
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Building High Quality Android Applications

  1. 1. Building High Quality Android Apps By using Jenkins and Automated Device Tests
  2. 2. Getting to know each other...Leif JanzikTeam-Lead Android Developmentadesso mobile solutions GmbHTwitter: @ElliotMonsterBlog: www.thoughtsonmobile.com
  3. 3. About adesso mobile solutions GmbH• adesso mobile solutions GmbH, Dortmund, 65 MA (Ende 2012)• Tochterunternehmen der adesso AG, Dortmund, ca. 1.100 MA (Ende 2012)• führender Anbieter in den Bereichen mobiles Internet, mobile Applikationen und Mobile Marketing• Portfolio: Beratung, Konzeption, Realisierung, Review, Test und Betrieb von Mobilisierungs-Projekten und App-Lösungen• Kunden: Über 200 realisierten Portalen und Applikationen für Kunden wie Daimler, PAYBACK, ERGO, süddeutsche.de, SportScheck, die Volksbanken Raffeisenbanken, Bundesagentur für Arbeit.
  4. 4. So you are an Android Developer and everything is f***ing awesome...http://www.flickr.com/photos/fullcodepress/
  5. 5. Everyone loves your Appshttp://www.flickr.com/photos/fullcodepress/
  6. 6. Your companies headquarterlooks like thesehttp://www.flickr.com/photos/fullcodepress/
  7. 7. Everything is perfect!http://www.flickr.com/photos/fullcodepress/
  8. 8. BUThttp://www.flickr.com/photos/fullcodepress/
  9. 9. ... time goes on, and the apps evolves,new features, new API-levels, bugfixes etc.http://www.flickr.com/photos/fullcodepress/
  10. 10. There are „some“ new devices ...... every dayhttp://www.flickr.com/photos/fullcodepress/
  11. 11. And after some Versions, Refactorings& new Features your Code looks more like this...
  12. 12. you try to keep everything fineand running...
  13. 13. ... but the number of bugscontinues to grow ...
  14. 14. maybe your customers will reactlike this?
  15. 15. ... but more likely they willreact like this ...
  16. 16. ... Your companies newheadquarter ...
  17. 17. ... and being a Android Developeris no fun no more.
  18. 18. Ok, maybe I exagerated a bit, BUT• Android Apps grow more and more complex• Customers expect a bugfree and undisturbed App experience• Tolerance even for minor bugs continues to shrink• Device fragmentation makes testing a sisysphean task
  19. 19. Some „everyday-problems“ we had to solve• Apps have to be build in many different Versions (e.g. Development/Staging-Enviroment) or different brandings• Developers are often disturbed, e.g. when a AdHoc for the customer is needed• Changes in App Components lead to new bugs, which were discovered later.
  20. 20. so what is the solution to this problem?
  21. 21. exessive Testing ...
  22. 22. but testing your own app issoooooo boring! (so it might be skipped or not done thoroughly)
  23. 23. that‘s why we automated much ofour testing and our build process.
  24. 24. „Our“ solution• a clean and reliable development workflow• a toolchain which supports the developers and keeps disturbing work away• Continuous refactoring of the apps• Maven for lesser configuration for every developer and easier modularisation• Automated Device Tests• Continuous integration
  25. 25. What is Continuous Integration?• Automate everything• Build as often as possible • Build early, build often • e.g. on every commit • or nightly builds
  26. 26. Benefits of Continuous Integration• Fewer Errors • very important, not everybody installs every update, so bugs might never be fixed on a customers device• Fast Feedback• Tests everything on every (nightly) build• Much less manual testing • Cheaper • Happier developers• Regression-Tests without additional effort
  27. 27. Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
  28. 28. 3 Major Build ProfilesBuild after Commit Nightly Build Release or Promoted Build• Build and archive APK • Build Project • Build APK• Run Unit-Tests without • Run Unit-Tests• Run Sonar Code archiving/publishin • Run Calabash Tests Metrics g APK • Keep apk „forever“ • Run Unit-Tests • upload apk to webserver • Run Calabash Tests for enterprise delivery or to Google play
  29. 29. Why did we choose Jenkins• Quasi-Standart CI Server (together with hudson)• A lot of useful plugins • e.g. Maven Plugin, Checkstyle Plugin, Android Lint Plugin, Sonar Plugin• Well documented Plugin API for own plugins
  30. 30. Our Jenkins System Jenkins MasterJenkins Jenkins Jenkins JenkinsiOS Android Windows Mobile Web
  31. 31. Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
  32. 32. why do we need automated ui-tests?• Not all parts are covered by classic Unit-Tests• Manual Integration Tests take a lot of time• Manual tests are very boring and developers tend to skip them• Device fragmentation grows every day ...
  33. 33. automated UI-Tests with Calabash• Cucumber based Testing Tool• Test-Specs are human readable, even for non-programmers• Both mayor platforms iOS & Android are supported with a identical Syntax• Runs in Simulator/Emulator and on Devices
  34. 34. ExampleFeature: Basic Mathematics As a user I‘ll be able to do basic mathematic operations Scenario: Summate 2 numbers Given I started the App When I press button „5“ And I press button „+“ And I press button „3“ And I press button „=“ Then label „result“ should be „8“ Scenario: Substract one number from another Given I started the App When I press button „9“ And I press button „-“ And I press button „4“ And I press button „=“ Then label „result“ should be „5“
  35. 35. • All Calabash-Tests run on real Devices, so the results are much more reliable
  36. 36. Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
  37. 37. Publish Code Analysis Results to Sonar
  38. 38. Automate...• ...Builds• ...Unit Testing• ...Device Tests• ...Code Coverage & Static Analysis• ...Deployment
  39. 39. Any questions?
  40. 40. Thank you Have a nice day at DroidConPS: if you are an StartUp or have a great idea (for mobile) ask me for informations on the „adesso mobile fond“
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×