Automated Regression Testing with Splinter and Jupyter
By Jace Browning

So you wrote a bunch of great unit tests but your site is still broken? Maybe it’s time to start investing in a suite of end-to-end regression tests. In this talk we'll explore practical examples of developing automated tests using Selenium (via Splinter) and exploratory testing using Jupyter sessions.

Saturday 4:30 p.m.–5 p.m. in Cartoon 2

This talk will start with a background on testing and quality assurance:

  • Terminology
  • Unit vs. Integration vs. System (end-to-end)
  • Automated vs. Exploratory

  • Goals of end-to-end testing

  • Test production server configurations
  • Test JavaScript engines in browsers
  • Responsiveness/visual testing
  • External API hookups

The next section will outline a layered approach for writing end-to-end tests with each step building on the last:

  • Selenium basics
  • Language bindings (Python examples)
  • Sequential test scripts
  • Adopting the “Page Object Model”
  • Using a WebDriver API wrapper (Splinter examples)
  • Helper functions to enable automated exploratory testing

Before the final section, there will be a demo of the previous examples run against a live website.

The final section will recommend an approach to building tests against your own site:

  • Alternatives
  • Dogfooding
  • Beta testers
  • Manual testers

  • Make your site testable

  • Name your forms and fields
  • Accessible sites are testable sites
  • Test mode for account signups
  • Expose internal state when possible
  • Allow “cheats” on your staging server

  • Writing tests

  • Start with under-tested, high-risk features
  • Make your bot users identifiable for easy cleanup
  • Run your tests every time you deploy
  • Incorporate logging, screenshots, and reports

Jace Browning

Jace Browning builds, customizes, integrates, and teaches engineering software tools. He has worked on products in the embedded, mobile, and web space, but his expertise is systems programming, specifically in Python. Professionally, he focuses on quality assurance, automation, and process optimization. In his free time, he enjoys contributing to open source and volunteering at local technology events.