<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jayachandran V</title>
    <description>The latest articles on DEV Community by Jayachandran V (@jayachandran).</description>
    <link>https://dev.to/jayachandran</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1340788%2F2401eeb1-a2a1-4054-86d4-b74e2e3f79ae.png</url>
      <title>DEV Community: Jayachandran V</title>
      <link>https://dev.to/jayachandran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jayachandran"/>
    <language>en</language>
    <item>
      <title>What is significance of the python virtual environment? Give some examples in support of your answer</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Thu, 13 Jun 2024 18:24:52 +0000</pubDate>
      <link>https://dev.to/jayachandran/what-is-significance-of-the-python-virtual-environment-give-some-examples-in-support-of-your-answer-43oo</link>
      <guid>https://dev.to/jayachandran/what-is-significance-of-the-python-virtual-environment-give-some-examples-in-support-of-your-answer-43oo</guid>
      <description>&lt;p&gt;The short answer is this: &lt;br&gt;
A directory with a particular file structure. It has a bin subdirectory that includes links to a Python interpreter as well as subdirectories that hold packages installed in the specific (venv). virtual environment’s are Python’s way of separating dependencies between projects. therefore, the Ruby's bundler or Javascript's npm come with its features built in, python package manager pip, does not.&lt;/p&gt;

&lt;p&gt;The Python have few common use cases for a virtual environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You’re developing multiple projects that depend on different versions of the same packages, or you have a project that must be isolated from certain packages because of a namespace collision. This is the most standard use case.&lt;/li&gt;
&lt;li&gt;You’re working in a Python environment where you can’t modify the site-packages directory. This may be because you’re working in a highly controlled environment, such as managed hosting, or on a server where the choice of interpreter (or packages used in it) can’t be changed because of production requirements.&lt;/li&gt;
&lt;li&gt;You want to experiment with a specific combination of packages under highly controlled circumstances, for instance to test cross-compatibility or backward compatibility.&lt;/li&gt;
&lt;li&gt;You want to run a “baseline” version of the Python interpreter on a system with no third-party packages, and only install third-party packages for each individual project as needed.&lt;/li&gt;
&lt;li&gt;Nothing says you can’t simply unpack a Python library into a subfolder of a project and use it that way. Likewise, you could download a standalone copy of the Python interpreter, unpack it into a folder, and use it to run scripts and packages devoted to it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But managing such cobbled-together projects soon becomes difficult. It only seems easier to do that at first. Working with packages that have binary components, or that rely on elaborate third-party dependencies, can be a nightmare. Worse, reproducing such a setup on someone else’s machine, or on a new machine you manage, is tricky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can have multiple environments, with multiple sets of packages, without conflicts among them. This way, different projects’ requirements can be satisfied at the same time.&lt;/li&gt;
&lt;li&gt;You can easily release your project with its own dependent modules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;br&gt;
 Here are two ways you can create Python virtual environments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Virtualenv:&lt;/em&gt;&lt;br&gt;
It is a tool used to create isolated Python environments. It creates a folder which contains all the necessary executables to use the packages that a Python project would need.&lt;br&gt;
you can install it with pip:  pip install virtualenv&lt;/p&gt;

&lt;p&gt;Verify the installation of following command: virtualenv --version&lt;/p&gt;

&lt;p&gt;We can create Virtual environment in Visual studio code can do this when the Python extension is enabled and pycharm ide in both windows and Linux platform. Many Python IDEs will automatically detect and activate a virtual environment if one is found in the current project directory. Visual Studio Code, Opening a terminal inside Visual Studio Code will automatically activate the selected virtual environment. PyCharm automatically creates a virtual environment for each new project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activate the Python virtual environment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before you can use this virtual environment, you need to explicitly activate it. Activation makes the virtual environment the default Python interpreter for the duration of a shell session.&lt;/p&gt;

&lt;p&gt;You’ll need to use different syntax for activating the virtual environment depending on which operating system and command shell you’re using.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Unix or MacOS, using the bash shell: source /path/to/venv/bin/activate&lt;/li&gt;
&lt;li&gt;On Unix or MacOS, using the csh shell: source /path/to/venv/bin/activate.csh&lt;/li&gt;
&lt;li&gt;On Unix or MacOS, using the fish shell: source /path/to/venv/bin/activate.fish&lt;/li&gt;
&lt;li&gt;On Windows using the Command Prompt: path\to\venv\Scripts\activate.bat&lt;/li&gt;
&lt;li&gt;On Windows using PowerShell: path\to\venv\Scripts\Activate.ps1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Install Packages&lt;/strong&gt;&lt;br&gt;
You can install packages one by one, or by setting a requirements.txt file for your project.&lt;/p&gt;

&lt;p&gt;pip install some-package&lt;br&gt;
pip install -r requirements.txt&lt;br&gt;
If you want to create a requirements.txt file from the already installed packages, run the following command:&lt;/p&gt;

&lt;p&gt;pip freeze &amp;gt; requirements.txt&lt;br&gt;
The file will contain the list of all the packages installed in the current environment, and their respective versions. This will help you release your project with its own dependent modules.&lt;/p&gt;

&lt;p&gt;Deactivate an Environment&lt;br&gt;
If you are done working with the virtual environment you can deactivate it with:&lt;/p&gt;

&lt;p&gt;deactivate&lt;br&gt;
This puts you back to the system’s default Python interpreter with all its installed libraries.&lt;/p&gt;

&lt;p&gt;Delete an Environment&lt;br&gt;
Simply delete the environment folder.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Describe the Python Selenium architecture in detail?</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Thu, 13 Jun 2024 18:15:50 +0000</pubDate>
      <link>https://dev.to/jayachandran/describe-the-python-selenium-architecture-in-detail-23c7</link>
      <guid>https://dev.to/jayachandran/describe-the-python-selenium-architecture-in-detail-23c7</guid>
      <description>&lt;p&gt;Python Selenium Architecture:&lt;/p&gt;

&lt;p&gt;The architecture of Selenium with Python involves multiple components working together to automate browser interactions with web browsers. Here is a detailed description of the Python Selenium architecture. Selenium is an open source framework that has been designed for the automation testing for web applications. It is a flexible testing tool that allows the automation tester to write testing scripts in Selenium and in various programming languages such as Python, Java, etc., Detailed description of the key elements in the Python Selenium architecture given below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbl6b50s476r05jou2s3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbl6b50s476r05jou2s3.png" alt="Image description" width="630" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.Selenium Webdriver:&lt;/p&gt;

&lt;p&gt;At the core of the architecture is the Selenium WebDriver, which is responsible for interacting with web browsers. It provides a set of APIs (Application Programming Interfaces) that allows communication between Python scripts and the web browser.&lt;/p&gt;

&lt;p&gt;The WebDriver acts as a bridge between the testing framework (Python) and the browser, enabling the automation of browser actions.&lt;/p&gt;

&lt;p&gt;Selenium Webdriver comprises of four major components:&lt;/p&gt;

&lt;p&gt;Selenium client libraries:&lt;/p&gt;

&lt;p&gt;JSON wire protocol:&lt;/p&gt;

&lt;p&gt;Webdrivers:&lt;/p&gt;

&lt;p&gt;Operating system browsers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Python script:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The automation scripts are written in Python and utilize the Selenium WebDriver APIs. These scripts define the sequence of actions to be performed on the web browser, such as opening a webpage, clicking elements, filling forms, and extracting data.&lt;/p&gt;

&lt;p&gt;Python serves as the programming language for creating and executing the automation scripts.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Browser driver:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each web browser (e.g., Chrome, Firefox, Edge) requires a specific driver to establish a connection with the Selenium WebDriver. These drivers act as intermediaries, translating WebDriver commands into browser-specific actions. For example, ChromeDriver is used with the Chrome browser, and GeckoDriver is used with Firefox.&lt;/p&gt;

&lt;p&gt;4.JSON Wire protocol:&lt;/p&gt;

&lt;p&gt;The JSON Wire Protocol is a RESTful web service protocol that enables communication between the Selenium WebDriver and the browser driver. It defines a standardized way to exchange data and commands, allowing for cross-browser compatibility.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Web Browser:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The web browser is the application being automated. Selenium supports various browsers, and the automation scripts define interactions with the browser, such as opening URLs, interacting with elements, and navigating between pages.&lt;/p&gt;

&lt;p&gt;Here’s a simplified flow of how these components interact during a typical Selenium automation process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Python script sends commands to the Selenium WebDriver.&lt;/li&gt;
&lt;li&gt;The WebDriver communicates with the browser driver using the JSON Wire Protocol.&lt;/li&gt;
&lt;li&gt;The browser driver translates the WebDriver commands into actions performed by the browser.&lt;/li&gt;
&lt;li&gt;The browser executes the actions and sends the results back to the WebDriver.&lt;/li&gt;
&lt;li&gt;The Python script receives the results and continues with the automation flow.&lt;/li&gt;
&lt;li&gt;It’s important to note that Selenium WebDriver and the browser driver must be compatible in terms of versions and functionality to ensure seamless communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Python Selenium architecture allows for the automation of web browser interactions, making it a powerful tool for web testing, scraping, and other automation tasks. The flexibility of Selenium, combined with the simplicity of Python scripting, makes it a popular choice for developers and testers in the automation space.&lt;/p&gt;

&lt;p&gt;Significance of python virtual environment:&lt;/p&gt;

&lt;p&gt;The Python Virtual Environment (often referred to as “virtualenv” or “venv”) is a crucial tool for managing dependencies in Python projects. It provides an isolated environment where you can install and manage packages independently of the global Python installation.&lt;/p&gt;

&lt;p&gt;Isolation of Dependencies: Virtual environments create isolated spaces for Python projects. Each project can have its own virtual environment, preventing conflicts between different projects that might require different package versions.&lt;/p&gt;

&lt;p&gt;Dependency Management: It allows you to manage dependencies for each project independently. You can install specific versions of packages without affecting the global Python environment.&lt;/p&gt;

&lt;p&gt;Version Compatibility: Virtual environments help ensure that a project works with specific versions of packages. This is crucial for maintaining version compatibility and avoiding unexpected issues.&lt;/p&gt;

&lt;p&gt;Clean Project Setup: It keeps the project directory clean by containing all dependencies within a specific folder. This makes it easier to share or transfer projects without including unnecessary global dependencies.&lt;/p&gt;

&lt;p&gt;Ease of Deployment: Virtual environments simplify the deployment process.&lt;/p&gt;

&lt;p&gt;Testing and Development Isolation: Virtual environments enable developers and testers to work in isolated environments. Changes made to one project’s dependencies do not impact others, promoting a clean and controlled development and testing environment.&lt;/p&gt;

&lt;p&gt;The significance of Python Virtual Environments lies in their ability to provide isolation, manage dependencies, ensure version compatibility, maintain a clean project setup, simplify deployment, and support controlled testing and development environments. These benefits contribute to more reliable and reproducible Python projects.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Let’s you have two projects, Project A and Project B, and they both require different versions of a particular library, “mylibrary.” Without virtual environments, you might run into conflicts. However, with virtual environments, you can create individual environments for each project: For Project A:&lt;br&gt;
Create a virtual environment for Project A.&lt;br&gt;
Install “mylibrary” version 1.0.&lt;br&gt;
Project A executes with this specific version of “mylibrary.”&lt;/p&gt;

&lt;p&gt;For Project B:&lt;br&gt;
Create a virtual environment for Project B.&lt;br&gt;
Install “mylibrary” version 2.0.&lt;br&gt;
Project B executes with this specific version of “mylibrary.”&lt;/p&gt;

&lt;p&gt;This way, Project A and Project B can coexist on the same system without interfering with each other’s dependencies.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is Selenium? Why do we use Selenium for automation?</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Sun, 09 Jun 2024 21:25:09 +0000</pubDate>
      <link>https://dev.to/jayachandran/what-is-selenium-why-do-we-use-selenium-for-automation-3phh</link>
      <guid>https://dev.to/jayachandran/what-is-selenium-why-do-we-use-selenium-for-automation-3phh</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Selenium is a automation tool used for web application testing. It is a popular open source testing tool. Selenium enables testers to write automated tests in various programming languages to test the functionality of web applications. It can be run in many different browsers and operating systems. It can be used to test the functionality of web applications on various browsers and operating systems. Selenium Software Testing is a great way to automate your web application testing.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Components of Selenium&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Selenium is a collection that consists of three major components:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Selenium IDE:&lt;/em&gt; Selenium IDE is a Firefox add-on that enables testers to record and playback the recorded automated tests. Selenium IDE is easy to use and lets you create and run automated tests quickly. Selenium IDE Chrome also includes a built-in debugger that enables you to troubleshoot your tests. To use Selenium IDE, you first need to install the Selenium add-on for Firefox or Chrome. You can then open Selenium IDE by clicking on the "Selenium" icon in the Firefox or Chrome toolbar.&lt;/p&gt;

&lt;p&gt;Once the Selenium IDE is open, then you can start recording your tests by clicking on the "Record" button. Selenium will then begin recording all of your actions as you perform them in the browser. To stop the test recording, click on the "Stop" button. You can then playback your tests by clicking on the "Play" button. Selenium will then replay all of the actions that you recorded.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Selenium WebDriver:&lt;/em&gt; The Selenium WebDriver is an open-source tool used for automating web browser interaction from a user perspective. With it, you can write tests that simulate user interactions with a web application. It is available for many different programming languages, such as Java, C#, Python, and Perl.&lt;/p&gt;

&lt;p&gt;WebDriver provides a powerful and flexible test automation framework that enables you to create automated tests for your web applications easily. It also includes several over-the-top features, such as automatically discovering elements on a web page and capturing screenshots of your tests.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Selenium Grid:&lt;/em&gt; The Selenium Grid distributes your tests across multiple machines or virtual machines (VMs). Selenium Grid enables you to test parallelly on various devices or VMs, allowing you to scale your test automation quickly. Selenium Grid is a crucial part of the overall Selenium testing suite and will enable you to execute your automated tests much faster. The Selenium Server is a part of Selenium Grid that can be installed locally on your device or hosted on a separate system/server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Using Selenium for automation:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Testing is a vital part of the development cycle and is essential for ensuring the quality and stability of your applications. By performing application testing, you can find and fix bugs in your code before they have a chance to cause problems for your users. Additionally, application testing can help you verify that your application is working correctly on different browsers and operating systems.&lt;/p&gt;

&lt;p&gt;Testing is performed in several ways, including manual, automated, and performance testing. Automated testing is a popular approach for performing application testing, as it enables you to test your applications quickly and efficiently. Selenium Testing is a popular tool for automated testing, as it allows you to write tests in various programming languages and run them on many different browsers and operating systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Benefits of Selenium Testing:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Efficient and accurate web application testing.&lt;/li&gt;
&lt;li&gt;The ability to test your web application on multiple browsers and 
operating systems.&lt;/li&gt;
&lt;li&gt;The ability to run more than one test at the same time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can significantly reduce your time to test your web application with a selenium grid. And by using a selenium grid, you can ensure that your web application is fully functional before releasing it to users. Therefore, if you want to improve your web application testing, consider using the selenium grid. Its one of the best ways to automate your web application testing.&lt;/p&gt;

&lt;p&gt;The important things to keep in mind while writing Selenium tests.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The goal of our selenium test is to find the bugs in your web application.&lt;/li&gt;
&lt;li&gt;your selenium test should be concise.&lt;/li&gt;
&lt;li&gt;You should only use the selenium web driver when you are sure about how to use the tools and scripts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you have written your selenium test, you can run them on different browsers and operating systems. To do this, you will need to use a selenium grid. A selenium grid is a server that enables you to run multiple selenium tests simultaneously on different browsers and operating systems.&lt;/p&gt;

&lt;p&gt;There are different types of Selenium tests that you can write. The most common types of selenium tests are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unit Tests&lt;/li&gt;
&lt;li&gt;Functional Tests&lt;/li&gt;
&lt;li&gt;Integration Tests&lt;/li&gt;
&lt;li&gt;Regression Tests&lt;/li&gt;
&lt;li&gt;End-to-End Tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Unit Tests&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unit Tests are the simplest type of Selenium tests. A Unit Test verifies that a single unit of code behaves as expected. &lt;/p&gt;

&lt;p&gt;When writing a Unit Test, you should first create a test case. A test case is a set of instructions that tests a particular feature or function of your code. To create a test case, you will need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define the expected outcome of the test.&lt;/li&gt;
&lt;li&gt;Verify that the code under test behaves as expected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once your test case is written, you can run it using the WebDriver. Open your browser and go to the page where your test is located. Then, enter your test case into the browser's address bar and press "Enter." Your Unit Test should automatically run, and you will be able to see if the code under test behaved as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Functional Test&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Functional Tests are similar to Unit Tests, but they test the functionality f an entire web application. When writing a Functional Test, you should always keep in mind the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The goal of your Functional Test is to find bugs in all the functional components of your web application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your Functional Test should be concise but have to be written for each functional module of your app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should only use the WebDriver functional tests when all your components are passed from the development stage.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When writing a Functional Test, you will first need to identify the different areas of your web application that you want to test. Once you have selected these areas, you can create a test case for each one. Once your test cases are written, you can run them using the WebDriver. Open your browser and go to the page where your tests are located. Then, enter your test case into the browser's address bar and press "Enter." Your Functional Test should automatically run, and you will be able to see if the code under test behaved as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Integration Tests&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Integration Tests are used to test the integration between different parts of your web application. When writing an Integration Test, you should always keep in mind the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The goal of Integration Testing in Selenium is to find bugs in your web application that arise from integrating multiple components.&lt;/li&gt;
&lt;li&gt;Your Integration Test should be short, and it should verify that all individual components work properly when integrated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Regression Tests&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Usually, regression suites include a huge number of test cases and it takes time and effort to execute them manually every time when a code change has been introduced. Hence almost every organization looks after automating regression test cases to reduce the time and effort. Choosing the right automation framework/ tool completely depends upon the application, technology used, testing requirements, and skill sets required for performing automation testing. It helps in automating functional and regression test cases that reduce the manual testing effort.&lt;/p&gt;

&lt;p&gt;Automation completely depends on the framework that you choose to develop, and there is no such tool dedicated to performing only regression testing. The automation framework you select should be designed such that it supports regression testing effectively.&lt;/p&gt;

&lt;p&gt;You can develop the regression suite for automation and keep adding new test scripts/test cases as and when required. Selenium Framework contains many reusable modules/functions that make it easy to maintain the existing code or add any new code. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;End-to-End Tests&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
End-to-End Tests are used to test an entire web application from start to finish. When writing an end-to-end test, you should always keep in mind the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The goal of your End-to-End Test is to find bugs in your web application that arise as a result of the correlation between multiple components.&lt;/li&gt;
&lt;li&gt;Your End-to-End Test should be concise, and it should verify that all individual components work properly when integrated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once your test cases are written, you can run them using the WebDriver. Open your browser and go to the page where your tests are located. Then, enter your test case into the browser's address bar and press "Enter." Your End-to-End Test should automatically run, and you will be able to see if the code under test behaved as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations of Selenium WebDriver&lt;/strong&gt;&lt;br&gt;
Although Selenium is one of the best tools for automating your tests on multiple devices, it still has limitations. Some of them are mentioned below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;WebDriver cannot interact with flash or Java applets.&lt;/li&gt;
&lt;li&gt;WebDriver is not capable of handling complex animations.&lt;/li&gt;
&lt;li&gt;WebDriver cannot recognize text inside images.&lt;/li&gt;
&lt;li&gt;WebDriver has some difficulty dealing with dynamically generated 
pages.&lt;/li&gt;
&lt;li&gt;WebDriver can be difficult to use when testing web applications that 
use Ajax or ReactJS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Advantages of Selenium Automation Testing&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Language Agnostic:&lt;/em&gt; &lt;br&gt;
Selenium WebDriver offers native bindings for JavaScript, Python, Java, C#, and Ruby, eliminating the need to learn a new programming language solely for testing. While Selenium has its syntax, having proficiency in one of these languages proves beneficial.&lt;br&gt;
&lt;em&gt;Cross-Browser Compatibility:&lt;/em&gt; &lt;br&gt;
Selenium communicates with browsers through drivers and is adaptable to different browser versions. With the appropriate driver, Selenium seamlessly supports significant browsers like Chrome, Firefox, Safari, Edge, and Opera.&lt;br&gt;
&lt;em&gt;Cross-Platform Compatibility:&lt;/em&gt;&lt;br&gt;
 Extending its versatility, Selenium is cross-platform compatible, allowing test creation on one platform and execution on another. It effortlessly functions across Windows, Mac OS, and various Linux distributions.&lt;br&gt;
&lt;em&gt;Community Support:&lt;/em&gt;&lt;br&gt;
 As an open-source tool with a substantial history, Selenium boasts a strong community. This support extends beyond regular updates and upgrades to encompass comprehensive documentation and a wealth of learning resources.&lt;br&gt;
&lt;em&gt;Integrations with Third Parties:&lt;/em&gt;&lt;br&gt;
 Selenium excels in integrations, providing the flexibility to extend functionality through third-party plugins. Users can leverage existing plugins or create custom ones to enhance Selenium's capabilities.&lt;br&gt;
&lt;em&gt;Parallel Test Execution:&lt;/em&gt; &lt;br&gt;
Selenium supports parallel test execution across multiple machines, facilitated by Selenium Grid. This feature enables users to conduct tests simultaneously on various browsers and platforms, centralizing the management of browser configurations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drawbacks of Selenium Automation Testing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High Test Maintenance&lt;/li&gt;
&lt;li&gt;No Build-in Capabilities&lt;/li&gt;
&lt;li&gt;No Reliable Tech Support&lt;/li&gt;
&lt;li&gt;Learning Curve&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Difference between Functional Testing and Non Functional Testing? Give Some Examples</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Fri, 22 Mar 2024 12:43:31 +0000</pubDate>
      <link>https://dev.to/jayachandran/difference-between-functional-testing-and-non-functional-testing-give-some-examples-3oc9</link>
      <guid>https://dev.to/jayachandran/difference-between-functional-testing-and-non-functional-testing-give-some-examples-3oc9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Functional Testing and Non functional testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This type of testing verifies whether the specified functional requirements are met and the non functional testing used to test non-functional things&lt;/p&gt;

&lt;p&gt;_Functional Testing                   Non functional testing&lt;br&gt;
_&lt;br&gt;
User View:                               Hacker View:     &lt;/p&gt;

&lt;p&gt;Can the user do this?                   Are Vulnerabilities in &lt;br&gt;
                                        the network infrastructure&lt;br&gt;
                                        operating system or &lt;br&gt;
                                        database system?&lt;/p&gt;

&lt;p&gt;Does the feature work?                  Can the client(browser &lt;br&gt;
                                        etc.,) be manipulated?&lt;/p&gt;

&lt;p&gt;Does the software meets the            Is the server code robust?&lt;br&gt;
users expectations?&lt;/p&gt;

&lt;p&gt;At a component level                   Overall System&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Functional testing Vs Non functional Testing**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Mandatory                              Non Mandatory&lt;/p&gt;

&lt;p&gt;Usually easy to define                 Usually more difficult to &lt;br&gt;
                                       define&lt;/p&gt;

&lt;p&gt;It has been done before               It will be done after &lt;br&gt;
non functional testing                functional testing completes&lt;/p&gt;

&lt;p&gt;It is also called Behavioral          Focus on the performance of &lt;br&gt;
testing and focus on the              the testing&lt;br&gt;
underlying application      &lt;/p&gt;

&lt;p&gt;It can be done manually              It is hard to do manually. It &lt;br&gt;
through test cases can be            usually need already existing &lt;br&gt;
automated once application           applications to measure and &lt;br&gt;
is stable                            test application performance&lt;/p&gt;

&lt;p&gt;Types of Functional testing          Types of Non functional &lt;br&gt;
includes Unit testing, Smoke         testing includes volume &lt;br&gt;
testing, Integration testing,        testing, Load testing, stress&lt;br&gt;
Regression testing, system           testing, Recovery testing, &lt;br&gt;
testing, User acceptance             Scalability testing, Security &lt;br&gt;
testing                              testing&lt;/p&gt;

&lt;p&gt;Test data can be prepared            Test data can be prepared &lt;br&gt;
using the business or                using the performance &lt;br&gt;
functional requirements of           requirements of the &lt;br&gt;
the application                      application&lt;/p&gt;

&lt;p&gt;Testing tool used for               Testing tools used for non&lt;br&gt;
functional testing includes         functional testing includes&lt;br&gt;
UFT(previously QTP),                Jmeter, LoadRunner, Webload,&lt;br&gt;
selenium, Ranorex, telerik           Neoload, Loadcomplete&lt;br&gt;
test studio, Micro focus, &lt;br&gt;
sahi, testcomplete, IBM &lt;br&gt;
rational&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example Test case:&lt;/em&gt;                   Example Test case: __&lt;/p&gt;

&lt;p&gt;Test whether the user can            Time required to load the &lt;br&gt;
able to login to the application      homepage&lt;/p&gt;

&lt;p&gt;1) Authentication of user whenever    1) Emails should be sent &lt;br&gt;
  he/she logs into the system.        with a latency of no greater&lt;br&gt;
                                      than 12hours from such an&lt;br&gt;
                                      activity.&lt;br&gt;
2) System shutdown in case            2)The processing of each&lt;br&gt;
  of a cyber attack.                   request should be done&lt;br&gt;
                                       within 10 seconds&lt;br&gt;
3) A Verification email is            3) The site should load in&lt;br&gt;&lt;br&gt;
 sent to user whenever he/she           3seconds when the number &lt;br&gt;
 registers for the first time           of simultaneous users are &lt;br&gt;
 on some software system.                &amp;gt; 10000&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing Techniques with Proper Examples: 1.Boundary value Analysis 2.Decision Table Testing 3.Use Case Testing 4.LCSAJ Testing</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Fri, 22 Mar 2024 08:43:44 +0000</pubDate>
      <link>https://dev.to/jayachandran/testing-techniques-with-proper-examples-1boundary-value-analysis-2decision-table-testing-3use-case-testing-4lcsaj-testing-23g9</link>
      <guid>https://dev.to/jayachandran/testing-techniques-with-proper-examples-1boundary-value-analysis-2decision-table-testing-3use-case-testing-4lcsaj-testing-23g9</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Software Testing has some techniques that can help you to design better test cases. Since exhaustive testing is not possible; Manual Testing Techniques help reduce the number of test cases to be executed while increasing test coverage. They help to identify the test conditions of software application otherwise difficult to recognize.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Software Testing is one of the important aspects of the development of software. Without proper testing, the software developed can be a big failure. Various Software Testing Techniques are available to carry out testing in a systematic way.&lt;/p&gt;

&lt;p&gt;Boundary Value Analysis&lt;/p&gt;

&lt;p&gt;Boundary value analysis is the process of testing between the extreme ends or boundaries between partitions of the input value.&lt;br&gt;
Boundary value analysis is based on testing at the boundaries between the partitions. It includes maximum, minimum, inside or outside boundaries, typical values and error values.&lt;/p&gt;

&lt;p&gt;It is generally seen that a large number of errors occur at the boundaries of the defined input values rather than the center. It is also known as BVA and gives a selection of test cases which exercise bounding values.&lt;/p&gt;

&lt;p&gt;This technique focuses on boundaries as a greater number of errors occur at the boundaries of the input domain. For example, the programmer chooses &amp;lt; rather than =&amp;lt; which would lead to defects.&lt;/p&gt;

&lt;p&gt;This black box testing technique complements equivalence partitioning. This software testing technique base on the principle that, if a system works well for these particular values then it will work perfectly well for all values which comes between the two boundary values.&lt;/p&gt;

&lt;p&gt;Guidelines for Boundary Value analysis&lt;/p&gt;

&lt;p&gt;If an input condition is restricted between values A and B, then the test cases should be designed with values A and B as well as values which are above and below A and B.&lt;/p&gt;

&lt;p&gt;If an input condition is a large number of values, the test case should be developed which need to exercise the minimum and maximum numbers. Here, values above and below the minimum and maximum values are also tested. Apply guidelines 1 &amp;amp; 2 to get output conditions. It gives an output which reflects the minimum and the maximum values expected. It also tests the below or above values.&lt;/p&gt;

&lt;p&gt;Input                                   Values to be tested&lt;br&gt;
Range (Between A &amp;amp; B)                  A-1, A, A+1,B,B+1,B-1&lt;/p&gt;

&lt;p&gt;Number of Values                      Minimum Number, Minimum &lt;br&gt;
                                      number-1, Maximum number, &lt;br&gt;
                                      Maximum number+1&lt;/p&gt;

&lt;p&gt;For Example:&lt;/p&gt;

&lt;p&gt;Check the salary of a employee whose salary is maximum 15000 and minimum 10000&lt;/p&gt;

&lt;p&gt;Boundary value specification will be:&lt;br&gt;
{9999,10000,15000,15001}&lt;/p&gt;

&lt;p&gt;Test Case&lt;/p&gt;

&lt;p&gt;Test data                    Expected Result&lt;/p&gt;

&lt;p&gt;9999                            False&lt;br&gt;
10000                           True&lt;br&gt;
15000                           True&lt;br&gt;
15001                           False&lt;/p&gt;

&lt;p&gt;Decision Table Testing&lt;/p&gt;

&lt;p&gt;Decision table testing is also called as Cause-effect graphing. It uses different input conditions (cause) and their system results (output/effect) in a graph which is further converted into a tabular form. This technique provides a comprehensive representation of conditions and their actions therefore of cause and their effects.&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Causes (input conditions) &amp;amp; effects (actions) are listed for a module and a cause-effect graph is developed.&lt;/li&gt;
&lt;li&gt;The graph is converted to a decision table.&lt;/li&gt;
&lt;li&gt;The decision table is then converted to test cases.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;If X stays at Y place. X has to pay rent to stay in Y house. If X does not have money to pay, then will have to leave the house.&lt;/p&gt;

&lt;p&gt;Causes:&lt;br&gt;
C1 – X stays at Y place.&lt;br&gt;
C2 – X has money to pay rent.&lt;/p&gt;

&lt;p&gt;Effects:&lt;br&gt;
E1 – X can stay at Y place.&lt;br&gt;
E2 – X has to leave the house.&lt;/p&gt;

&lt;p&gt;Use Case Testing&lt;/p&gt;

&lt;p&gt;Use Case represents the different ways in which the system can be used by the users. The use case divides the system behavior into scenarios, such that each scenario performs some useful action from the users point of view.&lt;/p&gt;

&lt;p&gt;Each scenario may involve a single message or multiple message exchanges between the user and the system to complete itself.&lt;/p&gt;

&lt;p&gt;Representation of Use cases:&lt;/p&gt;

&lt;p&gt;A use case is represented with actors and systems. The actor represents the user. The system represents the use case.&lt;/p&gt;

&lt;p&gt;Use Case Testing:&lt;/p&gt;

&lt;p&gt;Use Case testing is a technique wherein the use cases identify all the test cases that cover the complete system.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;When a new user tries to create an account on a travels website.&lt;/p&gt;

&lt;p&gt;Main Success Scenario    Step          Description&lt;br&gt;
A: Actor                  1           A:Enters mobile no &lt;br&gt;
S: System&lt;br&gt;
                          2           S: Verifies mobile number &amp;amp; &lt;br&gt;
                                         asks to put OTP&lt;br&gt;&lt;br&gt;
                          3           A: Receives OTP and fill it &lt;br&gt;
                                        on the site.&lt;br&gt;
                          4           S: Verifies OTP and asks to &lt;br&gt;
                                      put password&lt;br&gt;&lt;br&gt;
                          5           A: Puts the password &lt;br&gt;
                          6           S: Verifies the password&lt;br&gt;&lt;br&gt;
                      7           A:clicks on sign up to &lt;br&gt;
                                      create a account&lt;/p&gt;

&lt;p&gt;Extensions            2a          Incorrect mobile number&lt;br&gt;
                                      A:clicks on sign up to&lt;br&gt;
                          2b          create a account&lt;br&gt;
                                      S: Displays message That &lt;br&gt;
                                       user already exists&lt;br&gt;
                          4a          Incorrect OTP&lt;br&gt;
                                      S: Asks to enter valid OTP&lt;br&gt;
                          4b          correct OTP&lt;br&gt;
                                      S:accepts &amp;amp; asks to provide &lt;br&gt;
                                      password&lt;br&gt;
                          6a          Password does not match the &lt;br&gt;
                                      criteria&lt;br&gt;
                                      S: Displays message &lt;br&gt;
                                      “Incorrect Password”&lt;/p&gt;

&lt;p&gt;In first a positive scenario that carries end-to-end testing is tested. Therefore, complete scenario of creating an account is tested. Afterward, negative testing starts therefore if the mobile number is incorrect, the user will get a message for the same.&lt;/p&gt;

&lt;p&gt;Once the user provides a correct mobile number, the system will send OTP to the users mobile number and the user will have to provide the same on the OTP field of the signup screen.&lt;/p&gt;

&lt;p&gt;In case of incorrect OTP, the system asks to provide the correct OTP. Once correct OTP is provided, the system asks to fill the password, and the password should match the criteria defined and  else it asks to fill the password again. Once the correct password is provided the system creates the users account by clicking sign up.&lt;/p&gt;

&lt;p&gt;LCSAJ Testing&lt;/p&gt;

&lt;p&gt;What is LCSAJ Testing?&lt;/p&gt;

&lt;p&gt;The LCSAJ testing stands for "Linear Code Sequence and Jump". &lt;br&gt;
this method requires access to the source code, and presents results with reference to that source code. This method of testing is an White box testing technique to identify the code coverage, Which begins at the start of the  program or branch and ends at the end of the program or the branch. &lt;/p&gt;

&lt;p&gt;LCSAJ is a program unit composed of textual code sequence that terminates in a jump to the beginning of another code sequence and jump.&lt;/p&gt;

&lt;p&gt;LCSAJ characteristics:&lt;/p&gt;

&lt;p&gt;100% LCSAJ means 100% statement Coverage&lt;br&gt;
100% LCSAJ means 100% Branch Coverage&lt;br&gt;
100% procedure or function call coverage&lt;br&gt;
100% multiple condition coverage&lt;/p&gt;

&lt;p&gt;Execution of sequential programs that contain conditions proceeds in pairs consisting of a sequence of statements executed one after the other and its termination by a jump to the next such pair.&lt;/p&gt;

&lt;p&gt;An LCSAJ is represented as a triple X,Y,Z where X and Y are respective to the locations of the first and the last statements and Z is the location to which the statement at Y jumps. This generally we follow not with this movement indirectly through modified condition testing will add it certain specific industries or applications that report to have this, so this is a software&lt;br&gt;
analysis method basically used to identify structural units in code under test. Its primary use is with dynamic software analysis top help answer the question how much testing is enough?&lt;/p&gt;

&lt;p&gt;That means basically it will have an analysis of how much is tested?&lt;/p&gt;

&lt;p&gt;In terms of dynamic software behavior or analysis, dynamic software analysis is used to measure the quality and efficacy of software test data, where the quantification is performed in terms of structural units of the code under test that is based on the structural unit and its behavior or the functionality the dynamic software analysis is used so it used to measure the quality&lt;br&gt;
identification of the software test data. When used to quantify the structural units exercised the given set of test data, dynamic analysis is also referred to as coverage analysis. So when we are done with the dynamic analysis we will also come up with the coverage analysis, so that is how this is done basically to drive how much of the testing based on the test data is needed is what is been derived for the linear code sequence and jump testing.&lt;/p&gt;

&lt;p&gt;Is basically an software code path fragment consisting of a sequence of code that means a linear code sequence followed by a control code jump in consist of the free items basically start of the linear sequence of executable segments at end of the sequence and target line in which the control flow is transferred at this end of this, suppose function 1, 2 I am just mentioning in&lt;br&gt;
numbers like which one in number of function laws are executed by the fragments are there in the function. so what do we do with the LCSAJ basically how much are you test for this is what is going to&lt;br&gt;
tell that is its basically code path, code path fragment I may test1, I may test 2, I may test some by randomly N 20 may be N. so that means consisting of sequence of code it is called linear code&lt;br&gt;
sequence. And jumping to the different linear it is called jump control flow jump basically so what do we do.&lt;/p&gt;

&lt;p&gt;Do you have a code path fragment? &lt;/p&gt;

&lt;p&gt;Consistent of sequence of code linear code sequence followed by a control flow jump so we start with this and then we will have a control flow jump and basically the jump could be achieved with a following three types that is start, then end you know that we need to have end for the function in law and the target line. That means with the help of this target line how we have jumped to the end basically. That mean the target line each control flow is transferred at the end of the sequence, so with the help of this will basically used where we have numerous functionality having expected output and similar sort of inputs you have some of the functions so that is how you use the LCSAJ method. So in the continuation of this basically LCSAJ method will have the TER which is called the test effective ratio. So what is test effective ratio? It is number of statement executed by number of effective statements, number of control flow branches executed by total number of control flow branches they have number of LCSAJ executed by total number of LCSAJ.&lt;/p&gt;

&lt;p&gt;Altogether you can have a TER that is effectiveness ratio how much of the code we have sequenced and jump in terms of&lt;br&gt;
testing. So accordingly we will have this sort of testing and coverage also will take care of this, coverage or metrics are used to botch and hours testing has been achieved the most terrific metrics is proportion of statements test effective ratio1 TER1, is called as number of statements executed by total number of executive statements. Higher level coverage metrics can also be generated in particular thing. &lt;/p&gt;

&lt;p&gt;The next level of TER control flow branches is in to whatever admission are branches that we have seen before you are right total number of control flow branches how much is there? So whether we are able to test it or we are able to free value the metrics, so this TER will give basically in the sequences whatever we have done, so TER 3 number of number of executive statements divided by total number of LCSAJ. So this metrics that is for the hierarchy whereby when the TER1 100% has been achieved it follow that TER2 should be 100% then TER 1 should be 100%, so I used to have TER1 as to be 100% so that the number of LCSAJ are executed by the total number of series become 100%. So this is been traditionally very old method so both the TER1 &amp;amp; 2 get results for 70 and the third results for the later 70. And the requirements actually for the TER1 100% was the level and used to be called TER and then they define TER1, TER2, TER3 like this levels of testing based mention based on the safety and embedded software they will have a definitions of the embedded software levels. &lt;/p&gt;

&lt;p&gt;Later they have a MCDC modified condition decision coverage that we have studied in the numerous slides. So it was added 1992 higher levels of TER 3 100 has been mandatory for many other projects including aero space telephone and banking. So where there is a mandated TER3 should be 100% liners force sequence and jump is 100% mandatory when practical problem of using TER3 is that many LCSAJ can never be executed due to the conferencing condition they may contain.&lt;/p&gt;

&lt;p&gt;We know that we have different jumps sequence that is start of the linear sequence of executive statement. And the target line to which control flow is transferred at the end of the executive statement, so it is basically it is the units in the map that executed all of them to subjective but it is mandatory.&lt;/p&gt;

&lt;p&gt;It has oversight of that integer it counts 0 in what it does is while the count is less than iterations that means 750 times this block will be executed this value will be execute of some number and modules consume columns and total array will be assigned with 1 implemented if the total of the particular value is greater than maximum code it will assign the ledger count, the count will get&lt;br&gt;
implemented so that up to 750 times it will be executed. Hence it will not be assigned. So with help of this example so there is a LCSAJ triples it is called as I said start fine finish line jump line, so there are eight LCSAJ numbers have been identified and start line is 10 or the first three or then we have the start line of 17 for the next three and then 7th one is 25 and the 8th one is 28. So based on this follows which there are LCSAJ numbers for that and total number of LCSAJ are 28.&lt;/p&gt;

&lt;p&gt;The first one in LCSAJ then start line 10 is used and finish line is 17that means 10 is wiped after these values and 17 is the 28 positive last power backing. So within this what are going to&lt;br&gt;
happen like assumed as one LCSAJ similarly we have 10 then 21 and finish line is 17 jump line is 28 that means it is 17 so this is a 10 set and we have 17 11, 12, 13, 14, 15, 16, 17 and the jumped line 28 So likewise we are going to have start line 17 and finish line 21 they draw a table so that is about LCSAJ understanding where the use the TER test effective ratio with help of the LCSAJ is the sequences where the sequence of executable when it starts and it ends and the target line with the control flow is getting targeted, so that is how they are going to test it. And you can see some of the table tasks about started line are the same.&lt;br&gt;
Which is same here 28- 28 is same that is the last one written 0 is the same and the jump line that last program, similarly we have 17-17 the last line is 28. So that is how the key aspects will be&lt;br&gt;
tested in the LCSAJ type of white box testing. &lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;int f1(int a, int b)&lt;br&gt;
{&lt;br&gt;
  while(a!=b)&lt;br&gt;
{&lt;br&gt;
 if(a&amp;gt;b)&lt;br&gt;
  a=2*(a-b);&lt;br&gt;
 else&lt;br&gt;
  b=3*(b-a);&lt;br&gt;
}&lt;br&gt;
return a;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;LCSAJ    Sequence Start   sequence End     Jump&lt;br&gt;
1           1               3               10&lt;br&gt;
2           9               11             Exit&lt;br&gt;
3           1               5               7&lt;br&gt;
4           7               9               3&lt;br&gt;
5           3               3               9&lt;br&gt;
6           1               6               3&lt;br&gt;
7           1               6               3&lt;br&gt;
8           3               5               7&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is Manual Testing? What are the benefits and drawbacks of Manual testing? Give some Examples in support of answer?</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Thu, 21 Mar 2024 19:02:05 +0000</pubDate>
      <link>https://dev.to/jayachandran/what-is-manual-testing-what-are-the-benefits-and-drawbacks-of-manual-testing-give-some-examples-in-support-of-answer-5hk2</link>
      <guid>https://dev.to/jayachandran/what-is-manual-testing-what-are-the-benefits-and-drawbacks-of-manual-testing-give-some-examples-in-support-of-answer-5hk2</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Manual Testing is a process to test the software where testers evaluate software or application quality manually. This type of testing method is a olden method to find the bugs, issues and defects in the software application without the help of automated tools or other executing test scripts. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Manual Testers should has to find the bugs and defects using their creativity ideas and domain knowledge. But, it does require attention to detail and structured testing skills. The tester should play the role of end user where by the most of the application features to ensure correct behavior. These manual testing has to ensure that software applications meet the companies quality standard. The First step in manual testing is to analyze the requirements of software application system under test. This testing has some process given below.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding the Requirements of the software&lt;/li&gt;
&lt;li&gt;Test plan Creation&lt;/li&gt;
&lt;li&gt;Write the test cases&lt;/li&gt;
&lt;li&gt;Conduct the cases&lt;/li&gt;
&lt;li&gt;Defect Logging&lt;/li&gt;
&lt;li&gt;Defect fix&lt;/li&gt;
&lt;li&gt;Reverification&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Types of Manual testing &lt;/p&gt;

&lt;p&gt;There are different types of manual testing based on how they are performed. We will discuss four common types here:&lt;/p&gt;

&lt;p&gt;Functional Testing&lt;/p&gt;

&lt;p&gt;Functional testing is a testing type to check the functional requirements and behavior of an application. It involves testing the individual functions and features of the software to ensure that they work correctly and meet the desired specifications. The main goal of functional testing is to validate that the application functions as intended and delivers the expected results. To conduct functional testing, you require full knowledge of functional specifications and input-output data. It further includes compatibility, regression, and integration testing within itself.&lt;/p&gt;

&lt;p&gt;Black Box Testing&lt;/p&gt;

&lt;p&gt;Black box testing focuses on testing the functionality and behavior of the software without knowing its internal structure, code or implementation details. The tester treats the application as a black box and they evaluate how the software handles various inputs and produces corresponding outputs.&lt;/p&gt;

&lt;p&gt;User Acceptance Testing (UAT)&lt;/p&gt;

&lt;p&gt;UAT focuses on evaluating the software’s functionality and usability from the end-user perspective. It involves testing the software in a real-world environment with actual users to ensure that it meets their requirements, business needs and expectations.&lt;/p&gt;

&lt;p&gt;System Testing&lt;/p&gt;

&lt;p&gt;System testing verifies and validates the behavior, functionality and performance of a complete and integrated software system. It is performed after component testing and integration testing ensuring that all system components work together as per expectations and meet the specified user requirements.&lt;/p&gt;

&lt;p&gt;Benefits of Manual Testing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost Effective&lt;/li&gt;
&lt;li&gt;More Flexibility&lt;/li&gt;
&lt;li&gt;Useful for small and large projects&lt;/li&gt;
&lt;li&gt;Easy to remove and add test cases&lt;/li&gt;
&lt;li&gt;Easy for a fresher to implement&lt;/li&gt;
&lt;li&gt;No need of Programming Experts&lt;/li&gt;
&lt;li&gt;More reliable&lt;/li&gt;
&lt;li&gt;Well able to identify underlying user issues&lt;/li&gt;
&lt;li&gt;More focus on Complex problems&lt;/li&gt;
&lt;li&gt;Lower cost in short term projects&lt;/li&gt;
&lt;li&gt;Helpful in User Interface&lt;/li&gt;
&lt;li&gt;Suitable for Exploratory, Usability and Ad hoc Testing&lt;/li&gt;
&lt;li&gt;In Manual testing user/Tester, interacts more with the Application under test(AUT) then it easy to find defects and Tester can provide suggestions to the development team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drawbacks of Manual Testing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintaining Manual testers is expensive&lt;/li&gt;
&lt;li&gt;Extremely Time consuming&lt;/li&gt;
&lt;li&gt;Higher chances of Human Error&lt;/li&gt;
&lt;li&gt;Not good for Performance testing&lt;/li&gt;
&lt;li&gt;Considerable testing areas left uncovered&lt;/li&gt;
&lt;li&gt;Less Accuracy&lt;/li&gt;
&lt;li&gt;Executing same tests again and again time taking process&lt;/li&gt;
&lt;li&gt;Not suitable for Large scale projects and time bounded projects&lt;/li&gt;
&lt;li&gt;Graphical user interface object size difference and color combination etc., is not easy to find out in manual testing.&lt;/li&gt;
&lt;li&gt;Actual load and performance is not possible to cover in manual testing for large number of users.&lt;/li&gt;
&lt;li&gt;It is Platform dependent&lt;/li&gt;
&lt;li&gt;Difficult to reuse&lt;/li&gt;
&lt;li&gt;The Running Process is slow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of Manual testing&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Testing the functioning of Shopping Cart&lt;/li&gt;
&lt;li&gt;Validating the order process&lt;/li&gt;
&lt;li&gt;Validating the Login page is working properly&lt;/li&gt;
&lt;li&gt;Testing the correct data is displayed on the search results page&lt;/li&gt;
&lt;li&gt;Testing the functioning of Ticket booking page &lt;/li&gt;
&lt;li&gt;Validating the functioning of Online banking page &lt;/li&gt;
&lt;li&gt;Validating the functioning of Bill payment page&lt;/li&gt;
&lt;li&gt;Validating a Company Website and its product portfolio &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;End to end testing is the process of testing an entire software application, at the point at which you first open the software to completing all of the function with in it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is Software Testing?What we need to know about software testing?What is the relevance of Software testing?</title>
      <dc:creator>Jayachandran V</dc:creator>
      <pubDate>Sat, 09 Mar 2024 15:15:39 +0000</pubDate>
      <link>https://dev.to/jayachandran/what-is-software-testingwhat-we-need-to-know-about-software-testingwhat-is-the-relevance-of-software-testing-3h4h</link>
      <guid>https://dev.to/jayachandran/what-is-software-testingwhat-we-need-to-know-about-software-testingwhat-is-the-relevance-of-software-testing-3h4h</guid>
      <description>&lt;p&gt;Software testing is the process to identify the bugs in software or examining the behavior of the software by testing through verification and validation.&lt;/p&gt;

&lt;p&gt;Verification: This process is to ensure that are we building the product right? The software should confirm to its specification.&lt;/p&gt;

&lt;p&gt;Validation: This process is to ensure that are we building the product right? The software should do what the user really requires.&lt;/p&gt;

&lt;p&gt;The Software testing is done by two methods as Manual and Automation. The main objective of this software testing is to compare the actual results of function results with the expected functionality and to ensure the software and its applications is bug free and ready for use.&lt;/p&gt;

&lt;p&gt;The software tester should know the process to evaluate the functionality of a software application. A tester should have the intend to find the developed software meets the specified requirements or not. The tester has to identify the defects and to ensure that the product is defect free in order to provide a quality product.&lt;/p&gt;

&lt;p&gt;The Software Company approach the client or Client company approach the Software company. The Software company first appoint the project manager. The project manager appoints the Domain specialists for various departments. The Domain specialist explain the project details and the client can modify or update or delete the project. &lt;/p&gt;

&lt;p&gt;The project manager next call the technical designers. They implement the software development through SDLC (Software Development Life Cycle).&lt;br&gt;
The SDLC has development phases given below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First phase&lt;/li&gt;
&lt;li&gt;Planning phase&lt;/li&gt;
&lt;li&gt;High Level Design phase&lt;/li&gt;
&lt;li&gt;Low Level Design phase&lt;/li&gt;
&lt;li&gt;Coding Phase&lt;/li&gt;
&lt;li&gt;Unit &amp;amp; Integration phase&lt;/li&gt;
&lt;li&gt;System Testing phase&lt;/li&gt;
&lt;li&gt;UAT (User Acceptance Testing)&lt;/li&gt;
&lt;li&gt;Maintenance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To deliver a quality software product based on client requirements we need to have tested in the software development process. The benefits of the software testing is given below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cost effectiveness&lt;/li&gt;
&lt;li&gt;Customer Satisfaction&lt;/li&gt;
&lt;li&gt;User experience&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Product Quality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Software Testing process is an equally integral part of development and planning. &lt;/p&gt;

&lt;p&gt;There are Three types of testing methods:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;White-box testing&lt;/li&gt;
&lt;li&gt;Black-box testing&lt;/li&gt;
&lt;li&gt;Grey-box testing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;White-box testing:&lt;/p&gt;

&lt;p&gt;The White-box testing is based on applications internal code structure. In white-box testing, an internal perspective of the system, as well as programming skills, are used to design test cases. This testing is usually done at the unit level.&lt;/p&gt;

&lt;p&gt;Black-box testing:&lt;/p&gt;

&lt;p&gt;Black Box Testing is a software testing method in which testers evaluate the functionality of the software under test without looking at the internal code structure.&lt;/p&gt;

&lt;p&gt;Grey-box testing:&lt;/p&gt;

&lt;p&gt;Grey box is the combination of both White Box and Black Box Testing. The tester who works on this type of testing needs to have access to design documents. This helps to create better test cases in this process.&lt;/p&gt;

&lt;p&gt;The success of a project due to software testing in Software Engineering had some levels of testing.&lt;/p&gt;

&lt;p&gt;Testing Levels:&lt;/p&gt;

&lt;p&gt;1.Unit Testing&lt;br&gt;
2.Integration Testing&lt;br&gt;
3.System Testing&lt;br&gt;
4.Acceptance Testing&lt;/p&gt;

&lt;p&gt;Unit Testing:&lt;/p&gt;

&lt;p&gt;Unit Testing is done to check if the individual modules of the source code are working properly. Therefore testing each and every unit of the application separately by the developer in the developers environment. It is Component Testing or AKA Module Testing.&lt;/p&gt;

&lt;p&gt;Integration Testing:&lt;/p&gt;

&lt;p&gt;Integration Testing is the process of testing the connectivity or data transfer between a couple of unit tested modules. It is  String Testing or AKA I&amp;amp;T Testing.&lt;/p&gt;

&lt;p&gt;System Testing:&lt;/p&gt;

&lt;p&gt;Its a black box testing. Testing the full integrated application is also called as an end to end scenario testing. To ensure that the software works in all intended target systems. Verify thorough testing of every input in the application to check for desired outputs.&lt;/p&gt;

&lt;p&gt;Acceptance Testing:&lt;/p&gt;

&lt;p&gt;To obtain customer sign-off so that software can be delivered and payments received. 3 Types of Acceptance Testing are Alpha, Beta &amp;amp; Gamma Testing.&lt;/p&gt;

&lt;p&gt;In most cases, the following professionals are involved in testing a system within their respective capacities:&lt;/p&gt;

&lt;p&gt;1.Software Tester&lt;br&gt;
2.Software Developer&lt;br&gt;
3.Project Lead/Manager&lt;br&gt;
4.End User&lt;/p&gt;

&lt;p&gt;Finding bugs in a software is the task of the testers, but at the same time, they are domain experts of the particular software. Developers are only responsible for the specific component or&lt;br&gt;
area that is assigned to them but testers understand the overall workings of the software, what the dependencies are, and the impacts of one module on another module.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
