SlideShare a Scribd company logo
1 of 31
Download to read offline
Stuffing a 900lb Gorilla
    into a SmartPhone
     Joel Maher & Clint Talbert

          Mozilla Corporation




                                  1
What is Fennec?




                  2
How are they going to fit
     me in here?           3
How are they going to fit
     me in here?           3
•XPCShell - low level XPCOM testing




     How are they going to fit
          me in here?                 3
•XPCShell - low level XPCOM testing
•Reftest - rendering testing




     How are they going to fit
          me in here?                 3
•XPCShell - low level XPCOM testing
•Reftest - rendering testing
•Crashtest - regression testing for crash bugs




     How are they going to fit
          me in here?                            3
•XPCShell - low level XPCOM testing
•Reftest - rendering testing
•Crashtest - regression testing for crash bugs
•Mochitest - JS test framework heavily modified
to do general purpose content testing




     How are they going to fit
          me in here?                            3
•XPCShell - low level XPCOM testing
•Reftest - rendering testing
•Crashtest - regression testing for crash bugs
•Mochitest - JS test framework heavily modified
to do general purpose content testing
•Mochitest-Chrome - Chrome UI interaction
testing




     How are they going to fit
          me in here?                            3
•XPCShell - low level XPCOM testing
•Reftest - rendering testing
•Crashtest - regression testing for crash bugs
•Mochitest - JS test framework heavily modified
to do general purpose content testing
•Mochitest-Chrome - Chrome UI interaction
testing
•Mochitest-Browser - White box UI automation
testing


     How are they going to fit
          me in here?                            3
•XPCShell - low level XPCOM testing
•Reftest - rendering testing
•Crashtest - regression testing for crash bugs
•Mochitest - JS test framework heavily modified
to do general purpose content testing
•Mochitest-Chrome - Chrome UI interaction
testing
•Mochitest-Browser - White box UI automation
testing
•Mozmill - Black box UI automation (not ready
for Fennec yet)
     How are they going to fit
          me in here?                            3
Platforms
            4
Platforms
            4
Platforms
            4
Platforms
            4
Platforms
            4
Platforms
            4
Platforms
            4
Platforms
            5
Roadmap
          6
Fennec Test Automation




                         7
Test Reporting
                 8
Current Approach
• Running tests on desktop build
• Decoupling the tests
• Making tools mobile
• Breaking tests into small pieces
• Stabilizing end to end
• Reducing the runtime
• Tracking results
                                     9
Decoupling the Tests

• Historically, tests integrated into build
  system
• Required directory structure and tools
• Created makefile target to package tests
  into a tarball for easy distribution



                                              10
Making Tools Mobile

• Python requirements for each platform
• Networking test tools (ssl, http server)
• Test harness scripts had hard coded paths
• Limited memory and storage

                                              11
Breaking Tests into
        Chunks

• Cannot run full test harness at once
• Chunks based on directories
• Managing test data, manifest and log files


                                              12
Stabilizing End to End

• Modifying test harness to look for a hang
• Collecting log files
• Getting the same results over and over
  again
• Device stabilization

                                              13
Reducing Total Runtime
• Initial runtime for all tests end to end was
  26 hours
• Test on release and optimized builds only,
  no debug (13 hours)
• Running on 4 devices in parallel (4 hours)
• Increasing pool to 8 devices balances
  parallel overhead with long tests


                                                 14
Tracking Results

• Instead of one log file per test suite, we
  now have hundreds
• Initially we would concatenate the logs and
  parse them for a summary
• Upload log chunks to CouchDB server

                                                15
Get the source:
http://wiki.mozilla.org/mobile/QAOSCON09
                             Questions?
                             Thank you
                             jmaher@mozilla.com
                            ctalbert@mozilla.com




                                                   16
Photo Credits
•   Gorilla Photo: http://www.wrybaby.com/blog/wp-content/uploads/2008/09/
    gorilla_phone_1.jpg

•   HTC Touch Pro: http://www.letsgodigital.org/en/19174/htc-touch-pro/

•   Nokia e71: http://www.flickr.com/photos/normanjohn/2645312857/

•   Nokia n810: http://168hours.wordpress.com/2008/08/10/10-coolest-devices-
    running-linux/

•   Samsung Omnia: http://www.gsmarena.com/samsung_i900_omnia-
    pictures-2422.php

•   Our Mobile Tinderbox: http://www.flickr.com/photos/drkscrtlv/sets/
    72157619162182878/

•   Signpost: http://www.flickr.com/photos/jmcphotos/2131206015/




                                                                               17

More Related Content

What's hot

From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
Jan Gehring
 
Making Symfony Services async with RabbitMq (and more Symfony)
Making Symfony Services async with RabbitMq (and more Symfony)Making Symfony Services async with RabbitMq (and more Symfony)
Making Symfony Services async with RabbitMq (and more Symfony)
Gaetano Giunta
 
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil BartlettHow to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
mfrancis
 

What's hot (20)

Ansible E2E Testing
Ansible E2E TestingAnsible E2E Testing
Ansible E2E Testing
 
EhTrace -- RoP Hooks
EhTrace -- RoP HooksEhTrace -- RoP Hooks
EhTrace -- RoP Hooks
 
Let's build a PaaS platform, how hard could it be?
Let's build a PaaS platform, how hard could it be?Let's build a PaaS platform, how hard could it be?
Let's build a PaaS platform, how hard could it be?
 
PostgreSQL: meet your queue
PostgreSQL: meet your queuePostgreSQL: meet your queue
PostgreSQL: meet your queue
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
 
Openvz booth
Openvz boothOpenvz booth
Openvz booth
 
XS Boston 2008 Quantitative
XS Boston 2008 QuantitativeXS Boston 2008 Quantitative
XS Boston 2008 Quantitative
 
Training Slides: 103 - Basics - Simple Tungsten Clustering Installation
Training Slides: 103 - Basics - Simple Tungsten Clustering InstallationTraining Slides: 103 - Basics - Simple Tungsten Clustering Installation
Training Slides: 103 - Basics - Simple Tungsten Clustering Installation
 
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
 
Who Should Use Powershell? You Should Use Powershell!
Who Should Use Powershell?  You Should Use Powershell!Who Should Use Powershell?  You Should Use Powershell!
Who Should Use Powershell? You Should Use Powershell!
 
Understanding salt modular sub-systems and customization
Understanding salt   modular sub-systems and customizationUnderstanding salt   modular sub-systems and customization
Understanding salt modular sub-systems and customization
 
Rabbits, indians and... Symfony meets queueing brokers
Rabbits, indians and...  Symfony meets queueing brokersRabbits, indians and...  Symfony meets queueing brokers
Rabbits, indians and... Symfony meets queueing brokers
 
Asynchronous Programming in Kotlin with Coroutines
Asynchronous Programming in Kotlin with CoroutinesAsynchronous Programming in Kotlin with Coroutines
Asynchronous Programming in Kotlin with Coroutines
 
Making Symfony Services async with RabbitMq (and more Symfony)
Making Symfony Services async with RabbitMq (and more Symfony)Making Symfony Services async with RabbitMq (and more Symfony)
Making Symfony Services async with RabbitMq (and more Symfony)
 
OSv: probably the best OS for cloud workloads you've never hear of
OSv: probably the best OS for cloud workloads you've never hear ofOSv: probably the best OS for cloud workloads you've never hear of
OSv: probably the best OS for cloud workloads you've never hear of
 
Distributing OSGi
Distributing OSGiDistributing OSGi
Distributing OSGi
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
DjangoZoom lightning talk
DjangoZoom lightning talkDjangoZoom lightning talk
DjangoZoom lightning talk
 
Parallel Running Automation Solution with Docker, Jenkins and Zalenium
Parallel Running Automation Solution with Docker, Jenkins and ZaleniumParallel Running Automation Solution with Docker, Jenkins and Zalenium
Parallel Running Automation Solution with Docker, Jenkins and Zalenium
 
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil BartlettHow to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
 

Similar to How to stuff a 900 pound gorilla into a smartphone

Presentation about Overthere for J-Fall 2011
Presentation about Overthere for J-Fall 2011Presentation about Overthere for J-Fall 2011
Presentation about Overthere for J-Fall 2011
Vincent Partington
 
Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...
Lucas Jellema
 
PHPUnit & Continuous Integration: An Introduction
PHPUnit & Continuous Integration: An IntroductionPHPUnit & Continuous Integration: An Introduction
PHPUnit & Continuous Integration: An Introduction
alexmace
 

Similar to How to stuff a 900 pound gorilla into a smartphone (20)

Performance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedPerformance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons Learned
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Mozmill Crowd
Mozmill CrowdMozmill Crowd
Mozmill Crowd
 
Presentation about Overthere for J-Fall 2011
Presentation about Overthere for J-Fall 2011Presentation about Overthere for J-Fall 2011
Presentation about Overthere for J-Fall 2011
 
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
Virtual Flink Forward 2020: How Streaming Helps Your Staging Environment and ...
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engine
 
Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
PHPUnit & Continuous Integration: An Introduction
PHPUnit & Continuous Integration: An IntroductionPHPUnit & Continuous Integration: An Introduction
PHPUnit & Continuous Integration: An Introduction
 
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
Automated Testing with Docker on Steroids - nlOUG TechExperience 2018 (Amersf...
 
Automated Visual Regression Testing by Dave Sadlon
Automated Visual Regression Testing by Dave SadlonAutomated Visual Regression Testing by Dave Sadlon
Automated Visual Regression Testing by Dave Sadlon
 
Design for Scale / Surge 2010
Design for Scale / Surge 2010Design for Scale / Surge 2010
Design for Scale / Surge 2010
 
ONOS System Test - ONS2016
ONOS System Test - ONS2016ONOS System Test - ONS2016
ONOS System Test - ONS2016
 
Ansible top 10 - 2018
Ansible top 10 -  2018Ansible top 10 -  2018
Ansible top 10 - 2018
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
Metasploit For Beginners
Metasploit For BeginnersMetasploit For Beginners
Metasploit For Beginners
 
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and ServerspecVerifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous Integration
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

How to stuff a 900 pound gorilla into a smartphone

  • 1. Stuffing a 900lb Gorilla into a SmartPhone Joel Maher & Clint Talbert Mozilla Corporation 1
  • 3. How are they going to fit me in here? 3
  • 4. How are they going to fit me in here? 3
  • 5. •XPCShell - low level XPCOM testing How are they going to fit me in here? 3
  • 6. •XPCShell - low level XPCOM testing •Reftest - rendering testing How are they going to fit me in here? 3
  • 7. •XPCShell - low level XPCOM testing •Reftest - rendering testing •Crashtest - regression testing for crash bugs How are they going to fit me in here? 3
  • 8. •XPCShell - low level XPCOM testing •Reftest - rendering testing •Crashtest - regression testing for crash bugs •Mochitest - JS test framework heavily modified to do general purpose content testing How are they going to fit me in here? 3
  • 9. •XPCShell - low level XPCOM testing •Reftest - rendering testing •Crashtest - regression testing for crash bugs •Mochitest - JS test framework heavily modified to do general purpose content testing •Mochitest-Chrome - Chrome UI interaction testing How are they going to fit me in here? 3
  • 10. •XPCShell - low level XPCOM testing •Reftest - rendering testing •Crashtest - regression testing for crash bugs •Mochitest - JS test framework heavily modified to do general purpose content testing •Mochitest-Chrome - Chrome UI interaction testing •Mochitest-Browser - White box UI automation testing How are they going to fit me in here? 3
  • 11. •XPCShell - low level XPCOM testing •Reftest - rendering testing •Crashtest - regression testing for crash bugs •Mochitest - JS test framework heavily modified to do general purpose content testing •Mochitest-Chrome - Chrome UI interaction testing •Mochitest-Browser - White box UI automation testing •Mozmill - Black box UI automation (not ready for Fennec yet) How are they going to fit me in here? 3
  • 20. Roadmap 6
  • 23. Current Approach • Running tests on desktop build • Decoupling the tests • Making tools mobile • Breaking tests into small pieces • Stabilizing end to end • Reducing the runtime • Tracking results 9
  • 24. Decoupling the Tests • Historically, tests integrated into build system • Required directory structure and tools • Created makefile target to package tests into a tarball for easy distribution 10
  • 25. Making Tools Mobile • Python requirements for each platform • Networking test tools (ssl, http server) • Test harness scripts had hard coded paths • Limited memory and storage 11
  • 26. Breaking Tests into Chunks • Cannot run full test harness at once • Chunks based on directories • Managing test data, manifest and log files 12
  • 27. Stabilizing End to End • Modifying test harness to look for a hang • Collecting log files • Getting the same results over and over again • Device stabilization 13
  • 28. Reducing Total Runtime • Initial runtime for all tests end to end was 26 hours • Test on release and optimized builds only, no debug (13 hours) • Running on 4 devices in parallel (4 hours) • Increasing pool to 8 devices balances parallel overhead with long tests 14
  • 29. Tracking Results • Instead of one log file per test suite, we now have hundreds • Initially we would concatenate the logs and parse them for a summary • Upload log chunks to CouchDB server 15
  • 30. Get the source: http://wiki.mozilla.org/mobile/QAOSCON09 Questions? Thank you jmaher@mozilla.com ctalbert@mozilla.com 16
  • 31. Photo Credits • Gorilla Photo: http://www.wrybaby.com/blog/wp-content/uploads/2008/09/ gorilla_phone_1.jpg • HTC Touch Pro: http://www.letsgodigital.org/en/19174/htc-touch-pro/ • Nokia e71: http://www.flickr.com/photos/normanjohn/2645312857/ • Nokia n810: http://168hours.wordpress.com/2008/08/10/10-coolest-devices- running-linux/ • Samsung Omnia: http://www.gsmarena.com/samsung_i900_omnia- pictures-2422.php • Our Mobile Tinderbox: http://www.flickr.com/photos/drkscrtlv/sets/ 72157619162182878/ • Signpost: http://www.flickr.com/photos/jmcphotos/2131206015/ 17