Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Testing Code.org's Interactive CS Curriculum

3,836 views

Published on

Given at http://www.meetup.com/Automated-Testing-San-Francisco/events/207827762/

Published in: Software
  • Be the first to comment

Testing Code.org's Interactive CS Curriculum

  1. 1. Testing Code.org's Interactive Computer Science Curriculum Brian Jordan, software engineer at Code.org brian@code.org @bcjordan bcjordan.com
  2. 2. Code.org
  3. 3. non-profit
  4. 4. expanding participation in CS
  5. 5. Hour of Code
  6. 6. 10 million
  7. 7. 43 million
  8. 8. now?
  9. 9. district partnerships, professional development
  10. 10. 700 teachers trained 10 school districts
  11. 11. policy changes
  12. 12. K-12 CS Curriculum
  13. 13. Testing Challenges
  14. 14. what are we up against? demo time!
  15. 15. testing challenges
  16. 16. multiple browsers
  17. 17. multiple browsers
  18. 18. iOS / Android
  19. 19. IE 9
  20. 20. localization
  21. 21. 33 languages
  22. 22. left-to-right
  23. 23. right-to-left
  24. 24. browser features
  25. 25. <svg>, <canvas>
  26. 26. Javascript
  27. 27. conditional logic to support all browsers
  28. 28. tough but important
  29. 29. now let's test it!
  30. 30. Unit Tests!
  31. 31. dashboard (Ruby on Rails) blockly (JS, svg, canvas, grunt) Unit Tests? blockly-core (JS, svg, Closure Tools)
  32. 32. Dashboard Blockly Apps Blockly Core
  33. 33. Rails testing
  34. 34. ActiveSupport::TestCase
  35. 35. Factory Girl
  36. 36. Factory Girl
  37. 37. SimpleCov
  38. 38. Blockly testing
  39. 39. solution tests grunt-mocha-test Chai for assertions node-canvas for drawing
  40. 40. solution tests
  41. 41. solution tests
  42. 42. solution tests
  43. 43. UI tests
  44. 44. challenge: multiple browsers
  45. 45. solution: BrowserStack
  46. 46. challenge: interaction, drag-and-drop
  47. 47. solution: jQuery Simulate $(selector).drag…
  48. 48. Cucumber —> Selenium
  49. 49. local tests with chromedriver @browser = Selenium::WebDriver.for :chrome, :url=>"http://127.0.0.1:9515"
  50. 50. remote tests with BrowserStack @browser = Selenium::WebDriver.for :remote, url => "http://#{browserstack_username}:#{browserstack_authkey} @hub.browserstack.com/wd/hub"
  51. 51. Cucumber is uncomfortable to start with
  52. 52. DSL should be high-level And I drag block "2" to block "4"
  53. 53. Build a library of steps
  54. 54. Visit the URL Given I am on "http://learn.code.org/s/1/level/24"
  55. 55. Visit the URL Given /^I am on "([^"]*)"$/ do |url| url = replace_hostname(url) @browser.navigate.to "#{url}" end
  56. 56. Annotations @no_mobile @no_ie @skip @db_access
  57. 57. On BrowserStack
  58. 58. Demo: Speed Run
  59. 59. Monitoring
  60. 60. integration with CI
  61. 61. HipChat all the things
  62. 62. completion rates
  63. 63. per-browser completion rates
  64. 64. Travis CI <> GitHub
  65. 65. Takeaways
  66. 66. Build up Library of Tests
  67. 67. Culture of Testing
  68. 68. Saves time in test writing
  69. 69. Saves time in development
  70. 70. Thanks! Brian Jordan, software engineer at Code.org brian@code.org @bcjordan bcjordan.com http://code.org/help http://github.com/code-dot-org

×