continuous delivery of insights
play

Continuous delivery of insights August 2017 Javier Moscard - PowerPoint PPT Presentation

Continuous delivery of insights August 2017 Javier Moscard mosca@spoti fz .com The secret is VUCA world Team of teams The author @Javi_Mosca The right music for every moment Started in 2006 in Sweden 140M users Available in


  1. Continuous delivery of insights August 2017 Javier Moscardó mosca@spoti fz .com

  2. The secret is…

  3. VUCA world

  4. Team of teams

  5. The author

  6. @Javi_Mosca

  7. “The right music for every moment” Started in 2006 in Sweden 140M users Available in 61 countries 60M paying subscribers Over 30M songs $5 billion revenue paid to stakeholders Over 2 billion of playlists

  8. The path towards CD of insights

  9. The path towards CD of insights Team of teams

  10. Squad

  11. Alignment example iOS Infra Explore iOS release Search Browse Delorean Catalogue Car integration Artist Album

  12. iOS Infra Explore iOS release ok Search Browse ok ok Catalogue Delorean Artist Car integration Album

  13. Tech Tribe lead

  14. Communication

  15. TPD Tribe leads Tribe leads

  16. Hands off

  17. R&D Tribe leads Tribe leads

  18. Leading like a gardener

  19. The path towards CD of insights Ways of working

  20. Waterfall Discover Design Development Testing Delivery

  21. Agile Design Development Discover Delivery Testing

  22. What are we doing? Discover Design Development Testing Delivery

  23. Discover Design Development Testing Delivery

  24. Pull Request

  25. Mobile clients Con$nuous Delivery Continuous delivery

  26. Backend services Con$nuous Delivery Continuous deployment

  27. The path towards CD of insights Test fj rst approach

  28. Discover Design Development Testing Delivery

  29. Prepare for the worst, hope for the best Volvo Ocean Race

  30. Who owns quality?

  31. QA QA QA

  32. Who tests?

  33. Collaboration

  34. You understand what is important, then you test it, then, if possible, you automate it.

  35. Why test automation?

  36. Manual Exploratory Testing Time cost E2E Integration Tests Unit Tests Static Analysis

  37. When? Local Pre-merge Post-merge Every 2h Less than 10 mins

  38. Where?

  39. Moving slow?

  40. Discover Design Development Delivery Testing

  41. Project Title 00.00.2015 Proprietary & Confidential Spotify 46 Practice continuous delivery

  42. Thank you Join the band! spotify.com/jobs

  43. Check these out… About Spotify More Agile Testing https:/ /press.spotify.com/se/about/ Learning Journeys for the Whole Team Janet Gregory and Lisa Crispin Spotify Culture Team of Teams https:/ /labs.spotify.com/2014/03/27/spotify- engineering-culture-part-1/ New Rules of Engagement for a Complex World https:/ /labs.spotify.com/2014/09/20/spotify- General Stanley McChrystal engineering-culture-part-2/ Build quality, key of continuous Git branching delivery http:/ /nvie.com/posts/a-successful-git-branching- model/ https:/ /leankit.com/blog/2016/10/build-quality-key- continuous-delivery/

  44. GUI testing Scripted Testing vs Model Based Testing

  45. What have we done? Test model Test reporting tools Model interface Non-model Model based tests Implementation Test Data Service UI Layer Client-side test API Java test API JSON data Mobile app View Implementation

  46. Scripted testing @User(flags = TestUserFlag. PREMIUM , tags = UserTag. PLAYLISTS ) @Target(target={TestTarget. SIMULATOR , TestTarget. PHONE }) @Test(groups = {TestGroup. RADIO }, timeOut = Waiter. TIMEOUT_5MIN ) public void startRadioTest() { navigation .openURI( ARTIST_URI ); artist .assertLoaded(); artist .startRadio(); player .assertPlaying(); navigation .openURI( PLAYLIST_URI ); playlist .assertLoaded(); playlist .startRadio(); player .assertPlaying(); navigation .openURI( ALBUM_URI ); album .assertLoaded(); album .startRadio(); player .assertPlaying(); }

  47. Model based testing - MBT

  48. First MBT model

  49. Current MBT model

  50. MBT Interfaces public interface StartRadio { public void e_Init(); public void v_InitialView(); public void e_GoToArtist(); public void v_Artist(); public void e_StartArtistRadio(); public void v_ArtistRadio(); public void e_GoToPlaylist(); public void v_Playlist(); public void e_StartPlaylistRadio(); public void v_PlaylistRadio(); public void e_GoToAlbum(); public void v_Album(); public void e_StartAlbumRadio(); public void v_AlbumRadio(); public void e_Pause(); public void v_TrackNotPlaying(); }

  51. e_Init(); v_InitialView(); e_GoToArtist(); Scripted vs MBT v_Artist(); e_StartArtistRadio(); v_ArtistRadio(); e_Pause(); baseActions.openURL(ARTIST_URI); v_TrackNotPlaying(); artist.assertLoaded(); 
 v_InitialView(); artist.startRadio(); e_GoToAlbum(); player.assertPlaying(); v_Album(); e_StartAlbumRadio(); baseActions.openURL(PLAYLIST_URI); v_AlbumRadio(); playlist.assertLoaded(); 
 e_Pause(); playlist.startRadio(); v_TrackNotPlaying(); player.assertPlaying(); v_InitialView(); e_GoToArtist(); baseActions.openURL(ALBUM_URI); v_Artist(); album.assertLoaded(); 
 e_StartArtistRadio(); album.startRadio(); v_ArtistRadio(); player.assertPlaying(); e_Pause(); v_TrackNotPlaying(); v_InitialView(); e_GoToPlaylist(); v_Playlist(); e_StartPlaylistRadio(); v_PlaylistRadio(); …

  52. Let’s test!

  53. First test scenario Play a track from Search

  54. Repeat it

  55. Repeat it, again

  56. and again

  57. Scripted & MBT Find what is important and automate, what can be automated

  58. Second test scenario Go to “See All tracks” from Search

  59. Scripted & MBT Find what is important and automate, what can be automated

  60. Finding the bug

  61. Preventing the bug

  62. Sources Graphwalker IDE http:/ /graphwalker.github.io/ https:/ /www.jetbrains.com/idea/ Model diagramming https:/ /www.yworks.com/products/yed

Recommend


More recommend