<?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: Roshan Rumaiza</title>
    <description>The latest articles on DEV Community by Roshan Rumaiza (@roshan_rumaiza).</description>
    <link>https://dev.to/roshan_rumaiza</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%2F3152513%2F593962e7-a350-44ae-8532-fb56fd20f402.png</url>
      <title>DEV Community: Roshan Rumaiza</title>
      <link>https://dev.to/roshan_rumaiza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roshan_rumaiza"/>
    <language>en</language>
    <item>
      <title>Python Selenium Architecture</title>
      <dc:creator>Roshan Rumaiza</dc:creator>
      <pubDate>Thu, 09 Oct 2025 06:10:42 +0000</pubDate>
      <link>https://dev.to/roshan_rumaiza/python-selenium-architecture-26h7</link>
      <guid>https://dev.to/roshan_rumaiza/python-selenium-architecture-26h7</guid>
      <description>&lt;h2&gt;
  
  
  1.Python Selenium Architecture:
&lt;/h2&gt;

&lt;p&gt;Selenium is a powerful automation tool used for automating  web browsers.&lt;br&gt;
Selenium supports multiple browser such as Chrome, Edge, Safari, Firefox and also multiple programming language such as Java, Ruby, C#, Python and Java script.&lt;br&gt;
As Python is versatile and has simple syntax, when selenium is used  with Python it becomes a powerful and readable automation tool that supports complex workflow and makes it an excellent choice for writing  and maintaining test scripts. &lt;/p&gt;

&lt;p&gt;The architecture of Selenium with Python is based on client-server design.&lt;br&gt;
Here different layers work together to perform browser automation. &lt;br&gt;
The architecture consists of four layers namely Selenium client library, JSON wire protocol, browser driver and browser.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selenium Client library(Python binding):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It consists of languages like Java, Ruby, C# ,Python and so on.&lt;br&gt;
Here the automation testers will write the test scripts using Python.&lt;br&gt;
The selenium python binding is a set of libraries that exposes selenium commands to Python. These commands include opening a browser, clicking elements, filling out forms, and handling alerts. Once the test cases is triggered entire selenium code is converted to JSON format.&lt;/p&gt;

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

&lt;p&gt;from selenium import webdriver&lt;br&gt;
driver = webdriver.Chrome()&lt;br&gt;
driver.get("&lt;a href="https://www.google.com/%22" rel="noopener noreferrer"&gt;https://www.google.com/"&lt;/a&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON Wire protocol:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JSON stands for Java Script Object Notation. JSON is responsible for transferring the data from server to the client.&lt;br&gt;
Selenium Webdriver is a crucial components that enables interaction between python code and browser. Selenium webdriver translates the Python commands to browser native action. JSON is primarily responsible for transferring the data between HTTP servers. Generated JSON is made available to the browser driver through HTTP protocol.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser drivers:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each browser has a specific browser driver.This browser driver will interact directly with the browser and execute the commands by interpreting JSON which they received from the selenium webdriver. &lt;br&gt;
Browser driver as soon as they receive any instruction they run them on the browser. Then the responses is given back in the form of HTTP response.&lt;/p&gt;

&lt;p&gt;Chrome- Chromedriver&lt;br&gt;
Edge-msedgedriver&lt;br&gt;
Firefox-Geckodriver&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the final layer where action is performed. Here the end user action is performed. Clicking, typing, scrolling and page transitions.&lt;br&gt;
Once the action is performed the response is sent back to the python script for validation.&lt;/p&gt;

&lt;p&gt;Request-Response workflows:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    driver = webdriver.Chrome(service=service_obj)
    driver.get('https://www.google.co.in/')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When the above code is executed the entire code is converted into URL with the help of JSON protocol. The Chrome browser will get this URL through HTTP request. The browser driver will utilizes HTTP server to get request from HTTP.As soon as the chrome driver get the URL it passes the request to its respective browser through HTTP for executing the action.&lt;br&gt;
After the execution the response will be sent to browser driver through HTTP. The browser driver will send the response to selenium webdriver via JSON wire protocol. Selenium webdriver will return the response to the python script for validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  2.Python Virtual Environment:
&lt;/h2&gt;

&lt;p&gt;Python virtual environment is important for managing the project dependencies and ensuring code reproducibility.&lt;br&gt;
Python is a versatile and most widely used programming language known for its simplicity, readability and has rich ecosystem of library.&lt;br&gt;
However managing the project across different system and teams become challenging due to dependency conflicts between projects.&lt;br&gt;
Python virtual environment provide an isolated environment for python projects avoiding conflicts between different project dependencies.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Dependency Isolation:&lt;br&gt;
Different projects may require different versions of same library, virtual environment isolates these dependencies, allowing installing library for one project won't effect another.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reproducibility:&lt;br&gt;
By specifying the exact versions needed in requirement.txt one can create same environment on different machines, ensuring code runs on every machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cleanliness:&lt;br&gt;
Virtual environment helps to keep the global python installation clean, by preventing clutter of project specific packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collaboration:&lt;br&gt;
It ease collaboration ensuring everyone working on the project has same environment ,avoiding "it works on my machine" issue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security:&lt;br&gt;
By isolating projects, it reduces the risk of unauthorized access to the system increasing project stability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Experimentation:&lt;br&gt;
You can experiment with different libraries and version within the virtual environment without effecting main project. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;If you have an old project built in Python 3.6 while also working on a new one using Python 3.11. Virtual environments let you install and manage both versions without conflict.&lt;/p&gt;

&lt;p&gt;**Python Virtual Environment setup:&lt;/p&gt;

&lt;p&gt;Python has the built-in venv module for creating virtual environments.&lt;/p&gt;

&lt;p&gt;To create a virtual environment on the computer, open the command prompt, and navigate to the folder where you want to create your project, then type this command:&lt;/p&gt;

&lt;p&gt;python -m venv myfirstvenv&lt;/p&gt;

</description>
      <category>python</category>
      <category>selenium</category>
      <category>automation</category>
      <category>architecture</category>
    </item>
    <item>
      <title>SELENIUM</title>
      <dc:creator>Roshan Rumaiza</dc:creator>
      <pubDate>Mon, 14 Jul 2025 07:36:34 +0000</pubDate>
      <link>https://dev.to/roshan_rumaiza/selenium-4nii</link>
      <guid>https://dev.to/roshan_rumaiza/selenium-4nii</guid>
      <description>&lt;p&gt;1.Selenium:Selenium is a powerful automation tool widely used for web application testing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is open source testing framework.&lt;/li&gt;
&lt;li&gt;It automates web browser through programs. &lt;/li&gt;
&lt;li&gt;Selenium supports various programming language such as Java, Python, C++          etc.&lt;/li&gt;
&lt;li&gt;Selenium is not only single tool but it is a set of tool used to automate the we-based applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;COMPONENTS OF SELENIUM&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Selenium IDE(Integrated development environment):&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;It is open source tool that is used in conducting automated web testing and browser automation.&lt;/li&gt;
&lt;li&gt;It is a simplest framework in the selenium suite.&lt;/li&gt;
&lt;li&gt;It allows to record and playback the scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Record :It allows user to record step with action of interaction with web applications.&lt;/li&gt;
&lt;li&gt;Playback: Repeating performing the recorded steps.&lt;/li&gt;
&lt;li&gt;Easy debugging: Failures can be found easily from recorded steps.&lt;/li&gt;
&lt;li&gt;Creates automated test cases: Recorded steps can be saved as test cases.&lt;/li&gt;
&lt;li&gt;Cross browser compatibility: Recorded steps can run in any browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Selenium RC(Remote control):&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;It allows to write the automated web pages tests in various languages such as Python, Java, C#,C++ etc.&lt;/li&gt;
&lt;li&gt;The key feature of selenium RC is that interacts with the we browser using server.&lt;/li&gt;
&lt;li&gt;It relay on client-server architecture, whenever we want to execute the test cases we need to start the server manually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improved API:As the server act as intermediator between the code and the web browser it provides improved quality of interaction.&lt;/li&gt;
&lt;li&gt;Better performance: As API fetches the information, test case execution will be fast.&lt;/li&gt;
&lt;li&gt;Supports modern web technologies: Supports modern web technologies like HTML5,CSS3.
-Able to executes the test cases in parallel and remote execution using selenium Grid.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Selenium Web-driver:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Selenium web driver is a web based automation testing framework designed to ease the automation activities.&lt;/li&gt;
&lt;li&gt;It can test webpages interaction on various browsers and various operating system.&lt;/li&gt;
&lt;li&gt;It has additional verification steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It communicates directly with browser and controls it.&lt;/li&gt;
&lt;li&gt;Rich set of APIs were designed.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Selenium Grid:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;It is a server that allows tests to use web browser instances in various machine.&lt;/li&gt;
&lt;li&gt;Multiple tests can run simultaneously against different machine against various browsers and operating system. &lt;/li&gt;
&lt;li&gt;Here one server acts as hub, tests contact hub to gain access to browser instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parallel execution of tests cases across different machine and manages different browser version.&lt;/li&gt;
&lt;li&gt;Saves lot of time in completing testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Advantages of Selenium:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It automates the test cases.&lt;/li&gt;
&lt;li&gt;Supports various programming languages like Python, Java, C#,C++ etc. &lt;/li&gt;
&lt;li&gt;Supports various operating system like Linux, Mac, Windows etc.&lt;/li&gt;
&lt;li&gt;Supports cross browser automation.&lt;/li&gt;
&lt;li&gt;Open source tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Disadvantages of Selenium:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does not support mobile application/desktop application. &lt;/li&gt;
&lt;li&gt;Does not support OTP verification directly.&lt;/li&gt;
&lt;li&gt;Does not support CAPTCHA verification directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Why do we use selenium for Automation:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Selenium is used for automation as it allows parallel test execution, reducing the overall testing time.&lt;/li&gt;
&lt;li&gt;Selenium supports various browsers like Firefox, Chrome, safari, Edge, Internet Explorer etc.&lt;/li&gt;
&lt;li&gt;Selenium allows user to write the scripts in various languages like Python, Java, C#, C++ etc.&lt;/li&gt;
&lt;li&gt;It is a free and open source tool.&lt;/li&gt;
&lt;li&gt;Selenium allows testers and developers to make changes to the code, reducing duplication and improving maintainability.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;What is the relevance of Selenium in automation testing using Python:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Python is easy to learn and understand , hence writing selenium scripts using Python helps to understand the scripts easily.&lt;/li&gt;
&lt;li&gt;With Selenium python we can write robust test scripts to automate the testing of web application, ensuring their functionalities across different browser and platform.&lt;/li&gt;
&lt;li&gt;Using Selenium with Python provides many possibilities to do efficient and effective web application testing.&lt;/li&gt;
&lt;li&gt;Selenium supports python, which ensures it is stable, well documented and updated.&lt;/li&gt;
&lt;li&gt;Python helps in rapid script development ,leading to faster creation and upkeep of test automate suits.&lt;/li&gt;
&lt;li&gt;Developers and testers can run the tests in parallel on multiple combination, resulting in delivering the quality product.&lt;/li&gt;
&lt;li&gt;selenium provides excellent integration with Python.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Manual Testing</title>
      <dc:creator>Roshan Rumaiza</dc:creator>
      <pubDate>Mon, 12 May 2025 12:35:16 +0000</pubDate>
      <link>https://dev.to/roshan_rumaiza/manual-testing-134h</link>
      <guid>https://dev.to/roshan_rumaiza/manual-testing-134h</guid>
      <description>&lt;p&gt;SOFTWARE TESTING&lt;/p&gt;

&lt;p&gt;Software testing is a process to test a software to make sure it is bug free and the software or application meets the user expectations.&lt;/p&gt;

&lt;p&gt;MANUAL TESTING&lt;/p&gt;

&lt;p&gt;Testing a software by humans by executing the test cases manually without using any automated tools.&lt;/p&gt;

&lt;p&gt;TESTING TECHNIQUES&lt;/p&gt;

&lt;p&gt;WHITE BOX TESTING&lt;/p&gt;

&lt;p&gt;It focuses on internal working of the software, such as internal code, logic and design. Only those has the knowledge of the code can preform white box testing. It is done by developers.&lt;/p&gt;

&lt;p&gt;GREY BOX TESTING&lt;/p&gt;

&lt;p&gt;This testing is performed by the testers who has the partial knowledge on the coding of the application.&lt;br&gt;
It is a hybrid approach.&lt;/p&gt;

&lt;p&gt;BLACK BOX TESTING&lt;/p&gt;

&lt;p&gt;It is a kind of testing where the testers has no knowledge on the internal structure, logic or the code of the software.&lt;br&gt;
It relay on providing the input and checking on the output.&lt;br&gt;
Black box testing is performed by testers, QA team or end users/clients.&lt;/p&gt;

&lt;p&gt;EXAMPLE FOR WHITE BOX TESTING&lt;/p&gt;

&lt;p&gt;a) UNIT TESTING :Unit testing focuses on the testing the smallest module of the software.&lt;br&gt;
Small module such as function, class or method.&lt;br&gt;
It test each and every statement in the code.&lt;/p&gt;

&lt;p&gt;b)REGRESSION TESTING Is performed to validate that the new changes or fix doesn't have any impact on already existing functionalities.&lt;/p&gt;

&lt;p&gt;C)PATH TESTING : It is a type of white box testing that test all the possible execution path in the program to ensure that each functions behave as expected.&lt;/p&gt;

&lt;p&gt;d)SECURITY TESTING: Security testing focuses on finding any vulnerabilities in the software and testing for the security issues in the software.&lt;/p&gt;

&lt;p&gt;e)LOOP TESTING : It checks for all the loops in the program that operate correctly and efficiently.&lt;/p&gt;

&lt;p&gt;f) DATA FLOW TESTING : It checks for the flow of the variables across the program. That the variables are correctly declared, initialized and used in the right place.&lt;/p&gt;

&lt;p&gt;g)STATEMENT COVERAGE: It focuses on testing all the statements in the program. Each line of the code is tested.&lt;/p&gt;

&lt;p&gt;h) BRANCH COVERAGE :It aims in testing conditional branches in the program. Tests both possible outcomes true/false for each condition statement in the program.&lt;/p&gt;

&lt;p&gt;i)CONDITION COVERAGRE :It aims in testing all the individual condition in the program.&lt;/p&gt;

&lt;p&gt;j) MULTIPLE CONDITION COVERAGE : It focuses on testing all the possible combinations of all possible outcome of the condition.&lt;/p&gt;

&lt;p&gt;EXAMPLE FOR BLACK BOX TESTING&lt;/p&gt;

&lt;p&gt;a)FUNCTIONAL TESTING: This black box testing focuses on testing the functional requirement of the system. This is performed by testers.&lt;/p&gt;

&lt;p&gt;b)NON FUNCTIONAL TESTING : This black box testing doesn't test any specific function of the system, instead it test the non-functional requirements of the software such as performance, scalability ,usability and compatibility.&lt;/p&gt;

&lt;p&gt;c)REGRESSION TESTING: This testing validates that the new changes doesn't have any impact on already existing functionalities.&lt;/p&gt;

&lt;p&gt;BLACK BOX TESTING TECHNIQUES&lt;/p&gt;

&lt;p&gt;a)EQUIVALENCE PARTITIONS: Here the inputs will be divided into partitions. The test case is designed for each partitions and the results of the result of the test case is expected to be same for all the inputs in the partitions.&lt;br&gt;
Here the number of test cases will be reduced ensuring the coverage of all possible inputs.&lt;/p&gt;

&lt;p&gt;b)BOUNDARY VALUE ANALYSIS : This focuses on testing the input ranges at its boundaries or edges in equivalence partition.&lt;br&gt;
it is also called s]edge testing.&lt;br&gt;
It focuses on finding defect at the edges of the input ranges.&lt;/p&gt;

&lt;p&gt;Example : If the system accepts the age range between 18 and 60, then boundary value analysis focuses on testing the below inputs.&lt;br&gt;
Enter age 17 (Invalid)  (Below minimum)&lt;br&gt;
Enter age 20 (Valid)    (Normal value)&lt;br&gt;
Enter age 61 (Invalid)  (Above MAX)&lt;/p&gt;

&lt;p&gt;c)DECISION TABLE MAKING :Representing the complex business rules and logic in a table which includes combination of inputs and its expected outcome.&lt;br&gt;
For each combination of inputs the table defines the expected outcome and the test case is written for each row.&lt;/p&gt;

&lt;p&gt;Example: A login to the system should have correct username and password. &lt;/p&gt;

&lt;p&gt;Username        Password    Login Result&lt;/p&gt;

&lt;p&gt;Correct          correct         Success&lt;/p&gt;

&lt;p&gt;Correct          Incorrect       Failure&lt;/p&gt;

&lt;p&gt;Incorrect        Correct         Failure&lt;/p&gt;

&lt;p&gt;Incorrect        Incorrect       Failure&lt;/p&gt;

&lt;p&gt;d)STATE TRANSITION TESTING :Testing system behaviour as it moves from one state to another based on inputs.&lt;br&gt;
Test case is designed based on the state changes.&lt;/p&gt;

&lt;p&gt;e)USE CASE TESTING : Based on the use cases ,it tests the system based on user perspective, by covering user interactions and behaviour.&lt;/p&gt;

&lt;p&gt;FUTURE OF MANUAL TESTING IN THE AGE OF AI&lt;/p&gt;

&lt;p&gt;Manual tester will not be replaced by AI instead they will work collaboratively with AI which helps in delivering efficient and quality software.&lt;br&gt;
AI will reduce the manual work freeing manual testers so that they can focus on more crucial issues where human work is required.&lt;br&gt;
Software testing is evolving with AI.&lt;br&gt;
AI powered tools will reduce the repetitive tasks for manual testers.&lt;br&gt;
Manual testers will play a important role in exploratory testing ensuring in identifying the defect that AI might have missed.&lt;br&gt;
Manual testers will be responsible for usability testing, to ensure that the software meets the user expectations focuses on user interactions and user experience that the AI powered tools may not be able to achieve.&lt;/p&gt;

&lt;p&gt;AI ROLE IN SUPPORTING MANUAL TESTING&lt;/p&gt;

&lt;p&gt;a)Automating repetitive tasks : AI can automate the test cases, test data generation and test scripts reducing testers effort and time.&lt;/p&gt;

&lt;p&gt;b)Analysing test results : AI can quickly analyse the test results to identify the defects helping testers to prioritize and work on critical ones.&lt;/p&gt;

&lt;p&gt;c)Predicting defects : By the historical data, AI can predict where the new errors or bug pops up helping out in effective testing.&lt;/p&gt;

&lt;p&gt;d)Generating Automate scripts :From manual test case AI can generate automated test scripts reducing time in automation testing.&lt;/p&gt;

&lt;p&gt;BENEFITS OF AI IN SOFTWARE TESTING:&lt;/p&gt;

&lt;p&gt;a)Increased efficiency :AI along with manual testing leads to delivering increased efficient and productive software.&lt;/p&gt;

&lt;p&gt;b)Improved accuracy :AI can identify the defects that the manual testers might have missed leading to deliver accurate product.&lt;/p&gt;

&lt;p&gt;c)Better coverage : AI can generate number test cases resulting in effective testing and better coverage of the appliaction.&lt;/p&gt;

&lt;p&gt;d)Faster time to the market : By automating the testing process, product can be delivered faster to the clients.&lt;/p&gt;

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