Agile software development requires continuous testing in order to make sure that an application is fit for use and does not contain any bugs. Here are seven great tools for testing your application.



For web applications that use modern JavaScript frameworks, Cypress offers an unique end-to-end testing experience. It is an interface-based application for setting up, writing, running and debugging tests and comes with a set of unique features, such as a command log that enables time travelling, readable errors and stack traces for fast debugging and screenshots and videos of the entire test suite.

Cypress is installed as a local package and communicates constantly with a node.js server process so that it has access to both the application’s front- and backend. In addition, it operates at the network layer and can tap into the operating system for automation tasks.

Cypress is often compared with Selenium. One major difference is that Selenium operates by running outside of the browser and executes remote commands, Cypress does the exact opposite and operates within your application.



Currently, there are different tools available for testing JavaScript applications. These do not offer the rich user interface of Cypress, but offer powerful functionality required for testing purposes. For more flexible functionality, we recommend a combination of different tools.

For AngularJS, the most popular testing framework for organizing and executing tests is Mocha. A second option is Jasmine, a behavior-driven JavaScript testing framework that comes with everything you need to start testing, such as a running environment, structure, reporting, assertion, and mocking tools. This is an important difference with Mocha, that relies on third-party assertion, mocking and spying tools. One such tool is Chai, an assertion library that enables assertions to be written in natural language syntax.



For testing React application, Jest is your best choice. This framework can be setup easily and comes with a set of great features: it automatically finds tests, mocks dependencies, runs tests with a fake DOM implementation and in parallel processes. This last feature comes in handy when testing a large application. One particularly handy feature is snapshot testing, where snapshots of test component are compared over time. This helps you keep track of your components and make sure the UI don’t change unexpectedly.



For functional testing in Python, we suggest using the pytest framework. The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. Tests in pytest are expressive, readable and don’t require boilerplate code. The tests in pytest can be written as functions or as methods in classes, whereas unittest forces tests to be inside classes. It can also be used for unittest and nose tests.



For testing Ruby code, we use RSpec, a popular testing tool for Ruby applications with a human readable syntax and powerful features. RSpec is a behavior-driven development framework we use in combination with Capybara, for web-based user interaction tests, allowing us to test the software as a user will do with a web browser.



When creating any test suite, it’s important to apply the concept of “a single expectation test”, which means writing a test that only specifies one behavior. Not only does it make your tests faster, it makes for more readable code and makes your test more effective because you know what is wrong when the test fails.



This meetup discussed a selection of high-quality testing tools on the market today. Different languages and frameworks all have their own specific tools for testing applications. A combination of tools is sometimes preferable for more testing flexibility. These tools will dramatically improve your test-driven development and help you stay ahead of the competition.