Selenium is probably the most popular open source test automation framework for web applications.
- Selenium is a base for a vast amount of other testing tools.
- Cross-platform and cross-browser.
- Supports a wide range of languages such as C#, Java, Python, PHP, Ruby, etc.
- Highly extendable through a wide rage of libraries and APIs to meet everyone’s needs and requirements.
- One of the largest support networks existing.
Appium is designed to test mobile applications. It’s built with the idea that you should not be recompiling your app or modifying it in any way in order to test it. You also shouldn’t be locked into a specific language or framework to run your tests.
- Easy setup process.
- Cross-platform – allows to test against multiple platforms (iOS, Android, Windows, Mac) using the same API.
- Reuses code between iOS, Android, and Windows test suites.
- Supports simulators (iOS) and emulators (Android).
- Supports native, hybrid and mobile web applications and desktop apps.
- Based on client/server architecture.
- User is free to use whatever test runner and test framework you want, the client libraries are simply HTTP clients and can be mixed into your code giving the possibility to manage your test environment any way you like.
- Dynamic HTML testing reports that are ready to present.
- Functions can be used to provide dynamic input to a test or provide data manipulation.
- Integration through libraries for Maven, Gradle, and Jenkins.
Apache JMeter is designed specifically for load testing and can be used to test performance both on static and dynamic resources, Web dynamic applications.
- It simulates a heavy load on a server (group of servers), network, or object to test its strength or to analyze and measure overall performance under different load types.
It removes the need for writing a lot of boilerplate code required to set up an HTTP connection, send a request and receive and parse a response.
- It supports a Given/When/Then test notation, which instantly makes your tests human readable
- Since REST Assured is a Java library, integrating it into a continuous integration / continuous delivery setup is a breeze, especially when combined with a Java testing framework such as JUnit or TestNG
One of the biggest advantages of Git is its branching capabilities.
- Unlike centralized version control systems, Git branches are cheap and easy to merge. This facilitates the feature branch workflow popular with many Git users.
- Distributed development also makes it easier to scale your engineering team. If someone breaks the production branch in SVN, other developers can’t check in their changes until it’s fixed. With Git, this kind of blocking doesn’t exist. Everybody can continue going about their business in their own local repositories.
It is open source and it is user-friendly, easy to install and does not require additional installations or components.
- It is free of cost.
- Easily Configurable. Jenkins can be easily modified and extended. It deploys code instantly, generates test reports. Jenkins can be configured according to the requirements for continuous integrations and continuous delivery.
- Platform Independent. Jenkins is available for all platforms and different operating systems, whether OS X, Windows or Linux.
- Rich Plugin ecosystem. The extensive pool of plugins makes Jenkins flexible and allows building, deploying and automating across various platforms.
- Easy support. Because it is open source and widely used, there is no shortage of support from large online communities of agile teams.
- Developers write the tests to detect the errors of their code as soon as possible. So the developers don’t waste time on large-scale error-ridden integrations.
- Issues are detected and resolved almost right away which keeps the software in a state where it can be released at any time safely.
- Most of the integration work is automated. Hence fewer integration issues. This saves both time and money over the lifespan of a project.
Better dependency management : With Maven, you don't have to worry about transitive dependencies. If your project depends on library A, you just add a direct dependency on A and let A worry about its own dependencies.
- More powerful builds - Maven's default plugins and life cycle allow a project to perform common build actions without touching a build configuration file.
- Better collaboration - Maven repositories allow an artifact's Javadoc to be published alongside the artifact's JAR.
- Reduced duplication - Maven projects can use a project object model (POM) hierarchy to reduce the duplication that typically exists in Ant projects.
- More consistent project structure - All Maven projects have a common structure, which makes it easier to understand each project.
It is one of the popular testing framework after Junit.
- It gives the ability to produce HTML Reports of execution.
- Annotations made testers life easy.
- Test cases can be Grouped & Prioritized more easily.
- Parallel testing is possible.
- Generates Logs.
- Data Parameterization is possible.
In simple terms Docker is a tool which is used to automate the deployment of applications in lightweight containers so that applications can work efficiently in different environments.
- Docker containers ensure consistency across multiple development and release cycles, standardizing your environment.
- Docker can also be used to run the Automation suite in Parallel in different container (of different Operating system) like Virtual machine.
SonarQube is a web-based open source platform used to measure and analyse the source code quality. Code quality analysis makes your code more reliable and more readable.
- SonarQube is written in java but it can analyze and manage code of more than 20 programming languages, including c/c++, PL/SQL, Cobol etc through plugins.
- Plugins extend the functionality of SonarQube.