@$story->player()Friday, 3 May 13
@Bring Your Stories To LifeThrough Your TestsFriday, 3 May 13
@Introduce YourselvesFriday, 3 May 13
@@stuherbertFriday, 3 May 13
@TestingI’m here to talk aboutFriday, 3 May 13
@Don’t Switch Off Just Yet!Friday, 3 May 13
@StoryplayerI’m here to launchFriday, 3 May 13
@Storyplayeris a new open-source testing toolFriday, 3 May 13
@Created byFriday, 3 May 13
@built inFriday, 3 May 13
@hosted onFriday, 3 May 13
@to test this:We’ve built itFriday, 3 May 13
@DataSift Technical ArchitectureUltrahoseArchiverpushPickleNodePickleNodePickleNodePickleNodePickleNodePickleNodeNode Shar...
@It Plugs A GapIn our testing strategyFriday, 3 May 13
@Testing Strategy?What is ourFriday, 3 May 13
@Layered ApproachCatch different problemsusing different toolsFriday, 3 May 13
@Common Test ApproachUnitTestsAcceptanceTestsIntegrationTestsFriday, 3 May 13
@The Focus Of Each LayerFunctions& MethodsUser Interfaces& APIsServices& SystemsFriday, 3 May 13
@The De Facto StandardFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitFriday, 3 May 13
@Popular ChoicesFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecFriday, 3 May 13
@The Neglected LayerFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpec?Friday, 3 May 13
@Services & Systems?How do we testFriday, 3 May 13
@A Gap To PlugFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecFriday, 3 May 13
@Where Storyplayer Fits InFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecStoryplayerFriday, 3 ...
@A Quick Tourof StoryplayerFriday, 3 May 13
@StoriesIt’s all aboutFriday, 3 May 13
@User StoriesThe things that yourend-users can (and can’t!) doFriday, 3 May 13
@Service StoriesThe things that yourinternal systems can doFriday, 3 May 13
@ProseFriday, 3 May 13
@$story =newStoryFor();Friday, 3 May 13
@Simple PHP ScriptsWe don’t define a new classfor every story we want to testFriday, 3 May 13
@Avoids theclass AVeryLongAndInventiveClassname* 1000 problem!Friday, 3 May 13
@Stories have up to8 PhasesFriday, 3 May 13
@Creating The Test ConditionsTest Environment Setup1Test Setup2Friday, 3 May 13
@Before We TestPre-Test Prediction3Pre-Test Inspection4Friday, 3 May 13
@Perform The Story StepsAction5Friday, 3 May 13
@Did Anything Happen?Post-Test Inspection6Friday, 3 May 13
@Clean Up AfterwardsTest Teardown7Test Environment Teardown8Friday, 3 May 13
@ClosureEach phase is aFriday, 3 May 13
@$story->setTestEnvironmentSetup(function($st) {// story steps go here});Friday, 3 May 13
@the $st objectAll actions are done usingFriday, 3 May 13
@The $st objectis a dynamic module loaderFriday, 3 May 13
@Brand new objectsare instantiatedevery new actionFriday, 3 May 13
@This approach ensuresno weird bugs in testscaused by re-usingobjects between actionsFriday, 3 May 13
@3 kinds of actionThere areFriday, 3 May 13
@$st->fromXXXX()Get the state of somethingFriday, 3 May 13
@$st->expectsXXXX()Test the state of somethingFriday, 3 May 13
@$st->usingXXXX()Change the state of somethingFriday, 3 May 13
@$story->addAction(function($st) {$st->usingBrowser()->gotoPage(...);$st->usingBrowser()->waitForTitle(...);....});Friday,...
@$story->setPostTestInspection(function($st) {$st->usingBrowser()->gotoPage(...);$st->usingBrowser()->waitForTitle(...);$s...
@14 ModulesIncludedFriday, 3 May 13
@VagrantCreate test environments usingFriday, 3 May 13
@Using The Vagrant ModuleSPVagrant VMVVagrant VMCreatesFriday, 3 May 13
@Using The Vagrant ModuleVagrant VMVSP ServiceVagrant VMDeploysFriday, 3 May 13
@Using The Vagrant ModuleVagrant VMVSP ServiceVagrant VMTestsSPFriday, 3 May 13
@Using The Vagrant ModuleVagrant VMVSP ServiceVagrant VMDestroysFriday, 3 May 13
@SavageDMonitor your VMs and processes using(Another DataSift tool we’re releasing tonight)Friday, 3 May 13
@Using SavageDVagrant VMVSPVagrant VMCreatesFriday, 3 May 13
@Using SavageDVagrant VMVSP ServiceVagrant VMDeploysSavageDFriday, 3 May 13
@Using SavageDVagrant VMVSP ServiceVagrant VMTestsSP SavageDFriday, 3 May 13
@Using SavageDVagrant VMVSP ServiceVagrant VMTestsSP SavageDMonitorsFriday, 3 May 13
@Using SavageDVagrant VMVSPMetrics ServerServiceVagrant VMTestsSPMonitorsstatsdGraphiteSavageDReports ToFriday, 3 May 13
@GraphiteTest your non-functional requirements withFriday, 3 May 13
@Combined Testing SolutionVagrant VMVSPMetrics ServerServiceVagrant VMTestsSPMonitorsstatsdGraphiteSavageDReports ToTests ...
@Everything Should Log MetricsVagrant VMVSPMetrics ServerVagrant VMTestsSPMonitorsstatsdGraphiteSavageDReports ToTests Met...
@Your Own ModulesExtend Storyplayer withFriday, 3 May 13
@Pull RequestsWelcome :)Friday, 3 May 13
@OS X and LinuxRuns onFriday, 3 May 13
@PEARInstalled viaFriday, 3 May 13
@(Composer doesn’t supportinstalling packages system-wide yet)Friday, 3 May 13
@datasift.github.ioDocs available from(WIP!!)Friday, 3 May 13
@Before You Go ...Friday, 3 May 13
@This Model Is IncompleteFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecStoryplayerFriday, 3 M...
@... getting better :) ...Functions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitStoryplayer+Friday, 3 May 13
@Storyplayercan test websitesand APIs too!Friday, 3 May 13
@Storyplayerdoesn’t replace Behat et alFriday, 3 May 13
@Behatmoves back to doingwhat it does bestFriday, 3 May 13
@A Better Model Of Layered TestingFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitStoryplayer+AcceptanceBeh...
@Developerstake responsibilityfor unit testingFriday, 3 May 13
@Developers + Testersshare responsibilityfor testingservices & systemsuser interfaces & APIsFriday, 3 May 13
@Product Ownerstake responsibilityfor acceptance testingFriday, 3 May 13
@Storyplayerhttps://github.com/datasift/storyplayer/available now!Friday, 3 May 13
@Thank youPS: We’re hiring :-)Friday, 3 May 13
Upcoming SlideShare
Loading in …5
×

Storyplayer

2,841 views

Published on

Bring your user and service stories to life through your tests.

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
2,841
On SlideShare
0
From Embeds
0
Number of Embeds
985
Actions
Shares
0
Downloads
0
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Storyplayer

  1. 1. @$story->player()Friday, 3 May 13
  2. 2. @Bring Your Stories To LifeThrough Your TestsFriday, 3 May 13
  3. 3. @Introduce YourselvesFriday, 3 May 13
  4. 4. @@stuherbertFriday, 3 May 13
  5. 5. @TestingI’m here to talk aboutFriday, 3 May 13
  6. 6. @Don’t Switch Off Just Yet!Friday, 3 May 13
  7. 7. @StoryplayerI’m here to launchFriday, 3 May 13
  8. 8. @Storyplayeris a new open-source testing toolFriday, 3 May 13
  9. 9. @Created byFriday, 3 May 13
  10. 10. @built inFriday, 3 May 13
  11. 11. @hosted onFriday, 3 May 13
  12. 12. @to test this:We’ve built itFriday, 3 May 13
  13. 13. @DataSift Technical ArchitectureUltrahoseArchiverpushPickleNodePickleNodePickleNodePickleNodePickleNodePickleNodeNode ShardpushPickleNodePickleNodePickleNodePickleNodePickleNodePickleNodeNode ShardACL(with interactioncounter)HttpStreaming,PuSH,SearchStreamRecorderMonitoringAggregatorEDRs(licensedcontentmetrics)ControlChannels(D5)HardwareLoadBalancerUltrahoseArchiver100%Prism100%PickleFilteringEngineTwitterFacebookWikipediaRedditLexisNexisMeltwaterEstimizeDigg@lorenzoalbertonDataSift Architecture 2.2Links Resolution+ OpenGraph+ Twitter Cards+ MetadataDeletesProcessorRedisInput StreamsNewsCredBoardReaderMySpaceSuperFeederAugmentation PipelinepushPickleNodePickleNodePickleNodePickleNodePickleNodePickleNodeNode ShardpushPickleNodePickleNodePickleNodePickleNodePickleNodePickleNodeNode ShardMonitoringKafkaQueueEventsStorageACL(with interactioncounter)trackerLimitManagerAuthenticationManagerNotificationServiceWEBAPIStream .Manager .DBDefinition .Manager .DBCSDL Compiler,Validator,NormaliserHistoricsSchedulerRecordingSchedulerPushSchedulerInteractionTargetsMappingFilteringTardisPickleInteractionTargetsMappingFilteringTardisPickle......HadoopTitan HistoricsMap/ReduceHBase ClusterRegion 1 Region 2 Region N......Data Node Data Node Data Node Data Node Data Node100%100%StopPUBLicenseManager DBBillingPipeline DBDBDBMaskManagerDBConnectionManagerTime Machine + InsightsPost-Processing, Stream AnalyticsjobsDBchunksDBchunkselectorjobtrackerWorkerSnapshotterBufferedStreamsRedisWorkerWorkerNodeMeteorReal-timeStreamsNodeNodeHTTP RequestGET batchPUSHSchedulersubscription Xsubscription Yjob queuePUSHProducerSubscriptionsDBPUSHDeliveryHTTP(S) POST(S)FTPAmazon S3DynamoDBMicrosoft AzureMongoDBExports andAnalyticsWebSocketsHTTPStreamingDelivery SubscriptionsConnectionsStoragekafka-consumerOracleStreamresultsCouchDBPickleDB .DBAuditKafkaKafkaHistorical Queries@datasiftGoblin HeadGoblin HeadGoblin HeadGoblin TailGoblin TailGoblin TailInteractionGenerationInteractionGeneration3rd party APIsDemographicsTrendsAnalysisSentimentAnalysisNamedEntitiesTopicsAnalysisLanguageDetectionKloutScore + ProfileOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreOgreIBM CognosHDFSArchiverData ingestion + AugmentationBit.lyStreamSplitter/JoinerDeduperMsg splitterGoogle BigQueryStream resultsCloud StorageDBsBI toolsFriday, 3 May 13
  14. 14. @It Plugs A GapIn our testing strategyFriday, 3 May 13
  15. 15. @Testing Strategy?What is ourFriday, 3 May 13
  16. 16. @Layered ApproachCatch different problemsusing different toolsFriday, 3 May 13
  17. 17. @Common Test ApproachUnitTestsAcceptanceTestsIntegrationTestsFriday, 3 May 13
  18. 18. @The Focus Of Each LayerFunctions& MethodsUser Interfaces& APIsServices& SystemsFriday, 3 May 13
  19. 19. @The De Facto StandardFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitFriday, 3 May 13
  20. 20. @Popular ChoicesFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecFriday, 3 May 13
  21. 21. @The Neglected LayerFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpec?Friday, 3 May 13
  22. 22. @Services & Systems?How do we testFriday, 3 May 13
  23. 23. @A Gap To PlugFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecFriday, 3 May 13
  24. 24. @Where Storyplayer Fits InFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecStoryplayerFriday, 3 May 13
  25. 25. @A Quick Tourof StoryplayerFriday, 3 May 13
  26. 26. @StoriesIt’s all aboutFriday, 3 May 13
  27. 27. @User StoriesThe things that yourend-users can (and can’t!) doFriday, 3 May 13
  28. 28. @Service StoriesThe things that yourinternal systems can doFriday, 3 May 13
  29. 29. @ProseFriday, 3 May 13
  30. 30. @$story =newStoryFor();Friday, 3 May 13
  31. 31. @Simple PHP ScriptsWe don’t define a new classfor every story we want to testFriday, 3 May 13
  32. 32. @Avoids theclass AVeryLongAndInventiveClassname* 1000 problem!Friday, 3 May 13
  33. 33. @Stories have up to8 PhasesFriday, 3 May 13
  34. 34. @Creating The Test ConditionsTest Environment Setup1Test Setup2Friday, 3 May 13
  35. 35. @Before We TestPre-Test Prediction3Pre-Test Inspection4Friday, 3 May 13
  36. 36. @Perform The Story StepsAction5Friday, 3 May 13
  37. 37. @Did Anything Happen?Post-Test Inspection6Friday, 3 May 13
  38. 38. @Clean Up AfterwardsTest Teardown7Test Environment Teardown8Friday, 3 May 13
  39. 39. @ClosureEach phase is aFriday, 3 May 13
  40. 40. @$story->setTestEnvironmentSetup(function($st) {// story steps go here});Friday, 3 May 13
  41. 41. @the $st objectAll actions are done usingFriday, 3 May 13
  42. 42. @The $st objectis a dynamic module loaderFriday, 3 May 13
  43. 43. @Brand new objectsare instantiatedevery new actionFriday, 3 May 13
  44. 44. @This approach ensuresno weird bugs in testscaused by re-usingobjects between actionsFriday, 3 May 13
  45. 45. @3 kinds of actionThere areFriday, 3 May 13
  46. 46. @$st->fromXXXX()Get the state of somethingFriday, 3 May 13
  47. 47. @$st->expectsXXXX()Test the state of somethingFriday, 3 May 13
  48. 48. @$st->usingXXXX()Change the state of somethingFriday, 3 May 13
  49. 49. @$story->addAction(function($st) {$st->usingBrowser()->gotoPage(...);$st->usingBrowser()->waitForTitle(...);....});Friday, 3 May 13
  50. 50. @$story->setPostTestInspection(function($st) {$st->usingBrowser()->gotoPage(...);$st->usingBrowser()->waitForTitle(...);$st->expectsBrowser()->has()->linkWithText(“My Account”);});Friday, 3 May 13
  51. 51. @14 ModulesIncludedFriday, 3 May 13
  52. 52. @VagrantCreate test environments usingFriday, 3 May 13
  53. 53. @Using The Vagrant ModuleSPVagrant VMVVagrant VMCreatesFriday, 3 May 13
  54. 54. @Using The Vagrant ModuleVagrant VMVSP ServiceVagrant VMDeploysFriday, 3 May 13
  55. 55. @Using The Vagrant ModuleVagrant VMVSP ServiceVagrant VMTestsSPFriday, 3 May 13
  56. 56. @Using The Vagrant ModuleVagrant VMVSP ServiceVagrant VMDestroysFriday, 3 May 13
  57. 57. @SavageDMonitor your VMs and processes using(Another DataSift tool we’re releasing tonight)Friday, 3 May 13
  58. 58. @Using SavageDVagrant VMVSPVagrant VMCreatesFriday, 3 May 13
  59. 59. @Using SavageDVagrant VMVSP ServiceVagrant VMDeploysSavageDFriday, 3 May 13
  60. 60. @Using SavageDVagrant VMVSP ServiceVagrant VMTestsSP SavageDFriday, 3 May 13
  61. 61. @Using SavageDVagrant VMVSP ServiceVagrant VMTestsSP SavageDMonitorsFriday, 3 May 13
  62. 62. @Using SavageDVagrant VMVSPMetrics ServerServiceVagrant VMTestsSPMonitorsstatsdGraphiteSavageDReports ToFriday, 3 May 13
  63. 63. @GraphiteTest your non-functional requirements withFriday, 3 May 13
  64. 64. @Combined Testing SolutionVagrant VMVSPMetrics ServerServiceVagrant VMTestsSPMonitorsstatsdGraphiteSavageDReports ToTests MetricsFriday, 3 May 13
  65. 65. @Everything Should Log MetricsVagrant VMVSPMetrics ServerVagrant VMTestsSPMonitorsstatsdGraphiteSavageDReports ToTests MetricsServiceFriday, 3 May 13
  66. 66. @Your Own ModulesExtend Storyplayer withFriday, 3 May 13
  67. 67. @Pull RequestsWelcome :)Friday, 3 May 13
  68. 68. @OS X and LinuxRuns onFriday, 3 May 13
  69. 69. @PEARInstalled viaFriday, 3 May 13
  70. 70. @(Composer doesn’t supportinstalling packages system-wide yet)Friday, 3 May 13
  71. 71. @datasift.github.ioDocs available from(WIP!!)Friday, 3 May 13
  72. 72. @Before You Go ...Friday, 3 May 13
  73. 73. @This Model Is IncompleteFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitBehatPHPSpecStoryplayerFriday, 3 May 13
  74. 74. @... getting better :) ...Functions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitStoryplayer+Friday, 3 May 13
  75. 75. @Storyplayercan test websitesand APIs too!Friday, 3 May 13
  76. 76. @Storyplayerdoesn’t replace Behat et alFriday, 3 May 13
  77. 77. @Behatmoves back to doingwhat it does bestFriday, 3 May 13
  78. 78. @A Better Model Of Layered TestingFunctions& MethodsUser Interfaces& APIsServices& SystemsPHPUnitStoryplayer+AcceptanceBehatPHPSpec+Friday, 3 May 13
  79. 79. @Developerstake responsibilityfor unit testingFriday, 3 May 13
  80. 80. @Developers + Testersshare responsibilityfor testingservices & systemsuser interfaces & APIsFriday, 3 May 13
  81. 81. @Product Ownerstake responsibilityfor acceptance testingFriday, 3 May 13
  82. 82. @Storyplayerhttps://github.com/datasift/storyplayer/available now!Friday, 3 May 13
  83. 83. @Thank youPS: We’re hiring :-)Friday, 3 May 13

×