It was previously taking us hours to execute end-to-end test suites. With the solution we built on AWS, that’s down to 30 seconds. We have rolled out this capability to our flagship applications and are deploying it across the organization. It’s a fundamental shift toward a DevOps culture of continuous integration.
Jason Kagel Vice President of Productivity, Blackboard

Across the world, in thousands of classrooms, Blackboard educational technology enables instruction, collaboration, and online learning. In 2015, the company started to migrate the software-as-a-service (SaaS) version of its Blackboard Learn application to the Amazon Web Services (AWS) Cloud. Since then, the company has been aggressively adopting AWS technologies to further its innovation agenda. “As we architect and develop new offerings, standardizing on the AWS environment enables us to improve developer efficiency, reduce time to market, and speed innovations to our customers,” says Tim Tomlinson, chief product officer at Blackboard.

Testing is a critical part of this value chain. To help students learn and teachers teach, Blackboard must deliver an integrated, intuitive, consistent user experience. That means experiential testing that mimics how a user would progress through an application from any given web browser. At first, the company performed these tests manually, which could mean days for each testing run. In 2007, the company began using Selenium WebDriver to perform automated cross-browser UI testing, which greatly accelerated the process.

Since that time, Blackboard has moved to a continuous-delivery approach, meaning that each time a change is committed to a code branch, it triggers the test suite. The company needed to improve testing speeds even further. It started by implementing Selenium Grid to enable parallel execution of test suites packaged in Docker containers, which got test execution down to 16 minutes. However, this configuration could not easily scale beyond eight concurrent threads.

Then the team decided to package the testing suite into an AWS Lambda serverless compute function, enabling it to execute tests in parallel at any scale required. A custom JUnit test runner triggers testing and aggregates results. “This is not just automated unit testing—we are automating user experience testing end-to-end,” says Jason Kagel, vice president of productivity at Blackboard. “Using AWS Lambda, we can deliver value to our customers at a quicker pace, and with a high degree of confidence that the application will work seamlessly for users.”

The solution not only enables more in-depth testing, but it has also reduced testing times. “It was previously taking us hours to execute end-to-end test suites,” says Kagel. “With the solution we built on AWS, that’s down to 30 seconds. We have rolled out this capability to our flagship applications and are deploying it across the organization. It’s a fundamental shift toward a DevOps culture of continuous integration.”