Software development is one of the industries following the ideas of working process automation. Optimization of manual work improved software testing and brought the quality of the applications to a new level. The process of bug discovering and fixing was greatly improved. Manual testing was complemented with automation testing tools with one simple aim: optimize repetitious work and reduce its cost.
In this answer, I'm going to review the most useful tools that can be implemented at different stages of software testing.
Selenium WebDriver
This is the top tool for testing process automation. It allows the browser to take certain actions an ordinary user would take, like clicking, scrolling, inputting text, etc. The Selenium WebDriver literally drives the browser. It has several advantages, making Selenium one of the most popular tools for automated software testing.
Protractor
Protractor is an end-to-end test automation framework which based on the Selenium WebDriver and perfectly fits projects with AngularJS.
JMeter
JMeter is an Apache product with a strong focus on load testing. Originally, this was a tool for web app testing, but now it can cover various types of software.
Appium
If you are looking for a tool to test native, hybrid or mobile web apps - then Appium is the right choice for you. It is the analog of Selenium WebDriver, but for mobile use.
Travis CI
Continuous integration is becoming a widely used approach. It requires developers to integrate their code into a shared repository several times a day. After each integration, the test should be run to detect all possible mistakes as soon as possible and solve them in the initial stages.
Gemini
All the mentioned tools are used to test the functionality of the applications. Gemini is here for UI testing. The framework takes the screenshots of the web page appearance and compares it with baseline images.
More about this tool you can read in this article