In less than three months I have been able to master the essential features of Jest and Cypress by applying them to a production web application. I expect mastering the advanced features will take three additional months.

My overall takeaway is surprise at the advanced technical skill required to write tests against a real application. My idea going in was that a Quality Assurance Analyst could be trained to use these tools and be productively writing basic tests in a couple of months. I’ve discovered this was a naïve expectation.

The primary difficulty is that beneath the surface, all modern web applications are coded using asynchronous (multitasking) JavaScript. For a quick analogy of what that means, skip down to the “Real life example” section at Asynchronous programming in a nutshell.

Even with today’s sophisticated development tools, asynchronous programming still demands a sustained, high, Intrinsic Cognitive Load on a developer. See the “Intrinsic Cognitive Load” section at Cognitive Load Theory: Definition, Types, And Applications For Learning for a good introduction to the topic.

As a baseline, asynchronous programming requires a particular aptitude and raw intelligence. Beyond that, it requires a good amount of prior experience writing production-quality asynchronous code. But even more importantly, ample experience debugging asynchronous code, which has always been a good deal harder than writing it.

Tune in next time for my thoughts on how to manage the difficulty of writing asynchronous tests…

--

--

Jeff Franczak

Jeff Franczak is a professional Full Stack Software Engineer who transforms ideas into valuable business products using modern technologies.