<?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: Vignesh</title>
    <description>The latest articles on DEV Community by Vignesh (@vigneshpm).</description>
    <link>https://dev.to/vigneshpm</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%2F1285673%2F37946738-d0da-42fd-a722-ce817d346c48.png</url>
      <title>DEV Community: Vignesh</title>
      <link>https://dev.to/vigneshpm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vigneshpm"/>
    <language>en</language>
    <item>
      <title>Task 18 Python Selenium</title>
      <dc:creator>Vignesh</dc:creator>
      <pubDate>Thu, 23 May 2024 15:08:30 +0000</pubDate>
      <link>https://dev.to/vigneshpm/task-18-python-selenium-5cpn</link>
      <guid>https://dev.to/vigneshpm/task-18-python-selenium-5cpn</guid>
      <description>&lt;p&gt;The Selenium architecture for Python is structured to facilitate robust and flexible web automation and testing. It involves several key components working together seamlessly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Selenium WebDriver
WebDriver is the core component that interacts directly with web browsers. It provides a programming interface to write and execute test scripts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.Language Bindings&lt;br&gt;
Selenium supports multiple programming languages, including Python. These language bindings allow you to write test scripts using Python's syntax. The &lt;code&gt;selenium&lt;/code&gt; package can be installed via pip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;selenium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.JSON Wire Protocol&lt;br&gt;
WebDriver uses the JSON Wire Protocol to communicate with browser drivers. This protocol defines a RESTful web service for performing operations like navigating to a page, clicking elements, and entering text.&lt;/p&gt;

&lt;p&gt;4.Browser Drivers&lt;br&gt;
Each browser has a specific driver that acts as a bridge between WebDriver and the browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChromeDriver for Google Chrome&lt;/li&gt;
&lt;li&gt;GeckoDriver for Mozilla Firefox&lt;/li&gt;
&lt;li&gt;IEDriverServer for Internet Explorer&lt;/li&gt;
&lt;li&gt;SafariDriver for Safari&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Browsers
Selenium can automate any browser that is compatible with the corresponding browser driver, such as Chrome, Firefox, Safari, Edge, and Internet Explorer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Detailed Flow of Selenium Python Architecture&lt;br&gt;
1.Script Execution: The Selenium script is executed, containing commands like opening a browser, navigating to a URL, and interacting with elements.&lt;br&gt;
2.Python Bindings: These bindings translate Selenium commands written in Python into HTTP requests using the JSON Wire Protocol.&lt;br&gt;
3.WebDriver: Communicates with the appropriate browser driver by sending these HTTP requests.&lt;br&gt;
4.Browser Driver: Converts JSON Wire Protocol commands into browser-specific actions and executes them.&lt;br&gt;
5.Browser Interaction: The browser performs the actions, such as loading a webpage or clicking a button.&lt;br&gt;
6.Response Handling: The browser sends responses back to the browser driver, which then sends them to the WebDriver.&lt;br&gt;
7.Result Return: WebDriver returns the results to the Selenium script through the Python bindings, allowing the script to handle the outcomes and perform further actions.&lt;/p&gt;

&lt;p&gt;Integration with Testing Frameworks and CI/CD&lt;br&gt;
Selenium is often integrated with testing frameworks like PyTest or Unittest for better test management and reporting. Additionally, integrating Selenium tests with CI/CD tools like Jenkins or GitHub Actions allows for automated test execution as part of the build process, ensuring new code changes do not introduce bugs.&lt;/p&gt;

&lt;p&gt;This architecture allows for efficient and effective web browser automation, making Selenium a powerful tool for web application testing.&lt;/p&gt;

&lt;p&gt;A Python virtual environment is a tool that helps to keep dependencies required by different projects in separate places, by creating isolated environments for each of them. This is especially significant for maintaining project dependencies and avoiding conflicts. Here are the key benefits and examples illustrating the significance of using Python virtual environments:&lt;/p&gt;

&lt;p&gt;Key Benefits&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dependency Management: Different projects might require different versions of the same library. Virtual environments help manage these dependencies without conflicts.&lt;/li&gt;
&lt;li&gt;Isolation: Each virtual environment is isolated from the others, ensuring that the libraries and dependencies in one environment do not affect another.&lt;/li&gt;
&lt;li&gt;Portability: Virtual environments can be easily recreated on different machines, ensuring consistent development environments.&lt;/li&gt;
&lt;li&gt;Clean System: Prevents global installation of packages, keeping the system Python environment clean and uncluttered.&lt;/li&gt;
&lt;li&gt;Reproducibility: Ensures that the same dependencies are used across different stages of development, testing, and production, aiding in reproducibility of code execution.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Example 1: Different Django Versions&lt;/p&gt;

&lt;p&gt;Imagine you have two projects: Project A and Project B. Project A uses Django 2.2, while Project B uses Django 3.2. Installing these different versions globally would cause conflicts. Here’s how you can handle this with virtual environments:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating Virtual Environments:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   python &lt;span class="nt"&gt;-m&lt;/span&gt; venv projectA_env
   python &lt;span class="nt"&gt;-m&lt;/span&gt; venv projectB_env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Activating Virtual Environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Windows:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; projectA_env&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
 projectB_env&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;On Unix or MacOS:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;source &lt;/span&gt;projectA_env/bin/activate
 &lt;span class="nb"&gt;source &lt;/span&gt;projectB_env/bin/activate
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Installing Dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Project A:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; pip &lt;span class="nb"&gt;install &lt;/span&gt;&lt;span class="nv"&gt;django&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;2.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Project B:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; pip &lt;span class="nb"&gt;install &lt;/span&gt;&lt;span class="nv"&gt;django&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;3.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Deactivating Virtual Environments:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   deactivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Selenium</title>
      <dc:creator>Vignesh</dc:creator>
      <pubDate>Thu, 23 May 2024 14:48:47 +0000</pubDate>
      <link>https://dev.to/vigneshpm/selenium-2cbl</link>
      <guid>https://dev.to/vigneshpm/selenium-2cbl</guid>
      <description>&lt;p&gt;Selenium is a widely-used tool for automating web browsers, essential for anyone involved in web development and testing. It allows users to write scripts that interact with web applications just as a human would, performing tasks such as clicking buttons, filling out forms, and navigating pages. This capability makes Selenium invaluable for testing web applications, ensuring they function correctly across different browsers and platforms.&lt;/p&gt;

&lt;p&gt;One of the primary reasons to use Selenium for automation is its ability to handle repetitive tasks efficiently. For example, suppose a developer needs to test a login form. Manually entering the username and password and clicking the login button every time can be time-consuming and prone to errors. With Selenium, a script can be written to automate this process, performing the task quickly and accurately each time. This automation not only saves time but also ensures consistency in testing.&lt;/p&gt;

&lt;p&gt;Selenium supports multiple programming languages, including Python, Java, C#, and JavaScript, which makes it accessible to a broad range of developers. This flexibility allows teams to write tests in the language they are most comfortable with, integrating seamlessly into their existing development workflows. Additionally, Selenium is compatible with various browsers like Chrome, Firefox, Safari, and Internet Explorer, which is crucial for cross-browser testing.&lt;/p&gt;

&lt;p&gt;For example, a quality assurance (QA) engineer can use Selenium to write a test script that opens a web application in multiple browsers, checks that all elements are displayed correctly, and verifies that all functionalities, like form submissions and navigation links, work as expected. This automated testing ensures that users will have a consistent and error-free experience regardless of the browser they use.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Manual Testing</title>
      <dc:creator>Vignesh</dc:creator>
      <pubDate>Sat, 02 Mar 2024 06:05:30 +0000</pubDate>
      <link>https://dev.to/vigneshpm/manual-testing-46kl</link>
      <guid>https://dev.to/vigneshpm/manual-testing-46kl</guid>
      <description>&lt;p&gt;Manual testing is a type of software testing where testers manually execute test cases without using any automation tools or scripts. In manual testing, testers interact directly with the software application, exploring various features and functionalities to identify defects, bugs, or areas of improvement.&lt;/p&gt;

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

&lt;p&gt;Human Judgment: Manual testing allows testers to apply their critical thinking skills, domain knowledge, and intuition to identify issues that automated tests might miss. Human judgment can often detect subtle issues that automated tests may overlook.&lt;/p&gt;

&lt;p&gt;Exploratory Testing: Manual testing is particularly effective for exploratory testing, where testers explore the application dynamically, simulating real-world user interactions to uncover unexpected behavior or defects.&lt;/p&gt;

&lt;p&gt;Cost-Effectiveness for Small Projects: For small-scale projects or projects with frequently changing requirements, setting up automation frameworks might be more time-consuming and costly than manually testing the software.&lt;/p&gt;

&lt;p&gt;Usability Testing: Manual testing is well-suited for evaluating the usability of an application, as testers can provide subjective feedback on the user interface, workflow, and overall user experience.&lt;/p&gt;

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

&lt;p&gt;Time-Consuming: Manual testing can be time-consuming, especially for repetitive test cases. Testers need to execute each test case step by step, which can slow down the testing process, especially for large and complex applications.&lt;/p&gt;

&lt;p&gt;Human Error: Manual testing is prone to human error, as testers might overlook certain scenarios or make mistakes during test execution. This can lead to incomplete test coverage or inaccurate test results.&lt;/p&gt;

&lt;p&gt;Limited Reusability: Test cases in manual testing are typically not reusable, meaning testers have to repeat the same tests for every new release or iteration, increasing testing effort and time.&lt;/p&gt;

&lt;p&gt;Scalability Issues: Manual testing becomes increasingly challenging to scale as the size and complexity of the application grow. It may not be feasible to manually test all aspects of large-scale enterprise applications within a reasonable timeframe.&lt;/p&gt;

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

&lt;p&gt;User Interface Testing: Manual testing is commonly used to evaluate the visual layout, responsiveness, and usability of the user interface across different devices and screen sizes.&lt;/p&gt;

&lt;p&gt;User Acceptance Testing (UAT): Manual testing is often employed during the UAT phase, where end-users validate whether the application meets their requirements and expectations before it goes live.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Functional Testing &amp; Non Functional Testing</title>
      <dc:creator>Vignesh</dc:creator>
      <pubDate>Sun, 25 Feb 2024 06:43:21 +0000</pubDate>
      <link>https://dev.to/vigneshpm/functional-testing-non-functional-testing-a15</link>
      <guid>https://dev.to/vigneshpm/functional-testing-non-functional-testing-a15</guid>
      <description>&lt;p&gt;System setting is a level of testing done only by testers and it comes under black box testing. This testing is done at 2 different levels&lt;br&gt;
*&lt;em&gt;A. Functional testing&lt;br&gt;
B. Non Functional testing. *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A. Functional testing is nothing but testing the functional values and is done by 3 major types &lt;br&gt;
**1. Smoke testing &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sanity testing &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regression testing**&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smoke testing is a build verification test and it tests the high priority test cases to ensure whether a basic field is working correctly. &lt;br&gt;
&lt;strong&gt;For example:&lt;/strong&gt; &lt;em&gt;If we are testing a sign-in page, with 2 columns username and password, in smoke testing we test whether we can enter the values into username section and password section. If that fails, then there will be no need to execute other test cases and this high priority fails.&lt;/em&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sanity testing is done when the website or the product is enhanced. Sanity testing tests the enhanced part alone. &lt;br&gt;
&lt;strong&gt;For example:&lt;/strong&gt; _In the sign-in page, if there is an enhancement of the sign-up button, sanity testing tests the sign-up button test cases alone. _&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regression testing is also done when the website or product is enhanced but this tests the existing functionalities. &lt;br&gt;
&lt;strong&gt;For example:&lt;/strong&gt; &lt;em&gt;When the sign-up button is enhanced in the sign-in page, regression testing executes the high priority test cases of username and  password, takes it into the regression suite and tests whether those work fine.&lt;/em&gt; &lt;br&gt;
Since we keep on testing old high priority test cases when enhancement is done, automation testing comes into place to avoid time waste and errors. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;B. Non functional testing is done to test the non functional values like&lt;br&gt;
**1. Performance testing&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Usability testing&lt;/li&gt;
&lt;li&gt;Compatibility testing&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accessibility testing**&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance testing is done to check the load and stress of the product. A load is the maximum amount set and stress is testing beyond the maximum point. The end point is the software or product should be working fine. &lt;br&gt;
&lt;strong&gt;For example -&lt;/strong&gt; _On a Great Indian festival at Amazon, lakhs of users visit and buy from the site. If the load is set at 2 lakh customers per second, it should work fine at this load and work beyond this load, that is for 2.2lakhs customers should also be handled by the website without getting crashed. _&lt;br&gt;
This testing is done by a performance engineer using the Jmeter tool. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usability testing is to make sure the GUI or Graphical User Interface works fine in the product. This testing makes sure the look and feel is satisfied and user friendly. &lt;br&gt;
&lt;strong&gt;For example -&lt;/strong&gt; _The login button is usually set at the top right corner in many of the websites. Changing that will cause confusion and hindrance to the user. So this testing makes sure all these are rectified. _&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility testing is to make sure the product works across all platforms, no matter of devices or OS.&lt;br&gt;
&lt;strong&gt;For example -&lt;/strong&gt; _The Amazon website should work fine on Windows laptops as well as Mac desktops. _&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accessibility testing is testing based on a client's requirement that even differently disabled people should also use the product. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>guvi</category>
    </item>
    <item>
      <title>Types of Testing</title>
      <dc:creator>Vignesh</dc:creator>
      <pubDate>Tue, 20 Feb 2024 07:57:38 +0000</pubDate>
      <link>https://dev.to/vigneshpm/types-of-testing-26g3</link>
      <guid>https://dev.to/vigneshpm/types-of-testing-26g3</guid>
      <description>&lt;p&gt;Boundary value analysis as the name stands is testing between the values on a set boundary. One value lesser and One value higher will be taken for testing and testing takes place to make sure the desired values work bug free. For example if we take values from 0 to 10, for boundary value analysis we pick from -1 to 11. When it comes to decision table testing, it is checking all the possibilities in True or False method. If we pick 2 fields, there will be 4 tables in decision table testing. For example, if we choose Sign in page and take the 2 fields, user name and password, the conditions for testing can be correct user name &amp;amp; correct password, correct username &amp;amp; wrong password, wrong username &amp;amp; correct password and wrong username &amp;amp; wrong password. We will will get 4 columns in the combination of T&amp;amp;T, T&amp;amp;F, F&amp;amp;T and F&amp;amp;F. Use case testing is checking the possibilities of finding bugs. For a sign in page, there will be numerous possibilities and combinations to test the product.   &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Software Testing</title>
      <dc:creator>Vignesh</dc:creator>
      <pubDate>Tue, 20 Feb 2024 05:54:13 +0000</pubDate>
      <link>https://dev.to/vigneshpm/software-testing-3ljo</link>
      <guid>https://dev.to/vigneshpm/software-testing-3ljo</guid>
      <description>&lt;p&gt;Software Testing is a process of testing a product or software either manually or by automation to identify the bugs and provide a bug free software to the users or client. We need to know the tools and have the responsibility to place ourselves in end product user's shoes while testing. The main relevance of software testing is making the product bug free and not to compromise on the performance of the product or software. &lt;/p&gt;

</description>
      <category>guvi</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
