TASK 14
Tags: softwaredevelopment, testing, java, agile
Published: 2024-04-17 12:39:22

## QUE 1 : what is difference between Automated and Manual testing in Software development

**Manual Testing**

- Manual testing is testing of the software where tests are executed manually by a QA Analyst without the use of automation tools. It is performed to discover bugs in software under development.
- In Manual testing, the tester checks all the essential features of the given application or software.
- The tester executes test cases and generates test reports without any help from the automation tools.
- It is conducted by the experienced tester to accomplish the testing process. 
- Manual testing allows testers to adapt quickly to changes in requirements or user interface designs, making it suitable for exploratory testing and ad-hoc scenarios.
- Manual testing is essential for evaluating aspects of usability, user experience, and user interface design that cannot be easily automated.

**Automation Testing**

- In Automated Software Testing, testers write code/test scripts to automate test execution. Testers use appropriate automation tools to develop the test scripts and validate the software. The goal is to complete test execution in a less amount of time.
- It is faster than manual testing because it is done with some automation tools. There is no chance of any human errors.
- Automated testing entirely relies on the pre-scripted test which runs automatically to compare actual result with the expected results. This helps the tester to determine whether or not an application performs as expected.
- Automated testing allows you to execute repetitive task and regression test without the intervention of manual tester. Even though all processes are performed automatically, automation requires some manual effort to create initial testing scripts.


## QUE 2 : Explore some of the most common automation testing tools available in market

**Selenium WebDriver: (Web)**

- Selenium is one of the most widely used open-source automation testing frameworks for web applications.
- Selenium WebDriver allows testers to write tests in various programming languages such as Java, Python, C#, etc.
- It supports multiple browsers (Chrome, Firefox, Safari, Edge, etc.) and platforms (Windows, macOS, Linux).

**Appium: (Mobile App)**

- Appium is an open-source automation tool for testing mobile applications.
- It supports iOS, Android, and Windows platforms and allows tests to be written in various programming languages.
- Appium provides cross-platform testing capabilities and integrates with popular test frameworks like JUnit, TestNG, etc.

**Katalon Studio: (Web, MobileApp & API)**

- Katalon Studio is a comprehensive test automation solution for web, mobile, API, and desktop applications.
- It offers a user-friendly interface with features for test recording, scripting, and test case management.
- Katalon Studio supports multiple scripting languages (Groovy, Java) and integrates with various CI/CD tools.

**Unified Functional Testing (UFT): (Web, Desktop, MobileApp & API)**

- Formerly known as HP QuickTest Professional (QTP), UFT is a commercial automation tool for functional testing of web, desktop, and mobile applications.
- It supports multiple scripting languages (VBScript, JavaScript) and integrates with ALM (Application Lifecycle Management) tools.
- UFT provides features for keyword-driven testing, object recognition, and automated test maintenance.

**Cypress: (Web & API)**

- Cypress is an open-source end-to-end testing framework specifically designed for modern web applications.
- It provides a fast, reliable, and deterministic testing experience with real-time feedback.
- Cypress offers features like automatic waiting, time travel debugging, and built-in support for APIs and browser events.

**Robot Framework: (Web, Desktop, MobileApp & API)**

- Robot Framework is an open-source automation framework that uses a keyword-driven approach and plain-text syntax.
- It supports test automation for web, mobile, API, and desktop applications and integrates with various libraries and tools.
- Robot Framework is highly extensible and supports multiple test data formats and reporting options.

**Playwright (Web & API)**

- Playwright supports multiple web browsers, including Chromium (Google Chrome), Firefox, and WebKit (Safari). This allows for comprehensive cross-browser testing to ensure consistent behavior across different browsers.
- Playwright offers bindings for multiple programming languages, including JavaScript, Python, and .NET (C#). This enables developers to write tests using their preferred programming language and ecosystem.
- Playwright can run browser automation in headless mode, which means the browser UI is not displayed during test execution. Headless mode is useful for running tests in environments without a graphical user interface, such as CI/CD pipelines or remote servers.

**Postman(API):**

- Postman is one of the most popular API testing tools, offering a user-friendly interface for designing, testing, and debugging APIs.
- It supports various HTTP methods (GET, POST, PUT, DELETE, etc.) and allows users to create and organize collections of API requests.
- Postman offers features such as environment variables, automated testing with scripts (using JavaScript), and team collaboration capabilities.

**SoapUI:(API)**

- SoapUI is a widely used API testing tool for testing SOAP and RESTful web services.
- It offers a comprehensive set of features for functional testing, load testing, and security testing of APIs.
- SoapUI supports data-driven testing, assertion scripting, and integration with CI/CD pipelines for automated testing.

**REST Assured: (API)**

- REST Assured is a popular Java library for testing RESTful APIs, commonly used in automated testing frameworks and tools.
- It provides a fluent interface for writing test cases and assertions, making it easy to create readable and maintainable tests.
- REST Assured integrates seamlessly with popular Java testing frameworks like JUnit and TestNG.

**Apache JMeter: (Performance)**

- JMeter is one of the most widely used open-source performance testing tools.
- It allows users to simulate various scenarios, including load testing, stress testing, and functional testing of web applications.
- JMeter supports multiple protocols (HTTP, HTTPS, SOAP, JDBC, etc.) and offers features for distributed testing, dynamic parameterization, and result analysis.

**LoadRunner: (Performance)**

- LoadRunner is a commercial performance testing tool developed by Micro Focus.
- It provides a comprehensive set of features for load testing, stress testing, and performance monitoring of applications.
- LoadRunner supports various protocols (HTTP, SOAP, JDBC, etc.) and offers integrations with CI/CD tools for automated testing.


## QUE 3: what is cross browser testing

Cross-browser testing is the process of verifying that a web application functions correctly and consistently across different web browsers and browser versions. Since web browsers can interpret HTML, CSS, and JavaScript code differently, web applications may render and behave differently depending on the browser being used. Cross-browser testing ensures that users have a consistent and reliable experience regardless of the browser they choose to use.

- The primary objective of cross-browser testing is to identify and address any discrepancies or issues in how a web application is displayed or functions across different browsers.

- Verify that the layout, styling, and visual elements of the web application are consistent across browsers.
- Ensure that all features, interactions, and behaviors of the web application work as expected across browsers.
- Test the responsiveness and performance of the web application, including page load times and responsiveness to user interactions, across browsers.
- Confirm that the web application is compatible with older versions of browsers, as well as newer versions and alternative browsers.


## QUE 4: Write blog on TDD and BDD

**Test Driven Development**

- Test Driven Development is a development technique which focuses more on the implementation of a feature of a software application/product.
- Here, we create the test cases first and then write the code underlying those test cases. Although TDD is a development technique, it can also be used for automation testing development.
- The teams that implement TDD, take more time for development however, they tend to find very few defects. TDD results in improved quality of code and the code that is more reusable and flexible.
- TDD also helps in achieving high test coverage of about 90-100%. The most challenging thing for developers following TDD is to write their test cases before writing the code.

_<u>Benefits:</u>_

- Unit test provides constant feedback about the functions.
- Quality of design increases which further helps in proper maintenance.
- Test driven development act as a safety net against the bugs.
- TDD ensures that your application actually meets requirements defined for it.
- TDD have very short development lifecycle.

**Behavior Driven Development**

- BDD is a software development approach that extends TDD by focusing on the behavior of the software from the perspective of its stakeholders. 
- BDD emphasizes collaboration between technical and non-technical stakeholders to define and verify the behavior of the system through examples written in a common language.
- BDD is considered a best practice when it comes to automated testing as it focuses on the behavior of the application and not on thinking about the implementation of the code.
- The behavior of the application is the center of focus in BDD and it forces the developers and testers to walk-in the customer’s shoes.

_<u>Benefits:</u>_

- Greater clarity on business goals and customer requirements.
- Reaches a larger customer set as it uses non-technical languages.
- Helps in defining acceptance criteria before development.
- Focuses on the system’s behavior from the client’s and developer’s point of view.
- Collaboration between team members is promoted through BDD, involving all stakeholders in the development process to ensure a shared understanding of objectives.
- Detailed documentation of user stories, acceptance criteria, and step definitions can improve overall project documentation, facilitating maintenance and updates to the system.