<?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: sharath chandran</title>
    <description>The latest articles on DEV Community by sharath chandran (@sharath_chandran_2679d70d).</description>
    <link>https://dev.to/sharath_chandran_2679d70d</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%2F2942781%2Fcf1fd272-0ac4-4eb5-bb84-a4ada4eaff3d.jpg</url>
      <title>DEV Community: sharath chandran</title>
      <link>https://dev.to/sharath_chandran_2679d70d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sharath_chandran_2679d70d"/>
    <language>en</language>
    <item>
      <title>Python Selenium Architecture</title>
      <dc:creator>sharath chandran</dc:creator>
      <pubDate>Thu, 05 Jun 2025 06:43:50 +0000</pubDate>
      <link>https://dev.to/sharath_chandran_2679d70d/python-selenium-architecture-22ib</link>
      <guid>https://dev.to/sharath_chandran_2679d70d/python-selenium-architecture-22ib</guid>
      <description>&lt;p&gt;Python Selenium is a widely used framework for automating web browsers, primarily for testing and web scraping. Its architecture is modular and follows a client-server model, enabling seamless interaction between Python code and multiple browsers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Components of Python Selenium Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Selenium Client Library (Python Bindings)&lt;/li&gt;
&lt;li&gt;WebDriver&lt;/li&gt;
&lt;li&gt;Browser Drivers&lt;/li&gt;
&lt;li&gt;Browsers&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;&lt;strong&gt;Flow of Python Selenium Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Script Creation&lt;/strong&gt; - Developers write Python scripts using Selenium’s API to define test scenarios or automation tasks.&lt;br&gt;
&lt;strong&gt;2. Command Transmission&lt;/strong&gt; - The script uses the Selenium Client Library to send commands to the WebDriver.&lt;br&gt;
&lt;strong&gt;3. Protocol Handling&lt;/strong&gt; - The WebDriver serializes these commands (using the W3C WebDriver Protocol in Selenium 4) and sends them to the browser driver over HTTP.&lt;br&gt;
&lt;strong&gt;4. Driver Processing&lt;/strong&gt; - The browser driver receives the commands, translates them into browser-native actions, and instructs the browser accordingly.&lt;br&gt;
&lt;strong&gt;5. Browser Execution&lt;/strong&gt; - The browser performs the requested actions (e.g., loading a page, clicking a button, extracting data).&lt;br&gt;
&lt;strong&gt;6. Response Handling&lt;/strong&gt; - Results or responses (success, failure, or data) are sent back from the browser driver to the WebDriver, and then to the Python script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture Diagram&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoe1o0yeqh4mczsht4fa.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoe1o0yeqh4mczsht4fa.PNG" alt="Image description" width="651" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of Python Selenium Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Cross-Browser Compatibility:&lt;/strong&gt; Supports automation across multiple browsers without separate frameworks.&lt;br&gt;
&lt;strong&gt;2. Language Flexibility:&lt;/strong&gt; While Python is popular, Selenium supports Java, C#, JavaScript, and more.&lt;br&gt;
&lt;strong&gt;3. Efficient Automation:&lt;/strong&gt; Direct interaction with browser elements reduces manual effort and increases reliability.&lt;br&gt;
&lt;strong&gt;4. Support for Headless Browsing:&lt;/strong&gt; Enables automation without a GUI, useful for CI/CD and resource-constrained environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Significance of Python Virtual Environments&lt;/strong&gt;&lt;br&gt;
Python virtual environments are essential tools for managing dependencies and maintaining project isolation in Python development. Their main significance lies in the following:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Isolation of Dependencies:&lt;/strong&gt; Each virtual environment contains its own Python interpreter and set of installed packages. This prevents conflicts between different projects that may require different versions of the same package or even different Python versions.&lt;br&gt;
   &lt;strong&gt;2. Reproducibility:&lt;/strong&gt; By isolating dependencies, virtual environments ensure that your code runs the same way on any machine, making it easier for collaborators to reproduce your development environment.&lt;br&gt;
   &lt;strong&gt;3. System Integrity:&lt;/strong&gt; Using virtual environments protects your system-wide Python installation from being cluttered or broken by incompatible packages, as all installations are local to the environment.&lt;br&gt;
   &lt;strong&gt;4. Easy Experimentation:&lt;/strong&gt; You can experiment with new packages or versions without risking other projects or your system Python. If something goes wrong, simply delete the virtual environment and start fresh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Create and Use a Virtual Environment?&lt;/strong&gt;&lt;br&gt;
Start a new Python project called &lt;strong&gt;myproject&lt;/strong&gt;. Here’s how you would use a virtual environment:&lt;br&gt;
&lt;strong&gt;1. Create a new project directory:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir myproject
cd myproject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Create a virtual environment inside the project:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 -m venv .venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command creates a &lt;code&gt;.venv&lt;/code&gt; directory containing a fresh Python interpreter.&lt;br&gt;
&lt;strong&gt;3. Activate the virtual environment:&lt;/strong&gt;&lt;br&gt;
   For Windows -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.venv\Scripts\activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For macOS / Unix -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Install packages:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The package is now installed only in &lt;code&gt;.venv&lt;/code&gt;, not globally.&lt;br&gt;
&lt;strong&gt;5. Check installed packages:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip freeze
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will list all packages installed in the virtual environment, which you can save to a &lt;code&gt;requirements.txt&lt;/code&gt; file for reproducibility&lt;br&gt;
&lt;strong&gt;6. To Deactivate the environment:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This returns you to your system Python, leaving the virtual environment untouched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Example:&lt;/strong&gt;&lt;br&gt;
Imagine you have two projects:&lt;br&gt;
   Project A requires &lt;code&gt;Django==3.2&lt;/code&gt;&lt;br&gt;
   Project B requires &lt;code&gt;Django==4.0&lt;/code&gt;&lt;br&gt;
Without virtual environments, installing one version would overwrite the other, causing one of the projects to break. With virtual environments, each project can have its own Django version without conflict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Python virtual environments are crucial for modern development, enabling clean, isolated, and reproducible project setups.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Future of Manual testing in the age of AI &amp; Manual testing techniques</title>
      <dc:creator>sharath chandran</dc:creator>
      <pubDate>Fri, 14 Mar 2025 12:40:55 +0000</pubDate>
      <link>https://dev.to/sharath_chandran_2679d70d/future-of-manual-testing-in-the-age-of-ai-17pl</link>
      <guid>https://dev.to/sharath_chandran_2679d70d/future-of-manual-testing-in-the-age-of-ai-17pl</guid>
      <description>&lt;h3&gt;
  
  
  The Future of Manual Testing in the Age of AI
&lt;/h3&gt;

&lt;p&gt;As AI transforms industries, its impact on software testing is undeniable. While AI-driven automation tools are becoming more sophisticated, they are not replacing manual testing. Instead, the future lies in a hybrid approach where AI and manual testers work together to enhance software quality and efficiency.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;AI-Powered Automation&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;AI has streamlined tasks like regression testing, data handling, and test execution, allowing for faster and more efficient testing. AI tools can autonomously generate test scripts, adapt to changes, and identify defects. However, AI still struggles with human-centric tasks, such as evaluating user experience (UX) and usability, areas where manual testers play a crucial role.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;The Evolving Role of Testers&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Manual testers will shift from repetitive tasks to more complex activities like exploratory testing. This requires creativity and intuition to uncover hidden issues that AI might miss. Testers will also design intricate test scenarios that are hard for AI to anticipate. As AI becomes a larger part of testing, manual testers will need to learn new skills, including using AI tools and automated frameworks.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Optimizing Testing with AI&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;AI not only automates but also optimizes testing by identifying areas likely to contain defects. By analyzing historical data, AI can streamline the test process, allowing manual testers to focus on the most critical aspects of the application. This combination of AI and human expertise increases testing efficiency and effectiveness.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. &lt;strong&gt;Human Expertise in UX and Exploratory Testing&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Human testers will remain essential for tasks requiring emotional intelligence and real-world context, like exploratory testing and UX evaluation. These areas rely on creativity, intuition, and user insight—qualities AI cannot replicate.&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;The future of software testing is a collaboration between AI and manual testers. AI will handle repetitive tasks, while testers will focus on complex areas requiring human judgment. This hybrid approach will ensure better quality and more efficient testing in the age of AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Boundary Value Analysis&lt;/strong&gt;&lt;br&gt;
This is a process of testing to be performed in and around the boundary values. It involves 4 valid inputs and 2 invalid inputs.&lt;br&gt;
Example:&lt;br&gt;
Consider an age field between 11 to 20,&lt;br&gt;
In this field the valid inputs are 11,12,19 and 20. And invalid inputs are 10 and 21 which are neared to the boundary conditions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Manual Testing Techniques
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Black Box Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;White Box Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exploratory Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regression Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smoke Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sanity Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ad-Hoc Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usability Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibility Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boundary Value Analysis (BVA)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Equivalence Partitioning&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error Guessing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceptance Testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alpha and Beta Testing&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

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