The following are from the Meetup site, so consider this pre-amble. You’ll definitely get plenty of my ramble in a bit.
Optimization through Parallelization (David Borin)
Dramatically improve the scale and speed of testing through the use of parallelization techniques. This includes writing test modules that can be run independently, doing as much preloading of test data as possible, and using parallel test runners.
My thanks to Lithium Technologies for providing the space an the food. Speaking of food, I’m going to go get some now. Be back in a little bit.
OK, next talk is up, and now it’s time to talk a bit more about parallelization… imagine being able to run ten thousand test modules in under five minutes. The simple answer is that parallelization is necessary to get those numbers. Spin up a battery of virtual machines, spread the tests equally over the machine battery, and get your CI server to do all the work (living in a world that uses Jenkins and AWS, I can confirm that this method is real and does work.
This approach does require that the effort be made to make tests as atomic as possible, and that dependencies are, if not completely eliminated, at least minimized as much as possible. Also, you don’t need hundreds of machines. With 4 servers, you can create a Jenkins master, a slave with 10 executors, Selenium Grid hub and selenium grid nodes with 15 browsers. I’ll leave it to you to do the multiplication on that. The point is, with that setup, you can do a fair amount of parallel testing.
Several great takeaways for the talk were encapsulated in the “mantras” slide, so rather than repeat them, hey, it’s right here :):
Tools for parallelization?
Wow, that went quickly! Glad to have the opportunity to come out and play once again. Lots of interesting ideas, and I definitely want to take a closer look at some of the ideas from these presentations. If I had to pick any one thing to consider, it would be to see how many tests are “overloaded” or have a lot of steps. Could those tests be puled apart? Would it make sense to run them separately (and subsequently, more in parallel)?
And with that, I bid all a good night. Happy testing :)!!!