SlideShare a Scribd company logo
Name: Matsuo Kazuaki
Twitter: @Kazu_cocoa
Job:(Mobile)Test Engineer
@Cookpad
index
• Our philosophy
• Development - Web applications
• Development - Mobile applications
• Conclusion
•
•
•
•
•
•
•
•
•
•
•
•
Our Manifesto
User First
Our Philosophy
Our
Huge Rails Application
Web Application
(include API Server)
Web Site
% rake stats
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 49708 | 40012 | 537 | 4054 | 7 | 7 |
| Helpers | 15122 | 12420 | 15 | 1432 | 95 | 6 |
| Models | 98535 | 77593 | 1786 | 8670 | 4 | 6 |
| Mailers | 2122 | 1698 | 41 | 198 | 4 | 6 |
| Workers | 639 | 540 | 20 | 31 | 1 | 15 |
| Chanko units | 12544 | 10354 | 6 | 255 | 42 | 38 |
| Libraries | 49927 | 41289 | 603 | 3724 | 6 | 9 |
| Feature specs | 45798 | 37707 | 0 | 208 | 0 | 179 |
| Request specs | 39112 | 33563 | 0 | 16 | 0 | 2095 |
| Routing specs | 664 | 536 | 0 | 0 | 0 | 0 |
| Controller specs | 60829 | 50293 | 7 | 127 | 18 | 394 |
| Helper specs | 79735 | 65835 | 5 | 73 | 14 | 899 |
| Model specs | 151719|125330 | 6 | 128 | 21 | 977 |
| Worker specs | 862 | 715 | 0 | 1 | 0 | 713 |
| Chanko unit specs | 10396 | 8379 | 0 | 9 | 0 | 929 |
| Library specs | 23528 | 19679 | 27 | 128 | 4 | 151 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total |641240 |525943 | 3053 | 19054 | 6 | 25 |
+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 183906 Test LOC: 342037 Code to Test Ratio: 1:1.9
% bundle show | wc -l
284
Deployment PipelinePR
merge
pull
tag
deploy
deploy
• Frequent small release
• 10+ deploy per a day
• To decrease incident risk per deploy
• Minimise period of incidents
• Roll back with low risk
• Finish rollback within 1 min
Release cycle
Development style
• Team exist in each departments
• Basically, they don’t have any test
engineers.
• One monolithic application
• Challenging to Microservices…
• Each developers are in charge of their
own implemented feature.
Must write test code
• All developers should implement test
code before merge pr to master.
• Why…
• To keep development cycle
• We can’t estimate side-effect
Automated Test
• Must implement specs when implement features
• RSpec based tests
• 20000+ RSpec examples
• It takes many hours finishing all test.
• Capybara
• with Headless browser
Hand Test
• Checked on production test
• Before release
• Checked feature by developers
• Tests on development phase
• User test(Internal benchmark)
• Security Test
• and so on…
Priority in test code
• Keep test quick
• We want to keep release cycle quick.
• Developed RRRSpec to keep speed
• Finish all spec test cases around
5 hour => Finish within 10 minutes
Tools developed by Cookpad
• Chanko
• protect incidents
• RRRSpec
• Distributed Rspec framework
• Switch_point
• change target DB
• Database_rewinder
• fast database cleaner
• Kage
• proxy to send copied real request to test
environments.
Challenge to Microservices
• Cookpad is a huge monolithic
application
Challenge to Microservices
• Many small web applications
• Keep release cycle quickly
• Stable and quick deploy
• ex. mamiya(our original tool)
How to keep stable them?
• Dependency
• Distributed Computing…
It’s one of my task… 😢
Mobile Application
(iOS/Android)
Release flow
PipelinePR
merge
pull
tag
publish
tointernal
• Around 2 week release cycle
• Decide which feature implement in
which cycle by each departments
• High release cycle lead
unpleasant
• Optimize to Google Play / App Store
Release
Development
• mobile-infra
• iOS/Android engineers: 3
• Test Engineer: 1 <= ME!!✊
• Each departments
• Android / iOS engineers
• API engineers (also develop web site)
• Not one team develop our application.
Test Level
• Unit Test
• Integration Test
• Feature Test
• Performance / GUI and so on.
• Make more efficient for tests
Develop/Test Tools
• Debug
• Stetho, PonyDebugger
• Enhance Testability
• AndroidJUnit4 and Java libraries
• XCTest, Mocks
• Appium, Espresso, UIAutomation
• Reporting
• Turnip / turnip_formatter
• kobold
Challenge to continuous
stable release…
• Reduce review load
• Dokumi
• Comment the result of static
analytics automatically.
• Enhance testability
• DI into Android…
• Establish hermetic environment
Other tests
• Performance
• Security
• Attractive
and so on…
Conclusion
• We test to keep high speed
development cycle.
• We challenge to Microservices.
• We challenge how to value mobile
applications.
Thank you.

More Related Content

Viewers also liked

3Com 3C6120M-TPP
3Com 3C6120M-TPP3Com 3C6120M-TPP
3Com 3C6120M-TPP
savomir
 
PROCESO DE SELECCION
PROCESO DE SELECCIONPROCESO DE SELECCION
PROCESO DE SELECCION
franklin porras
 
07 reason 2006 innovativo diseñovialmásamigable 1introducción
07 reason 2006 innovativo diseñovialmásamigable 1introducción07 reason 2006 innovativo diseñovialmásamigable 1introducción
07 reason 2006 innovativo diseñovialmásamigable 1introducción
Sierra Francisco Justo
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
Kazuaki Matsuo
 
20160913 cookpad ios_jp
20160913 cookpad ios_jp20160913 cookpad ios_jp
20160913 cookpad ios_jp
Kazuaki Matsuo
 
3Com 3C10420A
3Com 3C10420A3Com 3C10420A
3Com 3C10420A
savomir
 
ашық сабақ кенжегульжанасы
ашық сабақ  кенжегульжанасыашық сабақ  кенжегульжанасы
ашық сабақ кенжегульжанасы
oquzaman
 
T2 e2 luaces-raquel
T2 e2 luaces-raquelT2 e2 luaces-raquel
T2 e2 luaces-raquel
Raquel Luaces
 
ADHD: Mohammad Moosa
ADHD: Mohammad MoosaADHD: Mohammad Moosa
ADHD: Mohammad Moosa
Mohammad Moosa
 
Ebau
EbauEbau
Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1
Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1
Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1
Ковпитська ЗОШ
 
ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...
ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...
ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...
Prashant Mahajan
 
Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...
Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...
Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...
Prashant Mahajan
 

Viewers also liked (13)

3Com 3C6120M-TPP
3Com 3C6120M-TPP3Com 3C6120M-TPP
3Com 3C6120M-TPP
 
PROCESO DE SELECCION
PROCESO DE SELECCIONPROCESO DE SELECCION
PROCESO DE SELECCION
 
07 reason 2006 innovativo diseñovialmásamigable 1introducción
07 reason 2006 innovativo diseñovialmásamigable 1introducción07 reason 2006 innovativo diseñovialmásamigable 1introducción
07 reason 2006 innovativo diseñovialmásamigable 1introducción
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
 
20160913 cookpad ios_jp
20160913 cookpad ios_jp20160913 cookpad ios_jp
20160913 cookpad ios_jp
 
3Com 3C10420A
3Com 3C10420A3Com 3C10420A
3Com 3C10420A
 
ашық сабақ кенжегульжанасы
ашық сабақ  кенжегульжанасыашық сабақ  кенжегульжанасы
ашық сабақ кенжегульжанасы
 
T2 e2 luaces-raquel
T2 e2 luaces-raquelT2 e2 luaces-raquel
T2 e2 luaces-raquel
 
ADHD: Mohammad Moosa
ADHD: Mohammad MoosaADHD: Mohammad Moosa
ADHD: Mohammad Moosa
 
Ebau
EbauEbau
Ebau
 
Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1
Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1
Вправи і задачі на засвоєння таблиць додавання і віднімання числа 1
 
ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...
ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...
ARE THE SERVICES DELIVERED EMPLOYABLE? A SCENARIO OF TECHNICAL EDUCATION IN R...
 
Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...
Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...
Downcast Enrollments: A Desperate Need of Holistic Marketing for Technical Ed...
 

Similar to 20150423 m3

Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
tieleman
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
bartzon
 
IDEAS Global A.I. Conference 2022.pdf
IDEAS Global A.I. Conference 2022.pdfIDEAS Global A.I. Conference 2022.pdf
IDEAS Global A.I. Conference 2022.pdf
Manimuthu Ayyannan
 
MySQL Enterprise Monitor
MySQL Enterprise MonitorMySQL Enterprise Monitor
MySQL Enterprise Monitor
Mario Beck
 
Data Stack Summit 2023
Data Stack Summit 2023Data Stack Summit 2023
Data Stack Summit 2023
Manimuthu Ayyannan
 
Maximo Administration Training - Copy.pptx
Maximo Administration Training - Copy.pptxMaximo Administration Training - Copy.pptx
Maximo Administration Training - Copy.pptx
hassansakr14
 
Hitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning toolsHitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning tools
Bjoern Rost
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
gjuljo
 
How to Leverage SAFe 5.0 for Your Enterprise Cloud Strategy
How to Leverage SAFe 5.0 for Your Enterprise Cloud StrategyHow to Leverage SAFe 5.0 for Your Enterprise Cloud Strategy
How to Leverage SAFe 5.0 for Your Enterprise Cloud Strategy
Cprime
 
Migrate to platform of your choice
Migrate to platform of your choiceMigrate to platform of your choice
Migrate to platform of your choice
Ashnikbiz
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
Araf Karsh Hamid
 
Fast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceFast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud Service
Gustavo Rene Antunez
 
Key Factors To Ensure Test Automation Framework Success
Key Factors To Ensure Test Automation Framework SuccessKey Factors To Ensure Test Automation Framework Success
Key Factors To Ensure Test Automation Framework Success
Ho Chi Minh City Software Testing Club
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa intro
Sonic leigh
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
Markus Eisele
 
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Vimal Suba
 
Harnessing Configuration for Web GIS Application Development
Harnessing Configuration for Web GIS Application DevelopmentHarnessing Configuration for Web GIS Application Development
Harnessing Configuration for Web GIS Application Development
GeCo in the Rockies
 
AWS Certified DevOps Engineer: What it is and how to get certified
AWS Certified DevOps Engineer: What it is and how to get certifiedAWS Certified DevOps Engineer: What it is and how to get certified
AWS Certified DevOps Engineer: What it is and how to get certified
Infosec
 
PostgreSQL: Past present Future
PostgreSQL: Past present FuturePostgreSQL: Past present Future
PostgreSQL: Past present Future
PGConf APAC
 
Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...
Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...
Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...
Chris Haddad
 

Similar to 20150423 m3 (20)

Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
IDEAS Global A.I. Conference 2022.pdf
IDEAS Global A.I. Conference 2022.pdfIDEAS Global A.I. Conference 2022.pdf
IDEAS Global A.I. Conference 2022.pdf
 
MySQL Enterprise Monitor
MySQL Enterprise MonitorMySQL Enterprise Monitor
MySQL Enterprise Monitor
 
Data Stack Summit 2023
Data Stack Summit 2023Data Stack Summit 2023
Data Stack Summit 2023
 
Maximo Administration Training - Copy.pptx
Maximo Administration Training - Copy.pptxMaximo Administration Training - Copy.pptx
Maximo Administration Training - Copy.pptx
 
Hitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning toolsHitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning tools
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
 
How to Leverage SAFe 5.0 for Your Enterprise Cloud Strategy
How to Leverage SAFe 5.0 for Your Enterprise Cloud StrategyHow to Leverage SAFe 5.0 for Your Enterprise Cloud Strategy
How to Leverage SAFe 5.0 for Your Enterprise Cloud Strategy
 
Migrate to platform of your choice
Migrate to platform of your choiceMigrate to platform of your choice
Migrate to platform of your choice
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
 
Fast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceFast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud Service
 
Key Factors To Ensure Test Automation Framework Success
Key Factors To Ensure Test Automation Framework SuccessKey Factors To Ensure Test Automation Framework Success
Key Factors To Ensure Test Automation Framework Success
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa intro
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
 
Harnessing Configuration for Web GIS Application Development
Harnessing Configuration for Web GIS Application DevelopmentHarnessing Configuration for Web GIS Application Development
Harnessing Configuration for Web GIS Application Development
 
AWS Certified DevOps Engineer: What it is and how to get certified
AWS Certified DevOps Engineer: What it is and how to get certifiedAWS Certified DevOps Engineer: What it is and how to get certified
AWS Certified DevOps Engineer: What it is and how to get certified
 
PostgreSQL: Past present Future
PostgreSQL: Past present FuturePostgreSQL: Past present Future
PostgreSQL: Past present Future
 
Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...
Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...
Driving Enterprise Architecture Redesign: Cloud-Native Platforms, APIs, and D...
 

More from Kazuaki Matsuo

2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf
Kazuaki Matsuo
 
Add new commands in appium 2.0
Add new commands in appium 2.0Add new commands in appium 2.0
Add new commands in appium 2.0
Kazuaki Matsuo
 
Manage appium dependencies with -appium-home in appium 2.0
Manage appium dependencies with  -appium-home in appium 2.0Manage appium dependencies with  -appium-home in appium 2.0
Manage appium dependencies with -appium-home in appium 2.0
Kazuaki Matsuo
 
20210616-career-example-at-icare
20210616-career-example-at-icare20210616-career-example-at-icare
20210616-career-example-at-icare
Kazuaki Matsuo
 
Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (English)Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (English)
Kazuaki Matsuo
 
Chrome Devtools Protocol via Selenium/Appium (Japanese)
Chrome Devtools Protocol via Selenium/Appium (Japanese)Chrome Devtools Protocol via Selenium/Appium (Japanese)
Chrome Devtools Protocol via Selenium/Appium (Japanese)
Kazuaki Matsuo
 
Xcode 11におけるXCUITestの挙動
Xcode 11におけるXCUITestの挙動Xcode 11におけるXCUITestの挙動
Xcode 11におけるXCUITestの挙動
Kazuaki Matsuo
 
20191130 system-automation-conference
20191130 system-automation-conference20191130 system-automation-conference
20191130 system-automation-conference
Kazuaki Matsuo
 
Uncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applicationsUncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applications
Kazuaki Matsuo
 
Start contributing to OSS projects on your way
Start contributing to OSS projects on your wayStart contributing to OSS projects on your way
Start contributing to OSS projects on your way
Kazuaki Matsuo
 
Go ahead outside Japan
Go ahead outside JapanGo ahead outside Japan
Go ahead outside Japan
Kazuaki Matsuo
 
CookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomationCookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomation
Kazuaki Matsuo
 
20171215 andoird-test-night
20171215 andoird-test-night20171215 andoird-test-night
20171215 andoird-test-night
Kazuaki Matsuo
 
20170726 ios test_night_no
20170726 ios test_night_no20170726 ios test_night_no
20170726 ios test_night_no
Kazuaki Matsuo
 
20170701 lets-step-into-the-oss-community
20170701 lets-step-into-the-oss-community20170701 lets-step-into-the-oss-community
20170701 lets-step-into-the-oss-community
Kazuaki Matsuo
 
20170613 tech easy
20170613 tech easy20170613 tech easy
20170613 tech easy
Kazuaki Matsuo
 
20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo
Kazuaki Matsuo
 
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
Kazuaki Matsuo
 
20161126 to ruby
20161126 to ruby20161126 to ruby
20161126 to ruby
Kazuaki Matsuo
 
20160914 te engineer
20160914 te engineer20160914 te engineer
20160914 te engineer
Kazuaki Matsuo
 

More from Kazuaki Matsuo (20)

2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf
 
Add new commands in appium 2.0
Add new commands in appium 2.0Add new commands in appium 2.0
Add new commands in appium 2.0
 
Manage appium dependencies with -appium-home in appium 2.0
Manage appium dependencies with  -appium-home in appium 2.0Manage appium dependencies with  -appium-home in appium 2.0
Manage appium dependencies with -appium-home in appium 2.0
 
20210616-career-example-at-icare
20210616-career-example-at-icare20210616-career-example-at-icare
20210616-career-example-at-icare
 
Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (English)Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (English)
 
Chrome Devtools Protocol via Selenium/Appium (Japanese)
Chrome Devtools Protocol via Selenium/Appium (Japanese)Chrome Devtools Protocol via Selenium/Appium (Japanese)
Chrome Devtools Protocol via Selenium/Appium (Japanese)
 
Xcode 11におけるXCUITestの挙動
Xcode 11におけるXCUITestの挙動Xcode 11におけるXCUITestの挙動
Xcode 11におけるXCUITestの挙動
 
20191130 system-automation-conference
20191130 system-automation-conference20191130 system-automation-conference
20191130 system-automation-conference
 
Uncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applicationsUncovering breaking changes behind UI on mobile applications
Uncovering breaking changes behind UI on mobile applications
 
Start contributing to OSS projects on your way
Start contributing to OSS projects on your wayStart contributing to OSS projects on your way
Start contributing to OSS projects on your way
 
Go ahead outside Japan
Go ahead outside JapanGo ahead outside Japan
Go ahead outside Japan
 
CookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomationCookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomation
 
20171215 andoird-test-night
20171215 andoird-test-night20171215 andoird-test-night
20171215 andoird-test-night
 
20170726 ios test_night_no
20170726 ios test_night_no20170726 ios test_night_no
20170726 ios test_night_no
 
20170701 lets-step-into-the-oss-community
20170701 lets-step-into-the-oss-community20170701 lets-step-into-the-oss-community
20170701 lets-step-into-the-oss-community
 
20170613 tech easy
20170613 tech easy20170613 tech easy
20170613 tech easy
 
20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo
 
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
 
20161126 to ruby
20161126 to ruby20161126 to ruby
20161126 to ruby
 
20160914 te engineer
20160914 te engineer20160914 te engineer
20160914 te engineer
 

Recently uploaded

UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 

Recently uploaded (20)

UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 

20150423 m3

  • 1.
  • 2. Name: Matsuo Kazuaki Twitter: @Kazu_cocoa Job:(Mobile)Test Engineer @Cookpad
  • 3. index • Our philosophy • Development - Web applications • Development - Mobile applications • Conclusion
  • 9. % rake stats +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 49708 | 40012 | 537 | 4054 | 7 | 7 | | Helpers | 15122 | 12420 | 15 | 1432 | 95 | 6 | | Models | 98535 | 77593 | 1786 | 8670 | 4 | 6 | | Mailers | 2122 | 1698 | 41 | 198 | 4 | 6 | | Workers | 639 | 540 | 20 | 31 | 1 | 15 | | Chanko units | 12544 | 10354 | 6 | 255 | 42 | 38 | | Libraries | 49927 | 41289 | 603 | 3724 | 6 | 9 | | Feature specs | 45798 | 37707 | 0 | 208 | 0 | 179 | | Request specs | 39112 | 33563 | 0 | 16 | 0 | 2095 | | Routing specs | 664 | 536 | 0 | 0 | 0 | 0 | | Controller specs | 60829 | 50293 | 7 | 127 | 18 | 394 | | Helper specs | 79735 | 65835 | 5 | 73 | 14 | 899 | | Model specs | 151719|125330 | 6 | 128 | 21 | 977 | | Worker specs | 862 | 715 | 0 | 1 | 0 | 713 | | Chanko unit specs | 10396 | 8379 | 0 | 9 | 0 | 929 | | Library specs | 23528 | 19679 | 27 | 128 | 4 | 151 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total |641240 |525943 | 3053 | 19054 | 6 | 25 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 183906 Test LOC: 342037 Code to Test Ratio: 1:1.9
  • 10. % bundle show | wc -l 284
  • 12. • Frequent small release • 10+ deploy per a day • To decrease incident risk per deploy • Minimise period of incidents • Roll back with low risk • Finish rollback within 1 min Release cycle
  • 13. Development style • Team exist in each departments • Basically, they don’t have any test engineers. • One monolithic application • Challenging to Microservices… • Each developers are in charge of their own implemented feature.
  • 14.
  • 15. Must write test code • All developers should implement test code before merge pr to master. • Why… • To keep development cycle • We can’t estimate side-effect
  • 16. Automated Test • Must implement specs when implement features • RSpec based tests • 20000+ RSpec examples • It takes many hours finishing all test. • Capybara • with Headless browser
  • 17. Hand Test • Checked on production test • Before release • Checked feature by developers • Tests on development phase • User test(Internal benchmark) • Security Test • and so on…
  • 18. Priority in test code • Keep test quick • We want to keep release cycle quick. • Developed RRRSpec to keep speed • Finish all spec test cases around 5 hour => Finish within 10 minutes
  • 19. Tools developed by Cookpad • Chanko • protect incidents • RRRSpec • Distributed Rspec framework • Switch_point • change target DB • Database_rewinder • fast database cleaner • Kage • proxy to send copied real request to test environments.
  • 20. Challenge to Microservices • Cookpad is a huge monolithic application
  • 21. Challenge to Microservices • Many small web applications • Keep release cycle quickly • Stable and quick deploy • ex. mamiya(our original tool)
  • 22. How to keep stable them? • Dependency • Distributed Computing… It’s one of my task… 😢
  • 26. • Around 2 week release cycle • Decide which feature implement in which cycle by each departments • High release cycle lead unpleasant • Optimize to Google Play / App Store Release
  • 27. Development • mobile-infra • iOS/Android engineers: 3 • Test Engineer: 1 <= ME!!✊ • Each departments • Android / iOS engineers • API engineers (also develop web site) • Not one team develop our application.
  • 28. Test Level • Unit Test • Integration Test • Feature Test • Performance / GUI and so on. • Make more efficient for tests
  • 29. Develop/Test Tools • Debug • Stetho, PonyDebugger • Enhance Testability • AndroidJUnit4 and Java libraries • XCTest, Mocks • Appium, Espresso, UIAutomation • Reporting • Turnip / turnip_formatter • kobold
  • 30. Challenge to continuous stable release… • Reduce review load • Dokumi • Comment the result of static analytics automatically. • Enhance testability • DI into Android… • Establish hermetic environment
  • 32. • Performance • Security • Attractive and so on…
  • 33. Conclusion • We test to keep high speed development cycle. • We challenge to Microservices. • We challenge how to value mobile applications.