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.
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