Manual and Automation testing, Automation testing tools,BDD vsTDD,Cross browser testing.
Published: 2024-01-28 04:20:06

** Qn 1: Difference between manual and automation testing in Software development.**
The difference between manual testing and automated testing is that in manual testing, you perform the tests step by step without the help of tools, whereas in automated testing, tests are executed automatically using automation tools & frameworks.
**<u>Time-saving</u>** : Manual testing is repetitive and time-consuming, slowing the entire software development lifecycle. Automation testing saves considerable time by automating all the repetitive tasks and boosts the software development life cycle.
**<u>Less Manual Tasks</u>** : In automation testing, you can write the test cases once and use them over and over again. Some good automation tools also enable the generation of a detailed bug report for the failed case, making automation even more precise and powerful. In manual testing tasks are repetitively done manually.
**<u>Cost-effective</u>** : A dedicated testing team will be required to perform manual testing on industry-grade software. But in automation testing, the whole testing workflow can be automated with a minor team or even by a single person.
**<u>Team collaboration</u>** : When it comes to performing complex testing, team collaboration plays an important role, manual testing makes it considerably difficult, but in automated testing, you can easily add team members to review the test cases or contribute.
**<u>Easy to manage</u>** : Automation testing is relatively easy to manage than manual testing. In automation testing, the whole testing workflow can be automated and handled using a single graphical user interface.
But automation testing can’t replace manual testing. We need both manual and automation testing. Manual testing is helpful for complex test cases, whereas automated testing is preferred for simple and repetitive tests. Test automation is to help the testers to execute testing faster and more reliably. But it won’t replace humans.

**Qn 2: Explore some most common automation tools in the market.**
**Selenium**
Selenium is one of the most popular open-source frameworks for web testing automation. Its suite of software consists of Selenium WebDriver, Selenium Grid, and Selenium IDE.
Feature highlights:
•	Supported programming languages: Java, C#, Python, JavaScript, Ruby, PHP, etc.
•	Supported browsers: Chrome, Firefox, IE, Microsoft Edge, Opera, Safari, etc.
•	Testing on local or remote machines via the Selenium server
•	Parallel and cross-browser executions to reduce execution time and increase test coverage
•	Integrations with other testing frameworks (e.g., TestNG for reporting) and CI/CD tools
**The Katalon Platform**
The Katalon Platform is a low-code and scalable automation testing tool for web, API, desktop (Windows), and mobile applications. Without having to code or built a test automation framework from scratch, users can simply download the tool and focus solely on testing.
Feature highlights:
•	Flexible methods for test design: record & playback, manual, and scripting mode
•	Supported testing methodologies: BDD, DDT, keyword-driven testing, cross-browser testing (Headless, Chrome, Edge, Firefox, and Safari), and cross-platform mobile testing (iOS, Android). Read more on how to do data-driven testing with Katalon here.
•	Automatic retry failed tests, smart wait, and self-healing mechanisms.
•	Reusable test objects, keywords, and test cases with test artifact sharing and page object model design 
•	Native integrations with popular CI/CD and ALMs tools (Jira, GitLab, Jenkins, Bitbucket, Azure DevOps, etc.)
**Appium**
Like Selenium, Appium is also an open-source automation testing tool, but for mobile applications. Using mobile JSON wire protocol, Appium allows users to write automated UI tests for native, web-based, and hybrid mobile applications on both Android and iOS.
•	Supported programming languages: Java, C#, Python, JavaScript, Ruby, PHP, Perl
**TestComplete**
TestComplete can automate functional UI testing for desktop, mobile, and web applications. With built-in support for 500+ controls and third-party frameworks, TestComplete can handle and identify dynamic UI elements in most available technologies.
•	Supported programming languages: JavaScript, Python, VBScript, JScript, Delphi, C++, C#
•	Flexible methods for test design: record & playback, manual and scripting modes with built-in keywords
•	Object identification with property-based and AI visual recognition
**Cypress**
Cypress is a developer-centric automation tool for end-to-end web testing. Built upon a new architecture, Cypress can directly operate within a browser in the same run-loop as your application, enabling native access to elements and faster executions.
Feature highlights:
Supported programming language: JavaScript
**Postman**
Postman is one of the most widely used automation testing tools for API. It allows users to write different kinds of tests, from functional and integration to regression tests, and execute them automatically in CI/CD pipelines via the command line.
Feature highlights:
Support for multiple HTML methods, Swagger, and RAML formats
Broad support for API schemas to generate collections and API elements
**SoapUI**
This open-source API testing tool is designed for REST and SOAP web services. Some vital features include automated functional, performance, regression, and security testing. Users can also aim for the commercial version, ReadyAPI (formerly SoapUI Pro), for more advanced capabilities.
Drag and drop to create tests, even with complex scenarios
More protocol support, capabilities, and CI/CD integration with ReadyAPI
**Apache JMeter**
This open-source tool is designed for automated performance testing, primarily for web applications. It can stimulate a heavy load of users to access web services and analyze the AUT’s performance. JMeter can also be used for functional API testing.
**Applitools**
Applitools stands out as an automated visual testing tool, revolutionizing the landscape of web and mobile application testing. The inclusion of visual testing is essential for identifying UI bugs on your web page, and Applitools excels in this regard.
**Perfecto**
Perfecto is a cloud-based and automated testing platform for web and mobile applications. From automated cross-environment executions, custom capabilities, test analysis, and broad integrations, Perfecto makes continuous testing more achievable for DevOps teams.
Feature highlights:
Scriptless test creation for UI web applications
**LambdaTest**
LambdaTest provides automated testing on the cloud. Its cloud service allows teams to scale up their test coverage with speedy parallel, cross-browser, and cross-device testing.

**Qn 3: What is Cross Browser Testing?**
Cross Browser testing is a type of non-functional testing that lets you check whether your website works as intended when accessed through:
Different Browser-OS combinations i.e., on popular browsers like Firefox, Chrome, Edge, Safari—on any of the popular operating systems like Windows, macOS, iOS and Android.
Different devices i.e., users can view and interact with your website on popular devices—smartphones, tablets, desktops and laptops etc.
Below are the steps how the cross browser testing is usually done
•	Identify which features you’ll test and write steps to specify the scenarios.
•	Identify the browsers and platforms—either by popularity or site traffic analysis—that you’ll test on.
•	Pick how you’ll execute the test scenarios—manually or automatically.
•	Set up devices/browsers you’ll test on (or connect with a cloud-based provider).
•	Execute test scenarios on browsers with the highest share of traffic, then move on to outliers.
•	Document and share the test results with teams who can debug/fix issues.
•	Continuously run cross browser compatibility tests to ensure that no bugs were missed.

**Qn4: What is BDD and TDD?**
TDD (Test Driven Development) and BDD (Behavior Driven Development) are development approaches that both emphasize testing and collaboration, yet have major differences in focus and methodology. In TDD, developers test first, then use the test results to guide their development, while in BDD, developers express the system behavior they want to create through Gherkin syntax, then code according to those Gherkin expressions.
 
TDD is more developer-centric, revolving around code correctness, with programming language-specific frameworks. 
•	Create Tests
•	Execute 1 Specific Test
•	Implement The Code
•	Run All Tests And Refactor The Code

On the other hand, BDD is more user-centric, revolves around system behavior, and promotes collaboration between relevant stakeholders with a domain-specific language. 
•	Write Scenarios Using Gherkin
•	Apply TDD