main banner

Development

Next Generation JavaScript Testing

Nowadays software development, and particularly web development, has become a more complex task than how it used to be a decade ago. This is easily noticeable if we include into the picture the current state of internet technology , its uses, the many browser flavours and the amount of devices today’s web applications must support.


Along with this complexity in software development comes additional intricacy on software testing; we now need to test an application that will support so many devices, their screen resolutions and OS’s, different browsers and their many versions, an increased amount of data transferred between clients and servers using different mediums like wired or wirelessly; and most importantly,applications built from a mix and match of different internet technologies that provide a richer, and thus deeper, experience for its users like jQuery, Dojo, Angular, etc. With such a deeper and richer user experience automation of tests is a must, we no longer have the luxury of manually test every single usage scenario. Automation testing on today’s JavaScript saturated web applications is not an easy feat either, as we now rely on so many JavaScript technologies in the look of that deeper user experience. Designing and running test cases which deeply cover the broad usage spectrum, are compatible with those mixed and matched technologies and can be automated at the same time, is almost impossible without the help of JavaScript testing tools.


In 2009 John Resig on his blog, where he exemplifies many of the problems that he faced during testing and automated testing for a jQuery test suite, stated that “JavaScript Testing Does Not Scale” which gives title to the blog itself.  

And with that quote is how Vlad Filippov started his 2014 jQuery conference talk on Next Generation JavaScript Testing. This conference was interesting because he showed some of his work on Intern; one of many tools that have arisen since 2009 and that are trying to address the javascript test automation problem. He also discusses some other tools that can be used today that might help you with testing, automation and continuous integration, some of them are open source some of them are not, such tools are:

  • Selenium (http://www.seleniumhq.org/): A suite of tools to automate web browsers across many platforms; its currently being used as a core component on many other Automation tools (like Sauce Labs).
  • Sauce Labs (https://saucelabs.com/): Suite for automated testing in the cloud for CI. It supports automated cross-browser testing with Selenium testing, automated mobile testing for iOS and Android and manual testing with over 450 browser flavours and OS platforms.
  • Travis CI (https://travis-ci.com/): It is an open-source hosted, distributed continuous integration service used to build and test projects hosted at GitHub.
  • Intern (https://theintern.github.io): Main tool showcased by Vlad and that allows to write test in JavaScript and run them straight from the browser using Node.js or against many browsers and platforms at the same time with its test runner application. It also supports code coverage reporting and integrates with Sauce Labs, BrowserStack, TestingBot and Selenium. It integrates with Travis CI, Jenkins and TeamCity for continuous integration.

  • I highly suggest you to take a look at these tools as they are the ones defining the shape of how next-gen testing will been done.

    Raúl N

    Ever met one of those guys whose code should’ve been his natural language? Well, meet Raul, a Computer Systems Engineer whose hobbies include video games, playing with his ferret pets, reading and movies. He has over 12 years of experience as a developer and has a lot of experience with Microsoft Technologies (specially .NET) as well as architecture and software development process; he has written some really good articles about this topics.

    Articles