SlideShare a Scribd company logo
BEEF UP ANDROID APPS
USING JAVA TOOLS

Stéphane Nicolas &
Jérôme Van Der Linden
2	
  

Jerome Van Der Linden

android-­‐holo-­‐colors.com	
  

jeromevdl	
  

@jeromevdl	
  

+jerome	
  van	
  der	
  linden	
  
3	
  

Stéphane Nicolas
ox	
  
BoundB

And	
  others	
  :	
  RoboDemo,	
  Quality	
  Analysis	
  Tools	
  for	
  Android,	
  android-­‐maven-­‐plugin,	
  …	
  

stephanenicolas	
  

snicolas	
  

+stephane	
  nicolas	
  
4	
  
5	
  

1

ONCE UPON A TIME
JAVA ENVIRONMENT
6	
  

4	
  
7	
  

Everything is testable
Everything is measurable
Everything is integrated
No excuses to have poor apps !
8	
  

Great !
9	
  

And me ?!
10	
  

2

WTF ?!
ANDROID IS JAVA !
11	
  

Almost YES…
… a story of
Virtual Machine

So what … ?
12	
  

3	
  
Oh Yeah !
14	
  

(almost)

(almost)

Everything is testable

Everything is measurable
BUT

Everything is NOT integrated
15	
  

Quality Tools for Android

http://goo.gl/zGFvda
16	
  

3

Quality Tools Android
Ant
18	
  

4

Quality Tools Android
Maven
19	
  

The magical

plugin

<plugin>!
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
"!
<artifactId>android-maven-plugin</artifactId>!
<version>3.6.1</version>!
</plugin>!
20	
  

The ultimate

profile

# run junit, robotium, robolectric tests and get code coverage!
> mvn clean install –P jacoco!
21	
  

Maven
Profiles

Junit	
  +	
  
Robo,um

Robolectric

UIAutomator

Code	
  
coverage

standard

emma
cobertura

ui	
  
automator

spoon

jacoco

x2	
  

Quality	
  
checks	
  
(Checkstyle	
  +	
  
findbugs	
  +	
  
PMD	
  +	
  lint)

Sonar
22	
  

Android Lint
Sonar plugin
# analyse code (pmd, checkstyle, findbugs, lint) and report in sonar!
> mvn sonar:sonar –P jacoco!

hOps://github.com/SonarCommunity/sonar-­‐android	
  
23	
  

Not an archetype

(see akquinet : http://goo.gl/O46LIw)

Only samples
Do not use everything !
Pick up what you need !
24	
  

Return of
real life experience
Maven	
  
Jenkins	
  
Sonar	
  (PMD,	
  checkstyle,	
  findbugs,	
  lint)	
  
Junit	
  (Instrumenta[onTestCase)	
  

~	
  100	
  screens	
  (phone	
  +	
  tablet)	
  
~	
  5	
  developers	
  during	
  only	
  5	
  months	
  
~	
  60k	
  loc	
  (java),	
  15k	
  loc	
  (xml)	
  
~	
  400	
  unit	
  tests	
  :	
  not	
  an	
  excep[onal	
  coverage	
  (~	
  30%)	
  
Built	
  on	
  each	
  commit	
  on	
  Jenkins	
  +	
  Genymo[on	
  
0	
  lint,	
  pmd,	
  findbugs,	
  checkstyle	
  viola[ons	
  
1	
  sonar	
  report	
  generated	
  each	
  night	
  with	
  those	
  metrics	
  
	
  
è	
  An	
  happy	
  customer	
  J	
  
25	
  

Lessons

learned

A	
  laborious	
  development	
  environment	
  :	
  
eclipse	
  +	
  maven	
  +	
  m2eclipse	
  +	
  android	
  m2e	
  connector	
  
è Many	
  hours	
  lost	
  è	
  Use	
  IntelliJ	
  !	
  	
  
A	
  laborious	
  execu[on	
  environment	
  :	
  emulator	
  
è	
  Too	
  slow	
  è	
  Use	
  Genymo[on	
  (or	
  at	
  least	
  a	
  device)	
  !	
  
	
  
Not	
  enough	
  tests	
  :	
  
è Instrumenta[onTestCase	
  are	
  too	
  heavy/slow	
  for	
  Unit	
  Tes[ng	
  	
  
è Use	
  Robolectric	
  and/or	
  think	
  about	
  MV*	
  paOern	
  
è	
  Keep	
  Instrumenta[onTestCase	
  for	
  Android	
  specific	
  (Ac[vity,	
  
Services,	
  …)	
  
	
  
26	
  

Lessons

learned

A	
  robust	
  development	
  environment	
  :	
  
eclipse	
  +	
  maven	
  +	
  m2eclipse	
  +	
  android	
  m2e	
  connector	
  
è	
  s[ll	
  some	
  problem	
  with	
  eclipse	
  and	
  maven	
  integra[on	
  
	
  
About	
  tests	
  
è Instrumenta[onTestCase	
  are	
  fast	
  enough	
  with	
  GenyMo[on	
  
è	
  Robolectric	
  can’t	
  give	
  you	
  enough	
  confidence	
  	
  
	
  
27	
  

5

Quality Tools Android
Gradle
28	
  

Before	
  	
  
V	
  0.6	
  

Lint
UIAutomator

Monkey & Monkey Runner
Robolectric
PMD, checkstyle, findbugs
Emma, Cobertura, Jacoco
Joke ?!
30	
  

V	
  0.6.+	
  

Lint
UIAutomator

Monkey & Monkey Runner
Robolectric
PMD, checkstyle, findbugs
Emma, Cobertura, Jacoco
31	
  

Quality
#
#
>
#
>

the gradle way

run junit, robotium, robolectric tests !
AND Chekstyle + PMD + Findbugs + Classycle!
gradle check!
report in sonar!
gradle sonarRunner!
32	
  

6

Conclusion

Android is filling the gap
Gradle
Feature
Application Variants &
Manifest merging

Standard	
  tests	
  &	
  Robo,um

Code	
  Coverage	
  
Robolectric
UI	
  automator	
  /	
  Monkey	
  /	
  
Monkey	
  Runner
PMD	
  /	
  CheckStyle	
  /	
  
FindBgugs	
  /	
  Classycle	
  /	
  Lint
Sonar	
  &	
  Project	
  Sites

0.6.1

VS Maven
Gradle

Maven

?

33	
  

3.6.1
Android offers

34	
  

lots of quality tools
lots of testing methods
rapid testing
Everything gets easier
to use
Build rock solid apps
35	
  

Thank You !
Any Question ?
stephanenicolas	
  
jeromevdl	
  

snicolas	
  
@jeromevdl	
  

Stéphane Nicolas &
Jérôme Van Der Linden

+stephane	
  nicolas	
  
+jerome	
  van	
  der	
  linden	
  
36	
  

Quality Tools for Android

http://goo.gl/zGFvda

More Related Content

What's hot

Inconvenient Truth(s) - On Application Security (from 2007)
Inconvenient Truth(s) - On Application Security (from 2007)Inconvenient Truth(s) - On Application Security (from 2007)
Inconvenient Truth(s) - On Application Security (from 2007)
Dinis Cruz
 
I dream of ISPWeb
I dream of ISPWebI dream of ISPWeb
I dream of ISPWeb
Gil Zilberfeld
 
Application compatibility final
Application compatibility finalApplication compatibility final
Application compatibility final
Harold Wong
 
How we've built Yahoo Fantasy Football (Droidcon Italy '15)
How we've built Yahoo Fantasy Football (Droidcon Italy '15)How we've built Yahoo Fantasy Football (Droidcon Italy '15)
How we've built Yahoo Fantasy Football (Droidcon Italy '15)
Alex Florescu
 
Shift left-testing
Shift left-testingShift left-testing
Shift left-testing
Alan Richardson
 
Apptest.ai intro & pitch
Apptest.ai intro & pitchApptest.ai intro & pitch
Apptest.ai intro & pitch
Sandy (Sanghui) Park
 
A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...
A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...
A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...
Yuval Yeret
 
Test Driven Development for Embedded C
Test Driven Development for Embedded CTest Driven Development for Embedded C
Test Driven Development for Embedded C
James Grenning
 
Developing Android Apps
Developing Android AppsDeveloping Android Apps
Developing Android Apps
Claire Lee
 
Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad
 Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad
Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad
Applitools
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
Sigma Software
 
How to Scale Mobile Testing Across Several Teams
How to Scale Mobile Testing Across Several TeamsHow to Scale Mobile Testing Across Several Teams
How to Scale Mobile Testing Across Several Teams
Daniel Knott
 
Creating testing tools to support development
Creating testing tools to support developmentCreating testing tools to support development
Creating testing tools to support development
Chema del Barco
 
Solid c-accu2014.key
Solid c-accu2014.keySolid c-accu2014.key
Solid c-accu2014.key
James Grenning
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 

What's hot (15)

Inconvenient Truth(s) - On Application Security (from 2007)
Inconvenient Truth(s) - On Application Security (from 2007)Inconvenient Truth(s) - On Application Security (from 2007)
Inconvenient Truth(s) - On Application Security (from 2007)
 
I dream of ISPWeb
I dream of ISPWebI dream of ISPWeb
I dream of ISPWeb
 
Application compatibility final
Application compatibility finalApplication compatibility final
Application compatibility final
 
How we've built Yahoo Fantasy Football (Droidcon Italy '15)
How we've built Yahoo Fantasy Football (Droidcon Italy '15)How we've built Yahoo Fantasy Football (Droidcon Italy '15)
How we've built Yahoo Fantasy Football (Droidcon Italy '15)
 
Shift left-testing
Shift left-testingShift left-testing
Shift left-testing
 
Apptest.ai intro & pitch
Apptest.ai intro & pitchApptest.ai intro & pitch
Apptest.ai intro & pitch
 
A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...
A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...
A Software Tester's Travels from the Land of the Waterfall to the Land of Agi...
 
Test Driven Development for Embedded C
Test Driven Development for Embedded CTest Driven Development for Embedded C
Test Driven Development for Embedded C
 
Developing Android Apps
Developing Android AppsDeveloping Android Apps
Developing Android Apps
 
Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad
 Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad
Advanced Techniques for Testing Responsive Apps and Sites -- By Aakrit Prasad
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
How to Scale Mobile Testing Across Several Teams
How to Scale Mobile Testing Across Several TeamsHow to Scale Mobile Testing Across Several Teams
How to Scale Mobile Testing Across Several Teams
 
Creating testing tools to support development
Creating testing tools to support developmentCreating testing tools to support development
Creating testing tools to support development
 
Solid c-accu2014.key
Solid c-accu2014.keySolid c-accu2014.key
Solid c-accu2014.key
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 

Similar to DroidconUK 2013 : Beef up android apps with java tools

Modularization Kaidee App and new features roadmap for 2019
Modularization Kaidee App and new features roadmap for 2019Modularization Kaidee App and new features roadmap for 2019
Modularization Kaidee App and new features roadmap for 2019
Abdulrohim sama
 
Synapseindia android apps application
Synapseindia android apps applicationSynapseindia android apps application
Synapseindia android apps application
Synapseindiappsdevelopment
 
Nagios Conference 2012 - Nathan Vonnahme - Monitoring the User Experience
Nagios Conference 2012 - Nathan Vonnahme - Monitoring the User ExperienceNagios Conference 2012 - Nathan Vonnahme - Monitoring the User Experience
Nagios Conference 2012 - Nathan Vonnahme - Monitoring the User Experience
Nagios
 
When & How to Successfully use Test Automation for Mobile Applications
When & How to Successfully use Test Automation for Mobile ApplicationsWhen & How to Successfully use Test Automation for Mobile Applications
When & How to Successfully use Test Automation for Mobile Applications
TechnologyAssociationOregon
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
Leif Janzik
 
Mobitop
MobitopMobitop
Mobitop
MobitopMobitop
Mobitop
MobitopMobitop
Mobitop
MobitopMobitop
Android testing
Android testingAndroid testing
Android testing
Bitbar
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
Katie Chin
 
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
QA Dnepropetrovsk Community (Ukraine)
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.
UA Mobile
 
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
mCloud
 
How we improved i os delivery speed from qa side by Kateryna Sprynsian
How we improved i os delivery speed from qa side by Kateryna SprynsianHow we improved i os delivery speed from qa side by Kateryna Sprynsian
How we improved i os delivery speed from qa side by Kateryna Sprynsian
Badoo
 
Cs4hs android-01hello
Cs4hs android-01helloCs4hs android-01hello
Cs4hs android-01hello
Gowtham Decker
 
Chapter 3 Reducing Risks Using CI
Chapter 3 Reducing Risks Using CIChapter 3 Reducing Risks Using CI
Chapter 3 Reducing Risks Using CI
Jherson Martelo Medina
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
Dynatrace
 
Introduction To Android For Beginners.
Introduction To Android For Beginners.Introduction To Android For Beginners.
Introduction To Android For Beginners.
Sandeep Londhe
 
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product..."Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
Product of Things
 

Similar to DroidconUK 2013 : Beef up android apps with java tools (20)

Modularization Kaidee App and new features roadmap for 2019
Modularization Kaidee App and new features roadmap for 2019Modularization Kaidee App and new features roadmap for 2019
Modularization Kaidee App and new features roadmap for 2019
 
Synapseindia android apps application
Synapseindia android apps applicationSynapseindia android apps application
Synapseindia android apps application
 
Nagios Conference 2012 - Nathan Vonnahme - Monitoring the User Experience
Nagios Conference 2012 - Nathan Vonnahme - Monitoring the User ExperienceNagios Conference 2012 - Nathan Vonnahme - Monitoring the User Experience
Nagios Conference 2012 - Nathan Vonnahme - Monitoring the User Experience
 
When & How to Successfully use Test Automation for Mobile Applications
When & How to Successfully use Test Automation for Mobile ApplicationsWhen & How to Successfully use Test Automation for Mobile Applications
When & How to Successfully use Test Automation for Mobile Applications
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Mobitop
MobitopMobitop
Mobitop
 
Mobitop
MobitopMobitop
Mobitop
 
Mobitop
MobitopMobitop
Mobitop
 
Mobitop
MobitopMobitop
Mobitop
 
Android testing
Android testingAndroid testing
Android testing
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
 
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.
 
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
 
How we improved i os delivery speed from qa side by Kateryna Sprynsian
How we improved i os delivery speed from qa side by Kateryna SprynsianHow we improved i os delivery speed from qa side by Kateryna Sprynsian
How we improved i os delivery speed from qa side by Kateryna Sprynsian
 
Cs4hs android-01hello
Cs4hs android-01helloCs4hs android-01hello
Cs4hs android-01hello
 
Chapter 3 Reducing Risks Using CI
Chapter 3 Reducing Risks Using CIChapter 3 Reducing Risks Using CI
Chapter 3 Reducing Risks Using CI
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
Introduction To Android For Beginners.
Introduction To Android For Beginners.Introduction To Android For Beginners.
Introduction To Android For Beginners.
 
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product..."Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
 

More from jeromevdl

Message-Driven Architecture on AWS
Message-Driven Architecture on AWSMessage-Driven Architecture on AWS
Message-Driven Architecture on AWS
jeromevdl
 
Do more with less code in serverless
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverless
jeromevdl
 
Do more with less code in a serverless world
Do more with less code in a serverless worldDo more with less code in a serverless world
Do more with less code in a serverless world
jeromevdl
 
DevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as CodeDevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as Code
jeromevdl
 
Softshake 2017 - Développer un chatbot Alexa
Softshake 2017 - Développer un chatbot AlexaSoftshake 2017 - Développer un chatbot Alexa
Softshake 2017 - Développer un chatbot Alexa
jeromevdl
 
Chatbots buzzword ou nouvel eldorado
Chatbots   buzzword ou nouvel eldoradoChatbots   buzzword ou nouvel eldorado
Chatbots buzzword ou nouvel eldorado
jeromevdl
 
Management projet vs management produit
Management projet vs management produitManagement projet vs management produit
Management projet vs management produit
jeromevdl
 
Softshake - Offline applications
Softshake - Offline applicationsSoftshake - Offline applications
Softshake - Offline applications
jeromevdl
 
My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)
jeromevdl
 
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
jeromevdl
 
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde javaDevoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
jeromevdl
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
jeromevdl
 
Metroide
MetroideMetroide
Metroide
jeromevdl
 

More from jeromevdl (13)

Message-Driven Architecture on AWS
Message-Driven Architecture on AWSMessage-Driven Architecture on AWS
Message-Driven Architecture on AWS
 
Do more with less code in serverless
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverless
 
Do more with less code in a serverless world
Do more with less code in a serverless worldDo more with less code in a serverless world
Do more with less code in a serverless world
 
DevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as CodeDevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as Code
 
Softshake 2017 - Développer un chatbot Alexa
Softshake 2017 - Développer un chatbot AlexaSoftshake 2017 - Développer un chatbot Alexa
Softshake 2017 - Développer un chatbot Alexa
 
Chatbots buzzword ou nouvel eldorado
Chatbots   buzzword ou nouvel eldoradoChatbots   buzzword ou nouvel eldorado
Chatbots buzzword ou nouvel eldorado
 
Management projet vs management produit
Management projet vs management produitManagement projet vs management produit
Management projet vs management produit
 
Softshake - Offline applications
Softshake - Offline applicationsSoftshake - Offline applications
Softshake - Offline applications
 
My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)
 
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
 
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde javaDevoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
 
Metroide
MetroideMetroide
Metroide
 

Recently uploaded

Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
FilipTomaszewski5
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
Discover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched ContentDiscover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched Content
ScyllaDB
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
leebarnesutopia
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 

Recently uploaded (20)

Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
Discover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched ContentDiscover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched Content
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
 

DroidconUK 2013 : Beef up android apps with java tools

  • 1. BEEF UP ANDROID APPS USING JAVA TOOLS Stéphane Nicolas & Jérôme Van Der Linden
  • 2. 2   Jerome Van Der Linden android-­‐holo-­‐colors.com   jeromevdl   @jeromevdl   +jerome  van  der  linden  
  • 3. 3   Stéphane Nicolas ox   BoundB And  others  :  RoboDemo,  Quality  Analysis  Tools  for  Android,  android-­‐maven-­‐plugin,  …   stephanenicolas   snicolas   +stephane  nicolas  
  • 5. 5   1 ONCE UPON A TIME JAVA ENVIRONMENT
  • 7. 7   Everything is testable Everything is measurable Everything is integrated No excuses to have poor apps !
  • 11. 11   Almost YES… … a story of Virtual Machine So what … ?
  • 14. 14   (almost) (almost) Everything is testable Everything is measurable BUT Everything is NOT integrated
  • 15. 15   Quality Tools for Android http://goo.gl/zGFvda
  • 16. 16   3 Quality Tools Android Ant
  • 17.
  • 18. 18   4 Quality Tools Android Maven
  • 20. 20   The ultimate profile # run junit, robotium, robolectric tests and get code coverage! > mvn clean install –P jacoco!
  • 21. 21   Maven Profiles Junit  +   Robo,um Robolectric UIAutomator Code   coverage standard emma cobertura ui   automator spoon jacoco x2   Quality   checks   (Checkstyle  +   findbugs  +   PMD  +  lint) Sonar
  • 22. 22   Android Lint Sonar plugin # analyse code (pmd, checkstyle, findbugs, lint) and report in sonar! > mvn sonar:sonar –P jacoco! hOps://github.com/SonarCommunity/sonar-­‐android  
  • 23. 23   Not an archetype (see akquinet : http://goo.gl/O46LIw) Only samples Do not use everything ! Pick up what you need !
  • 24. 24   Return of real life experience Maven   Jenkins   Sonar  (PMD,  checkstyle,  findbugs,  lint)   Junit  (Instrumenta[onTestCase)   ~  100  screens  (phone  +  tablet)   ~  5  developers  during  only  5  months   ~  60k  loc  (java),  15k  loc  (xml)   ~  400  unit  tests  :  not  an  excep[onal  coverage  (~  30%)   Built  on  each  commit  on  Jenkins  +  Genymo[on   0  lint,  pmd,  findbugs,  checkstyle  viola[ons   1  sonar  report  generated  each  night  with  those  metrics     è  An  happy  customer  J  
  • 25. 25   Lessons learned A  laborious  development  environment  :   eclipse  +  maven  +  m2eclipse  +  android  m2e  connector   è Many  hours  lost  è  Use  IntelliJ  !     A  laborious  execu[on  environment  :  emulator   è  Too  slow  è  Use  Genymo[on  (or  at  least  a  device)  !     Not  enough  tests  :   è Instrumenta[onTestCase  are  too  heavy/slow  for  Unit  Tes[ng     è Use  Robolectric  and/or  think  about  MV*  paOern   è  Keep  Instrumenta[onTestCase  for  Android  specific  (Ac[vity,   Services,  …)    
  • 26. 26   Lessons learned A  robust  development  environment  :   eclipse  +  maven  +  m2eclipse  +  android  m2e  connector   è  s[ll  some  problem  with  eclipse  and  maven  integra[on     About  tests   è Instrumenta[onTestCase  are  fast  enough  with  GenyMo[on   è  Robolectric  can’t  give  you  enough  confidence      
  • 27. 27   5 Quality Tools Android Gradle
  • 28. 28   Before     V  0.6   Lint UIAutomator Monkey & Monkey Runner Robolectric PMD, checkstyle, findbugs Emma, Cobertura, Jacoco
  • 30. 30   V  0.6.+   Lint UIAutomator Monkey & Monkey Runner Robolectric PMD, checkstyle, findbugs Emma, Cobertura, Jacoco
  • 31. 31   Quality # # > # > the gradle way run junit, robotium, robolectric tests ! AND Chekstyle + PMD + Findbugs + Classycle! gradle check! report in sonar! gradle sonarRunner!
  • 32. 32   6 Conclusion Android is filling the gap
  • 33. Gradle Feature Application Variants & Manifest merging Standard  tests  &  Robo,um Code  Coverage   Robolectric UI  automator  /  Monkey  /   Monkey  Runner PMD  /  CheckStyle  /   FindBgugs  /  Classycle  /  Lint Sonar  &  Project  Sites 0.6.1 VS Maven Gradle Maven ? 33   3.6.1
  • 34. Android offers 34   lots of quality tools lots of testing methods rapid testing Everything gets easier to use Build rock solid apps
  • 35. 35   Thank You ! Any Question ? stephanenicolas   jeromevdl   snicolas   @jeromevdl   Stéphane Nicolas & Jérôme Van Der Linden +stephane  nicolas   +jerome  van  der  linden  
  • 36. 36   Quality Tools for Android http://goo.gl/zGFvda