<?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: Suresh Ayyanna</title>
    <description>The latest articles on DEV Community by Suresh Ayyanna (@sureshayyanna).</description>
    <link>https://dev.to/sureshayyanna</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%2F783390%2F88e99345-a2ba-4d7a-bb09-1a8e151a0707.png</url>
      <title>DEV Community: Suresh Ayyanna</title>
      <link>https://dev.to/sureshayyanna</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sureshayyanna"/>
    <language>en</language>
    <item>
      <title>🚀 AI Agents in Testing: The Future of Quality Assurance? 🤖✅</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Fri, 11 Apr 2025 02:58:35 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/ai-agents-in-testing-the-future-of-quality-assurance-3cdd</link>
      <guid>https://dev.to/sureshayyanna/ai-agents-in-testing-the-future-of-quality-assurance-3cdd</guid>
      <description>&lt;p&gt;The role of QA is evolving faster than ever, and AI-powered agents are leading the transformation! Gone are the days of manual, repetitive test case execution—today, AI-driven testing tools are bringing speed, accuracy, and intelligence to the QA process.&lt;/p&gt;

&lt;p&gt;💡 How AI Agents are Revolutionizing Testing:&lt;br&gt;
🔹 Self-Healing Automation – AI adapts test scripts to UI changes, reducing maintenance efforts.&lt;br&gt;
🔹 Intelligent Test Case Generation – AI-driven tools analyze requirements and generate optimized test scenarios.&lt;br&gt;
🔹 Autonomous Bug Detection – AI can identify patterns, anomalies, and predict potential defects.&lt;br&gt;
🔹 Enhanced API &amp;amp; Performance Testing – AI optimizes test data, coverage, and response time analysis.&lt;br&gt;
🔹 ChatGPT &amp;amp; NLP in Testing – AI helps testers craft efficient test cases, analyze logs, and debug faster.&lt;/p&gt;

&lt;p&gt;🎯 As AI-driven tools like Copilot, Mabl, TestGPT, and ChatGPT-based testing assistants gain traction, QA professionals must adapt by learning how to leverage these smart agents effectively. Instead of fearing AI, let's collaborate with it to build faster, more efficient, and higher-quality software!&lt;/p&gt;

&lt;p&gt;💬 What are your thoughts on AI agents in testing? Have you started using AI-powered tools in your QA workflow? Let’s discuss! 🚀&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #SoftwareTesting #QA #Automation #AIinTesting #ChatGPT #Agile #TestAutomation #SoftwareQuality
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Creative Approaches to Testing Desktop Applications</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Mon, 02 Dec 2024 02:32:03 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/creative-approaches-to-testing-desktop-applications-48n9</link>
      <guid>https://dev.to/sureshayyanna/creative-approaches-to-testing-desktop-applications-48n9</guid>
      <description>&lt;p&gt;In today’s world, where web and mobile apps dominate the tech landscape, desktop applications often take a back seat. But let’s face it—many industries, especially healthcare, finance, and engineering, still rely heavily on robust desktop applications. Testing them isn’t just about finding bugs; it’s about ensuring seamless functionality, performance, and user satisfaction.&lt;/p&gt;

&lt;p&gt;Here’s how you can unleash your creativity and make desktop application testing a masterpiece.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Know Your Audience: The End-User Perspective&lt;/strong&gt;&lt;br&gt;
Before diving into test cases, think like an end user. Who uses your desktop application? A healthcare provider rushing through patient records? A financial analyst crunching numbers?&lt;/p&gt;

&lt;p&gt;Empathy-Driven Testing: Imagine the user’s workflow. Test the application in real-world scenarios, not just in controlled environments.&lt;br&gt;
Accessibility Check: Desktop apps often cater to a broader audience, so ensure accessibility features like keyboard shortcuts, screen readers, and high-contrast modes work flawlessly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Mind Mapping for Test Design&lt;/strong&gt;&lt;br&gt;
Gone are the days of boring spreadsheets for test cases. Instead, use mind maps to visualize workflows, dependencies, and edge cases.&lt;/p&gt;

&lt;p&gt;Tools like XMind or MindMeister can help create intuitive maps for testing functionalities, integrations, and error paths.&lt;br&gt;
Share your mind maps with developers—it can bridge communication gaps and align efforts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Automate with Precision&lt;/strong&gt;&lt;br&gt;
Automation is not just a buzzword; it’s a necessity in desktop application testing. But creativity lies in how you implement it.&lt;/p&gt;

&lt;p&gt;Leverage Tools: Use tools like Micro Focus UFT One, Selenium (for Electron apps), or TestComplete for UI automation.&lt;br&gt;
Hybrid Frameworks: Design modular automation frameworks combining data-driven and keyword-driven approaches for flexibility.&lt;br&gt;
Pro Tip: Automate repetitive workflows, but don’t ignore exploratory testing for finding unique bugs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Performance Testing: Stress It, Don’t Break It&lt;/strong&gt;&lt;br&gt;
Desktop apps often juggle multiple resources like CPU, memory, and network. Performance testing isn’t just about numbers; it’s about user experience.&lt;/p&gt;

&lt;p&gt;Scenario-Based Testing: Simulate scenarios like large data imports, running multiple instances, or low-memory conditions.&lt;br&gt;
Use tools like JMeter or even Task Manager to monitor working sets, committed memory, and JVM heap during stress tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Security Testing: Think Like a Hacker&lt;/strong&gt;&lt;br&gt;
Desktop apps aren’t immune to vulnerabilities. A creative tester also dons the hat of a hacker to find potential security loopholes.&lt;/p&gt;

&lt;p&gt;Test for data encryption, authentication flows, and local file access vulnerabilities.&lt;br&gt;
Use tools like OWASP ZAP to probe for weaknesses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Gamify Exploratory Testing&lt;/strong&gt;&lt;br&gt;
Who says testing has to be tedious? Turn exploratory testing into a game.&lt;/p&gt;

&lt;p&gt;Create challenges: “Find 5 bugs in 30 minutes” or “Break this feature with unconventional inputs.”&lt;br&gt;
Use tools like Session-Based Test Management (SBTM) to track and document exploratory sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Integrate AI for Smarter Testing&lt;/strong&gt;&lt;br&gt;
AI is the rising star in testing, and desktop apps can benefit too.&lt;/p&gt;

&lt;p&gt;Use AI-driven test case generation tools like ChatGPT to discover edge cases you might not think of.&lt;br&gt;
Implement AI-powered visual regression tools to detect UI changes across builds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Keep the Feedback Loop Tight&lt;/strong&gt;&lt;br&gt;
Testing doesn’t stop when the application is released. Set up a feedback mechanism to collect real-world usage data.&lt;/p&gt;

&lt;p&gt;Implement crash reporting tools like Sentry.&lt;br&gt;
Analyze logs and user feedback for new bugs or usability improvements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Celebrate the Human Touch&lt;/strong&gt;&lt;br&gt;
Remember, no matter how advanced tools and techniques get, the creativity and intuition of a human tester are irreplaceable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pair testing with developers.&lt;/strong&gt;&lt;br&gt;
Organize bug bash sessions across teams—it’s fun and productive!&lt;br&gt;
Conclusion: Testing Beyond the Checklist&lt;br&gt;
Testing desktop applications is an art that blends technical expertise with creative problem-solving. It’s about thinking beyond checklists, imagining the impossible, and delivering an application that delights users.&lt;/p&gt;

&lt;p&gt;So, the next time you sit down to test a desktop app, think creatively, test rigorously, and always keep the user in mind. After all, great testing makes great software!&lt;/p&gt;

&lt;p&gt;💡 What’s your approach to testing desktop applications? Share your thoughts and let’s start a conversation about elevating the craft of testing&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🚀 Karate Robot Desktop Automation: Installation Guide</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Sat, 09 Nov 2024 16:18:45 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/karate-robot-desktop-automation-installation-guide-5fno</link>
      <guid>https://dev.to/sureshayyanna/karate-robot-desktop-automation-installation-guide-5fno</guid>
      <description>&lt;p&gt;Karate Robot extends the popular Karate Framework to enable desktop automation for Windows, macOS, and Linux. This guide will walk you through installing and configuring Karate Robot, ensuring you have everything you need to get started.&lt;/p&gt;

&lt;p&gt;🛠️ System Requirements&lt;br&gt;
Before we dive into the installation, make sure your system meets the following requirements:&lt;/p&gt;

&lt;p&gt;Java Development Kit (JDK): Version 11 or higher&lt;br&gt;
Apache Maven: Version 3.6 or higher&lt;br&gt;
Karate: Version 1.5.0 or later&lt;br&gt;
Operating System: Windows, macOS, or Linux&lt;br&gt;
📥 Step 1: Install Java JDK&lt;br&gt;
Karate requires Java to run. If you don't have Java installed, follow these steps:&lt;/p&gt;

&lt;p&gt;🔗 Download Java JDK&lt;br&gt;
Go to the Oracle JDK download page or AdoptOpenJDK.&lt;br&gt;
Download the JDK version compatible with your operating system (JDK 11 or higher).&lt;br&gt;
Run the installer and follow the prompts.&lt;br&gt;
🛠️ Set up Java Environment Variables (Windows Only)&lt;br&gt;
Open System Properties → Advanced → Environment Variables.&lt;br&gt;
Add a new system variable:&lt;br&gt;
Variable Name: JAVA_HOME&lt;br&gt;
Variable Value: Path to your Java installation (e.g., C:\Program Files\Java\jdk-11.0.16).&lt;br&gt;
Edit the Path variable and add: %JAVA_HOME%\bin.&lt;br&gt;
Open a terminal and verify the installation:&lt;br&gt;
bash&lt;br&gt;
Copy code&lt;br&gt;
java -version&lt;br&gt;
📦 Step 2: Install Apache Maven&lt;br&gt;
Karate uses Maven for build automation. If Maven is not installed, follow these steps:&lt;/p&gt;

&lt;p&gt;🔗 Download Apache Maven&lt;br&gt;
Go to the Apache Maven download page.&lt;br&gt;
Download the binary .zip or .tar.gz file for your OS.&lt;br&gt;
Extract the files to a directory of your choice (e.g., C:\apache-maven-3.9.5).&lt;br&gt;
🛠️ Set up Maven Environment Variables (Windows Only)&lt;br&gt;
Open System Properties → Advanced → Environment Variables.&lt;br&gt;
Add a new system variable:&lt;br&gt;
Variable Name: MAVEN_HOME&lt;br&gt;
Variable Value: Path to your Maven installation (e.g., C:\apache-maven-3.9.5).&lt;br&gt;
Edit the Path variable and add: %MAVEN_HOME%\bin.&lt;br&gt;
Verify the installation:&lt;br&gt;
bash&lt;br&gt;
Copy code&lt;br&gt;
mvn -version&lt;br&gt;
📁 Step 3: Create a Karate Project&lt;br&gt;
Now that Java and Maven are installed, let's create a Karate project.&lt;/p&gt;

&lt;p&gt;🛠️ Generate a Karate Project using Maven&lt;br&gt;
Open a terminal and run the following Maven command:&lt;br&gt;
bash&lt;br&gt;
Copy code&lt;br&gt;
mvn archetype:generate -DgroupId=com.example.karate -DartifactId=karate-robot-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false&lt;br&gt;
Navigate to the project directory:&lt;br&gt;
bash&lt;br&gt;
Copy code&lt;br&gt;
cd karate-robot-demo&lt;br&gt;
📄 Add Karate Dependencies to pom.xml&lt;br&gt;
Open the pom.xml file in your favorite editor and add the following dependencies:&lt;/p&gt;

&lt;p&gt;xml&lt;br&gt;
Copy code&lt;br&gt;
&lt;br&gt;
    &amp;lt;!-- Karate Core for API and Web Testing --&amp;gt;&lt;br&gt;
    &lt;br&gt;
        com.intuit.karate&lt;br&gt;
        karate-core&lt;br&gt;
        1.5.1&lt;br&gt;
    &lt;br&gt;
    &amp;lt;!-- Karate Robot for Desktop Automation --&amp;gt;&lt;br&gt;
    &lt;br&gt;
        com.intuit.karate&lt;br&gt;
        karate-robot&lt;br&gt;
        1.5.1&lt;br&gt;
    &lt;br&gt;
&lt;br&gt;
🔄 Update Maven Project&lt;br&gt;
Save the pom.xml file.&lt;br&gt;
Run the following command to update the dependencies:&lt;br&gt;
bash&lt;br&gt;
Copy code&lt;br&gt;
mvn clean install&lt;br&gt;
🔧 Step 4: Setting Up Karate Robot&lt;br&gt;
Karate Robot requires some additional configurations to work effectively with desktop applications.&lt;/p&gt;

&lt;p&gt;📄 Create a karate-config.js file&lt;br&gt;
In your src/test/java folder, create a karate-config.js file:&lt;/p&gt;

&lt;p&gt;javascript&lt;br&gt;
Copy code&lt;br&gt;
function fn() {&lt;br&gt;
  var config = {&lt;br&gt;
    baseUrl: '&lt;a href="https://example.com" rel="noopener noreferrer"&gt;https://example.com&lt;/a&gt;', // Placeholder URL&lt;br&gt;
    robot: karate.robot() // Initialize Karate Robot&lt;br&gt;
  };&lt;br&gt;
  return config;&lt;br&gt;
}&lt;br&gt;
📄 Create a Karate Feature File for Desktop Automation&lt;br&gt;
Create a folder named features in src/test/java.&lt;br&gt;
Create a new file named DesktopAutomation.feature:&lt;br&gt;
gherkin&lt;br&gt;
Copy code&lt;br&gt;
Feature: Desktop Automation using Karate Robot&lt;/p&gt;

&lt;p&gt;Scenario: Launch Notepad and Type Text&lt;br&gt;
    * def robot = karate.robot()&lt;br&gt;
    * robot.winRun('notepad.exe')&lt;br&gt;
    * robot.waitForWindow('Untitled - Notepad')&lt;br&gt;
    * robot.type('Hello from Karate Robot!')&lt;br&gt;
    * robot.screenshot()&lt;br&gt;
    * robot.key('ALT+F4')&lt;br&gt;
    * robot.key('ENTER')&lt;br&gt;
▶️ Step 5: Running Your Karate Robot Test&lt;br&gt;
To run your test:&lt;/p&gt;

&lt;p&gt;Open a terminal in your project directory.&lt;/p&gt;

&lt;p&gt;Run the following Maven command:&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
Copy code&lt;br&gt;
mvn test -Dkarate.options="classpath:features/DesktopAutomation.feature"&lt;br&gt;
✅ Expected Output&lt;br&gt;
You should see output in the console indicating that the Notepad application was launched, text was typed, and a screenshot was captured.&lt;/p&gt;

&lt;p&gt;📚 Additional Tips&lt;br&gt;
Enable Windows Developer Mode: For better control over desktop automation, enable developer mode on Windows:&lt;br&gt;
Go to Settings → Update &amp;amp; Security → For Developers → Developer Mode.&lt;br&gt;
Run as Administrator: If you encounter permission issues, try running your terminal or IDE as an administrator.&lt;br&gt;
Capture Screenshots for Debugging: Use robot.screenshot() frequently to capture the state of your desktop during test runs.&lt;br&gt;
🎉 Conclusion&lt;br&gt;
Congratulations! You've successfully set up Karate Robot for desktop automation. This powerful tool allows you to automate not just web and API interactions but also native desktop applications, expanding your testing capabilities.&lt;/p&gt;

&lt;p&gt;Feel free to explore more advanced features like image recognition, mouse drag-and-drop, and file manipulations. Happy testing! 🚀&lt;/p&gt;

&lt;p&gt;📚 Further Reading&lt;br&gt;
Karate GitHub Repository&lt;br&gt;
Karate Robot Documentation&lt;/p&gt;

</description>
      <category>karate</category>
      <category>iamsureshayyanna</category>
      <category>desktopuiautomation</category>
      <category>automation</category>
    </item>
    <item>
      <title>Karate Desktop Automation with Karate Robot: A Comprehensive Guide</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Sat, 09 Nov 2024 14:49:01 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/karate-desktop-automation-with-karate-robot-a-comprehensive-guide-4io7</link>
      <guid>https://dev.to/sureshayyanna/karate-desktop-automation-with-karate-robot-a-comprehensive-guide-4io7</guid>
      <description>&lt;p&gt;Are you looking to expand your automation testing toolkit beyond web and API testing? Karate, a popular open-source framework known for its simplicity in API testing, now offers desktop automation capabilities through the Karate Robot feature. In this blog, I'll guide you through everything you need to know to get started with Karate Desktop Automation using the Karate Robot.&lt;/p&gt;

&lt;p&gt;🚀 What is Karate?&lt;br&gt;
Karate is a powerful open-source test automation framework that simplifies testing for APIs, web UIs, and now, even desktop applications. With its easy-to-understand syntax, Karate has become a favorite among testers for API and web automation. The new Karate Robot extends Karate’s capabilities to desktop automation, allowing you to interact with native applications on Windows.&lt;/p&gt;

&lt;p&gt;🖥️ What is Karate Robot?&lt;br&gt;
Karate Robot is an extension of the Karate framework designed for desktop automation. It allows you to automate interactions with desktop applications by simulating mouse clicks, keyboard inputs, and other interactions. This is particularly useful for testing Windows-based applications that don't have a web interface.&lt;/p&gt;

&lt;p&gt;🌟 Key Features of Karate Robot&lt;br&gt;
Cross-Platform Support: Works on Windows, macOS, and Linux.&lt;br&gt;
Keyboard and Mouse Automation: Automate key presses, mouse clicks, and drag-and-drop actions.&lt;br&gt;
Screenshot and Image Recognition: Capture screenshots, find images on the screen, and interact with them.&lt;br&gt;
Seamless Integration with Karate Scripts: Leverage existing Karate features like data-driven testing and assertions.&lt;br&gt;
🎯 Use Cases for Karate Desktop Automation&lt;br&gt;
Automating Legacy Applications that don't have an API or web interface.&lt;br&gt;
Automating Desktop-based Reports or batch processes that need user interaction.&lt;br&gt;
Automating Testing for EHR/EMR systems in healthcare or financial desktop applications.&lt;br&gt;
🛠️ Getting Started with Karate Robot&lt;br&gt;
Let's dive into a step-by-step guide on how to set up and use Karate Robot for desktop automation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;📥 Installation
Ensure you have the latest version of Karate installed. You can download it here.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add the Karate dependency to your pom.xml if you are using Maven:&lt;/p&gt;

&lt;p&gt;xml&lt;br&gt;
Copy code&lt;br&gt;
&lt;br&gt;
    com.intuit.karate&lt;br&gt;
    karate-core&lt;br&gt;
    1.5.1&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;⚙️ Configuration
Create a new Karate project or use an existing one. Your project structure should look like this:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;arduino&lt;br&gt;
Copy code&lt;br&gt;
src/test/java&lt;br&gt;
└───karate-config.js&lt;br&gt;
└───features&lt;br&gt;
    └───DesktopAutomation.feature&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;✍️ Writing Your First Karate Robot Script
Create a new .feature file for your desktop automation script:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;DesktopAutomation.feature&lt;/p&gt;

&lt;p&gt;gherkin&lt;br&gt;
Copy code&lt;br&gt;
Feature: Desktop Automation using Karate Robot&lt;/p&gt;

&lt;p&gt;Scenario: Launch Notepad and Type Text&lt;br&gt;
    * def robot = karate.robot()&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Launch Notepad (Windows-specific)
* robot.winRun('notepad.exe')
* robot.waitForWindow('Untitled - Notepad')

# Type some text
* robot.type('Hello, Karate Robot!')

# Take a screenshot
* def screenshot = robot.screenshot()
* karate.log('Screenshot captured:', screenshot)

# Close Notepad
* robot.key('ALT+F4')
* robot.key('ENTER')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;🖱️ Understanding the Code
robot.winRun('notepad.exe') - Launches the Notepad application.
robot.type('Hello, Karate Robot!') - Types the specified text into the active window.
robot.screenshot() - Captures a screenshot of the current screen.
robot.key('ALT+F4') - Simulates pressing the ALT+F4 keyboard shortcut to close the window.&lt;/li&gt;
&lt;li&gt;▶️ Running the Script
To run your Karate Robot script, execute the following command in your terminal:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;bash&lt;br&gt;
Copy code&lt;br&gt;
mvn test -Dkarate.options="--tags &lt;a class="mentioned-user" href="https://dev.to/desktop"&gt;@desktop&lt;/a&gt;"&lt;br&gt;
📸 Advanced Karate Robot Features&lt;br&gt;
Image Recognition and Mouse Actions&lt;br&gt;
If you need to click on specific UI elements, you can use image recognition:&lt;/p&gt;

&lt;p&gt;gherkin&lt;br&gt;
Copy code&lt;br&gt;
Scenario: Click on an Image Button&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;def robot = karate.robot()&lt;/li&gt;
&lt;li&gt;robot.winRun('calc.exe')&lt;/li&gt;
&lt;li&gt;robot.waitForWindow('Calculator')&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;# Locate an image on the screen and click it&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;robot.click('src/test/resources/images/equals.png')&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;# Close Calculator&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;robot.key('ALT+F4')
Drag and Drop
Automate drag-and-drop functionality:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;gherkin&lt;br&gt;
Copy code&lt;br&gt;
Scenario: Drag and Drop Example&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;def robot = karate.robot()&lt;/li&gt;
&lt;li&gt;robot.mouseMove(100, 200)&lt;/li&gt;
&lt;li&gt;robot.mouseDown()&lt;/li&gt;
&lt;li&gt;robot.mouseMove(300, 400)&lt;/li&gt;
&lt;li&gt;robot.mouseUp()
🛡️ Best Practices for Karate Desktop Automation
Use Explicit Waits: Always use waitForWindow() or other wait functions to ensure the application is ready.
Keep Screenshots for Debugging: Use the screenshot() function to capture images for troubleshooting.
Modularize Scripts: Break down your scripts into reusable functions for better maintainability.
🤖 Real-World Use Case: Automating EHR System Tests
I recently used Karate Robot to automate testing for an EHR desktop application. The goal was to validate the functionality of patient registration, prescription entry, and billing processes. Using Karate Robot, I was able to automate these workflows by simulating user interactions, resulting in a 50% reduction in manual testing time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🎉 Conclusion&lt;br&gt;
Karate Robot is a game-changer for testers looking to expand their automation skills beyond web and API testing. Its simple yet powerful capabilities make it an excellent choice for automating desktop applications, especially legacy systems that lack modern interfaces.&lt;/p&gt;

&lt;p&gt;Feel free to share your thoughts or questions in the comments below. Happy testing with Karate Robot! 🚀&lt;/p&gt;

&lt;p&gt;📚 Additional Resources&lt;br&gt;
Official Karate GitHub Repository&lt;br&gt;
Karate Robot Documentation&lt;/p&gt;

</description>
      <category>karate</category>
      <category>desktopuiautomation</category>
      <category>iamsureshayyanna</category>
      <category>automation</category>
    </item>
    <item>
      <title>Top 25 SQL Interview Question for SDET</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Tue, 11 Jun 2024 02:20:28 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/top-25-sql-interview-question-for-sdet-2jlk</link>
      <guid>https://dev.to/sureshayyanna/top-25-sql-interview-question-for-sdet-2jlk</guid>
      <description>&lt;p&gt;Here are some SQL interview questions that focus on queries and subqueries, along with their answers. These questions are designed to test your SQL skills, including writing and understanding queries and subqueries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;SQL Interview Questions and Answers&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Question 1: Basic SELECT Query&lt;br&gt;
Q: Write a SQL query to find the names of all employees who work in the 'Sales' department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT name&lt;br&gt;
FROM employees&lt;br&gt;
WHERE department = 'Sales';&lt;br&gt;
Question 2: Aggregate Function&lt;br&gt;
Q: Write a SQL query to find the average salary of employees in each department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT department, AVG(salary) AS average_salary&lt;br&gt;
FROM employees&lt;br&gt;
GROUP BY department;&lt;br&gt;
Question 3: JOIN Query&lt;br&gt;
Q: Write a SQL query to get the order details along with the customer name for all orders.&lt;br&gt;
Query:&lt;br&gt;
SELECT orders.order_id, orders.order_date, customers.name AS customer_name&lt;br&gt;
FROM orders&lt;br&gt;
INNER JOIN customers ON orders.customer_id = customers.customer_id;&lt;br&gt;
Question 4: Subquery&lt;br&gt;
Q: Write a SQL query to find the employees who earn more than the average salary.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT name, salary&lt;br&gt;
FROM employees&lt;br&gt;
WHERE salary &amp;gt; (SELECT AVG(salary) FROM employees);&lt;br&gt;
Question 5: Nested Subquery&lt;br&gt;
Q: Write a SQL query to find the departments that have more than 5 employees.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT department&lt;br&gt;
FROM employees&lt;br&gt;
GROUP BY department&lt;br&gt;
HAVING COUNT(*) &amp;gt; 5;&lt;br&gt;
Question 6: Correlated Subquery&lt;br&gt;
Q: Write a SQL query to find employees whose salary is higher than the average salary of their respective department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT e1.name, e1.salary, e1.department&lt;br&gt;
FROM employees e1&lt;br&gt;
WHERE e1.salary &amp;gt; (SELECT AVG(e2.salary)&lt;br&gt;
                   FROM employees e2&lt;br&gt;
                   WHERE e2.department = e1.department);&lt;br&gt;
Question 7: Self JOIN&lt;br&gt;
Q: Write a SQL query to find all pairs of employees who work in the same department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT e1.name AS employee1, e2.name AS employee2, e1.department&lt;br&gt;
FROM employees e1&lt;br&gt;
INNER JOIN employees e2 ON e1.department = e2.department&lt;br&gt;
WHERE e1.employee_id &amp;lt;&amp;gt; e2.employee_id;&lt;br&gt;
Question 8: Using EXISTS&lt;br&gt;
Q: Write a SQL query to find all customers who have placed at least one order.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT name&lt;br&gt;
FROM customers c&lt;br&gt;
WHERE EXISTS (SELECT 1&lt;br&gt;
              FROM orders o&lt;br&gt;
              WHERE o.customer_id = c.customer_id);&lt;br&gt;
Question 9: Using IN&lt;br&gt;
Q: Write a SQL query to find the names of employees who work in 'HR' or 'Finance' departments using the IN clause.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT name&lt;br&gt;
FROM employees&lt;br&gt;
WHERE department IN ('HR', 'Finance');&lt;br&gt;
Question 10: UNION&lt;br&gt;
Q: Write a SQL query to combine the results of two queries: one that selects all employees in the 'Marketing' department and another that selects all employees in the 'IT' department.&lt;br&gt;
Query:&lt;br&gt;
SELECT name&lt;br&gt;
FROM employees&lt;br&gt;
WHERE department = 'Marketing'&lt;br&gt;
UNION&lt;br&gt;
SELECT name&lt;br&gt;
FROM employees&lt;br&gt;
WHERE department = 'IT';&lt;br&gt;
Question 11: CASE Statement&lt;br&gt;
Q: Write a SQL query to list employee names along with their salary status ('High' if salary &amp;gt; 50000, 'Low' otherwise).&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT name, &lt;br&gt;
       CASE &lt;br&gt;
           WHEN salary &amp;gt; 50000 THEN 'High'&lt;br&gt;
           ELSE 'Low'&lt;br&gt;
       END AS salary_status&lt;br&gt;
FROM employees;&lt;br&gt;
Question 12: GROUP BY with HAVING&lt;br&gt;
Q: Write a SQL query to find departments with an average salary greater than 60000.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT department, AVG(salary) AS average_salary&lt;br&gt;
FROM employees&lt;br&gt;
GROUP BY department&lt;br&gt;
HAVING AVG(salary) &amp;gt; 60000;&lt;br&gt;
Question 13: Window Function&lt;br&gt;
Q: Write a SQL query to find the top 3 highest salaries in each department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT name, department, salary&lt;br&gt;
FROM (&lt;br&gt;
    SELECT name, department, salary, &lt;br&gt;
           RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank&lt;br&gt;
    FROM employees&lt;br&gt;
) ranked&lt;br&gt;
WHERE rank &amp;lt;= 3;&lt;br&gt;
Question 14: CTE (Common Table Expression)&lt;br&gt;
Q: Write a SQL query using CTE to find the total number of employees in each department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
WITH dept_count AS (&lt;br&gt;
    SELECT department, COUNT(*) AS num_employees&lt;br&gt;
    FROM employees&lt;br&gt;
    GROUP BY department&lt;br&gt;
)&lt;br&gt;
SELECT *&lt;br&gt;
FROM dept_count;&lt;br&gt;
Question 15: DELETE with Subquery&lt;br&gt;
Q: Write a SQL query to delete all employees who have not placed any orders.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
DELETE FROM employees&lt;br&gt;
WHERE employee_id NOT IN (&lt;br&gt;
    SELECT DISTINCT employee_id&lt;br&gt;
    FROM orders&lt;br&gt;
);&lt;br&gt;
Question 16: UPDATE with JOIN&lt;br&gt;
Q: Write a SQL query to update the salaries of employees by 10% in the 'Sales' department.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
UPDATE employees&lt;br&gt;
SET salary = salary * 1.10&lt;br&gt;
WHERE department = 'Sales';&lt;br&gt;
Question 17: INSERT with SELECT&lt;br&gt;
Q: Write a SQL query to insert into a new table high_salary_employees all employees who earn more than 70000.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
INSERT INTO high_salary_employees (employee_id, name, salary, department)&lt;br&gt;
SELECT employee_id, name, salary, department&lt;br&gt;
FROM employees&lt;br&gt;
WHERE salary &amp;gt; 70000;&lt;br&gt;
Question 18: Complex JOIN with Subquery&lt;br&gt;
Q: Write a SQL query to find the names of employees who have placed orders totaling more than 10000.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT e.name&lt;br&gt;
FROM employees e&lt;br&gt;
JOIN (SELECT employee_id, SUM(amount) AS total_amount&lt;br&gt;
      FROM orders&lt;br&gt;
      GROUP BY employee_id&lt;br&gt;
      HAVING SUM(amount) &amp;gt; 10000) o&lt;br&gt;
ON e.employee_id = o.employee_id;&lt;br&gt;
Question 19: LEFT JOIN with COALESCE&lt;br&gt;
Q: Write a SQL query to list all customers and their order amounts, displaying 0 for customers with no orders.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT c.name, COALESCE(SUM(o.amount), 0) AS total_amount&lt;br&gt;
FROM customers c&lt;br&gt;
LEFT JOIN orders o ON c.customer_id = o.customer_id&lt;br&gt;
GROUP BY c.name;&lt;br&gt;
Question 20: FULL OUTER JOIN&lt;br&gt;
Q: Write a SQL query to find all customers and their orders, including customers with no orders and orders with no customers.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT c.name AS customer_name, o.order_id, o.order_date&lt;br&gt;
FROM customers c&lt;br&gt;
FULL OUTER JOIN orders o ON c.customer_id = o.customer_id;&lt;br&gt;
Question 21: PIVOT (MySQL does not support PIVOT directly, so using conditional aggregation)&lt;br&gt;
Q: Write a SQL query to pivot the employee count by department and gender.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT department,&lt;br&gt;
       SUM(CASE WHEN gender = 'Male' THEN 1 ELSE 0 END) AS male_count,&lt;br&gt;
       SUM(CASE WHEN gender = 'Female' THEN 1 ELSE 0 END) AS female_count&lt;br&gt;
FROM employees&lt;br&gt;
GROUP BY department;&lt;br&gt;
Question 22: UNPIVOT (Simulated using UNION ALL)&lt;br&gt;
Q: Write a SQL query to unpivot department employee counts into a single column of department and gender.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT department, 'Male' AS gender, COUNT(*) AS count&lt;br&gt;
FROM employees&lt;br&gt;
WHERE gender = 'Male'&lt;br&gt;
GROUP BY department&lt;/p&gt;

&lt;p&gt;UNION ALL&lt;/p&gt;

&lt;p&gt;SELECT department, 'Female' AS gender, COUNT(*) AS count&lt;br&gt;
FROM employees&lt;br&gt;
WHERE gender = 'Female'&lt;br&gt;
GROUP BY department;&lt;br&gt;
Question 23: JSON Data Handling&lt;br&gt;
Q: Write a SQL query to extract a value from a JSON column in a table.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT id, json_extract(data, '$.name') AS name&lt;br&gt;
FROM json_table;&lt;br&gt;
Question 24: XML Data Handling&lt;br&gt;
Q: Write a SQL query to extract a value from an XML column in a table.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
SELECT id, extractvalue(xml_data, '/employee/name') AS name&lt;br&gt;
FROM xml_table;&lt;br&gt;
Question 25: Recursive Query&lt;br&gt;
Q: Write a recursive SQL query to get a hierarchy of employees and their managers.&lt;/p&gt;

&lt;p&gt;Query:&lt;br&gt;
WITH RECURSIVE EmployeeHierarchy AS (&lt;br&gt;
    SELECT employee_id, name, manager_id&lt;br&gt;
    FROM employees&lt;br&gt;
    WHERE manager_id IS NULL&lt;br&gt;
    UNION ALL&lt;br&gt;
    SELECT e.employee_id, e.name, e.manager_id&lt;br&gt;
    FROM employees e&lt;br&gt;
    JOIN EmployeeHierarchy eh ON e.manager_id = eh.employee_id&lt;br&gt;
)&lt;br&gt;
SELECT * FROM EmployeeHierarchy;&lt;br&gt;
These questions and answers should provide a comprehensive understanding of how to handle various SQL scenarios, including queries and subqueries. These are often used in interviews to gauge your proficiency in SQL.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Learn SQL in 7 days - (SDET)</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Tue, 11 Jun 2024 02:14:29 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/learn-sql-in-7-days-sdet-5hc8</link>
      <guid>https://dev.to/sureshayyanna/learn-sql-in-7-days-sdet-5hc8</guid>
      <description>&lt;p&gt;Here's a condensed 7-day plan that covers all the essential SQL topics for QA, along with top 25 interview questions for an SDET (Software Development Engineer in Test) lead role.&lt;/p&gt;

&lt;p&gt;7-Day Learning Plan for SQL for QA&lt;/p&gt;

&lt;p&gt;Day 1. Introduction to SQL, Basic SQL Queries, Aggregate Functions&lt;br&gt;
Day 2. SQL Joins, Advanced SQL Functions, Subqueries and Nested Queries&lt;br&gt;
Day 3. Data Manipulation (INSERT, UPDATE, DELETE), Data Definition Language (DDL)&lt;br&gt;
Day 4. Indexes and Performance Tuning, SQL Views and Stored Procedures&lt;br&gt;
Day 5. Transactions and Concurrency Control, Error Handling and Exception Handling in SQL&lt;br&gt;
Day 6. SQL Security and Permissions, Practical Case Study 1, Practical Case Study 2&lt;br&gt;
Day 7. Review and Practice, Mock Interviews, Advanced Topics (NoSQL vs SQL, JSON, XML), Data Warehousing, ETL, Big Data&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Detailed Explanation&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
Day 1: Introduction to SQL, Basic SQL Queries, Aggregate Functions&lt;br&gt;
Topics:&lt;br&gt;
Basic concepts of databases and SQL syntax&lt;br&gt;
Installation of SQL tools (e.g., MySQL, PostgreSQL)&lt;br&gt;
SELECT, FROM, WHERE&lt;br&gt;
Aggregate functions: COUNT, SUM, AVG, MIN, MAX&lt;br&gt;
Activities: Install SQL software, write basic queries, and practice aggregation.&lt;/p&gt;

&lt;p&gt;Day 2: SQL Joins, Advanced SQL Functions, Subqueries and Nested Queries&lt;br&gt;
Topics:&lt;br&gt;
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN&lt;br&gt;
GROUP BY, HAVING, ORDER BY&lt;br&gt;
Subqueries and nested queries&lt;br&gt;
Activities: Write complex queries combining data from multiple tables, practice grouping, sorting, and filtering data.&lt;/p&gt;

&lt;p&gt;Day 3: Data Manipulation (INSERT, UPDATE, DELETE), Data Definition Language (DDL)&lt;br&gt;
Topics:&lt;br&gt;
INSERT, UPDATE, DELETE statements&lt;br&gt;
DDL commands: CREATE, ALTER, DROP&lt;br&gt;
Activities: Modify database records, create and alter database structures.&lt;/p&gt;

&lt;p&gt;Day 4: Indexes and Performance Tuning, SQL Views and Stored Procedures&lt;br&gt;
Topics:&lt;br&gt;
Creating indexes, performance tuning techniques&lt;br&gt;
Creating and using views, writing stored procedures&lt;br&gt;
Activities: Optimize queries, develop reusable SQL code with views and stored procedures.&lt;/p&gt;

&lt;p&gt;Day 5: Transactions and Concurrency Control, Error Handling and Exception Handling in SQL&lt;br&gt;
Topics:&lt;br&gt;
ACID properties, handling transactions, managing concurrency&lt;br&gt;
Error handling mechanisms, TRY...CATCH blocks&lt;br&gt;
Activities: Implement transactions, handle concurrency issues, and error handling in SQL scripts.&lt;/p&gt;

&lt;p&gt;Day 6: SQL Security and Permissions, Practical Case Study 1, Practical Case Study 2&lt;br&gt;
Topics:&lt;br&gt;
Managing user permissions, ensuring database security&lt;br&gt;
Applying learned concepts to real-world projects&lt;br&gt;
Activities: Grant and revoke permissions, and develop projects involving database design and query development.&lt;/p&gt;

&lt;p&gt;Day 7: Review and Practice, Mock Interviews, Advanced Topics (NoSQL vs SQL, JSON, XML), Data Warehousing, ETL, Big Data&lt;br&gt;
Topics: Review key concepts, mock interviews&lt;br&gt;
NoSQL vs SQL, handling JSON and XML in SQL&lt;br&gt;
Data warehousing concepts, ETL processes, SQL for big data&lt;br&gt;
Activities: Comprehensive revision, practice interview questions, explore advanced topics, and big data handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Top 25 Interview Questions for SDET Lead Role&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Explain the role of an SDET in an Agile team.&lt;/li&gt;
&lt;li&gt;How do you ensure the quality of test automation scripts?&lt;/li&gt;
&lt;li&gt;Describe your experience with continuous integration and continuous deployment (CI/CD) pipelines.&lt;/li&gt;
&lt;li&gt;What strategies do you use to handle flaky tests?&lt;/li&gt;
&lt;li&gt;Explain how you prioritize test cases in a limited time frame.&lt;/li&gt;
&lt;li&gt;Describe a challenging bug you found and how you resolved it.&lt;/li&gt;
&lt;li&gt;What is the importance of code reviews in test automation?&lt;/li&gt;
&lt;li&gt;How do you measure the success of your test automation?&lt;/li&gt;
&lt;li&gt;Explain the concept of test-driven development (TDD) and how you've applied it.&lt;/li&gt;
&lt;li&gt;What tools and frameworks have you used for test automation?&lt;/li&gt;
&lt;li&gt;How do you approach performance testing?&lt;/li&gt;
&lt;li&gt;Describe your experience with API testing and tools used.&lt;/li&gt;
&lt;li&gt;What is the difference between functional and non-functional testing?&lt;/li&gt;
&lt;li&gt;How do you manage and maintain test data?&lt;/li&gt;
&lt;li&gt;What is your experience with version control systems like Git?&lt;/li&gt;
&lt;li&gt;How do you ensure security in your test automation scripts?&lt;/li&gt;
&lt;li&gt;Describe a time when you had to mentor a junior SDET.&lt;/li&gt;
&lt;li&gt;How do you handle changes in requirements during the testing phase?&lt;/li&gt;
&lt;li&gt;Explain your approach to testing microservices.&lt;/li&gt;
&lt;li&gt;What is your experience with mobile testing?&lt;/li&gt;
&lt;li&gt;How do you integrate testing with DevOps practices?&lt;/li&gt;
&lt;li&gt;Describe your approach to testing in a cloud environment.&lt;/li&gt;
&lt;li&gt;What are the key components of a good test plan?&lt;/li&gt;
&lt;li&gt;How do you stay updated with the latest testing tools and technologies?&lt;/li&gt;
&lt;li&gt;Explain how you handle test environment setup and management.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This 7-day plan and the interview questions should help you gain a comprehensive understanding of SQL for QA and prepare for a lead role in SDET.&lt;/p&gt;

</description>
      <category>sdet</category>
      <category>sql</category>
      <category>database</category>
      <category>important</category>
    </item>
    <item>
      <title>Unraveling the Potential of AI in Testing: A Comprehensive Guide for Gen AI</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Thu, 06 Jun 2024 02:52:25 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/unraveling-the-potential-of-ai-in-testing-a-comprehensive-guide-for-gen-ai-3k3j</link>
      <guid>https://dev.to/sureshayyanna/unraveling-the-potential-of-ai-in-testing-a-comprehensive-guide-for-gen-ai-3k3j</guid>
      <description>&lt;p&gt;Introduction:&lt;br&gt;
Welcome, Gen AI, to the captivating world of software testing empowered by Artificial Intelligence (AI). As technology advances, so does the complexity of testing methodologies. In this comprehensive guide, we'll delve deep into the utilization of AI in the testing industry, covering both manual and automation coding aspects. Moreover, we'll provide a step-by-step roadmap for you to master Gen AI in testing and become a proficient tester in the digital age.&lt;/p&gt;

&lt;p&gt;Understanding AI in Testing:&lt;/p&gt;

&lt;p&gt;Automated Test Generation: AI algorithms analyze software requirements to automatically generate test cases, minimizing manual effort in test planning.&lt;br&gt;
Test Prioritization and Optimization: AI intelligently prioritizes test cases based on failure likelihood, historical data, and code changes, ensuring efficient testing.&lt;br&gt;
Defect Prediction and Analysis: Machine learning models predict potential defects by analyzing code changes, commit histories, and bug reports, facilitating proactive bug fixing.&lt;br&gt;
Natural Language Processing (NLP) for Testing: NLP techniques aid in analyzing and understanding natural language test cases, requirements, and user stories.&lt;br&gt;
Visual Testing: AI-driven visual testing tools detect UI changes, layout shifts, and rendering issues across different platforms and devices, enhancing test coverage.&lt;br&gt;
Steps to Learn Gen AI in Testing:&lt;/p&gt;

&lt;p&gt;Master the Fundamentals: Start by grasping the basics of software testing, including testing methodologies, levels, and types.&lt;br&gt;
Acquire Programming Skills: Gain proficiency in programming languages like Python, Java, or JavaScript, focusing on data structures, algorithms, and object-oriented programming.&lt;br&gt;
Explore AI Concepts: Dive into machine learning algorithms, deep learning frameworks, and natural language processing techniques relevant to testing.&lt;br&gt;
Hands-on Practice: Apply AI techniques in testing by working on real-world projects, experimenting with open-source tools, and contributing to AI-driven testing frameworks.&lt;br&gt;
Stay Updated: Keep abreast of AI and testing trends through online courses, workshops, conferences, and community forums.&lt;br&gt;
Collaborate and Share: Engage with peers to exchange knowledge, collaborate on projects, and share insights and experiences.&lt;br&gt;
Continuous Learning: Embrace a mindset of continuous improvement, as AI technology and testing practices evolve rapidly.&lt;br&gt;
AI in Manual Testing:&lt;/p&gt;

&lt;p&gt;Test Case Design Assistance: AI tools assist testers in designing effective test cases by analyzing requirements and suggesting relevant scenarios.&lt;br&gt;
Regression Testing Optimization: AI identifies areas of the application affected by code changes, streamlining regression testing efforts.&lt;br&gt;
Test Execution Guidance: AI provides guidance to manual testers by suggesting test execution sequences based on risk analysis and past results.&lt;br&gt;
Bug Triage and Prioritization: AI algorithms categorize and prioritize reported bugs, helping teams focus on critical issues first.&lt;br&gt;
Exploratory Testing Support: AI-powered tools aid testers in exploratory testing by suggesting areas to explore and providing real-time feedback.&lt;br&gt;
AI in Automation Testing:&lt;/p&gt;

&lt;p&gt;Test Script Generation: AI generates automation test scripts based on natural language test cases or recorded user interactions.&lt;br&gt;
Self-healing Tests: AI detects and resolves test script failures automatically, reducing maintenance effort in automation suites.&lt;br&gt;
Dynamic Test Data Generation: AI generates dynamic test data to ensure comprehensive test coverage and minimize test data management overhead.&lt;br&gt;
Adaptive Test Automation: AI adapts test automation based on application changes, ensuring test scripts remain relevant and effective.&lt;br&gt;
Performance Testing Optimization: AI analyzes system performance metrics to optimize performance test scenarios and identify bottlenecks.&lt;br&gt;
Conclusion:&lt;br&gt;
As Gen AI, you have the potential to revolutionize software testing by harnessing the capabilities of AI. By understanding AI applications in testing, mastering relevant skills, and staying updated with industry trends, you can become a proficient tester equipped to tackle the challenges of the digital era. So, embrace the journey, explore the possibilities, and unlock the full potential of Gen AI in testing!&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>chatgpt</category>
      <category>manualtesting</category>
    </item>
    <item>
      <title>Robot Framework</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Thu, 06 Jun 2024 02:46:23 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/robot-framework-3ndn</link>
      <guid>https://dev.to/sureshayyanna/robot-framework-3ndn</guid>
      <description>&lt;p&gt;Automation is a critical aspect of modern software development, enabling teams to streamline processes and ensure high-quality software. When it comes to automating desktop applications, Robot Framework shines as a powerful and user-friendly automation tool.&lt;/p&gt;

&lt;p&gt;In this comprehensive guide, we will walk you through the entire process of automating desktop applications using Robot Framework, covering everything from setup to implementation and best practices.&lt;/p&gt;

&lt;p&gt;Step 1: Environment Setup&lt;br&gt;
To get started, ensure you have the necessary tools:&lt;/p&gt;

&lt;p&gt;Install Python: Robot Framework relies on Python, so make sure you have it installed on your system.&lt;br&gt;
Install Robot Framework: Use pip, the Python package manager, to install Robot Framework with the following command:&lt;br&gt;
Install Application-Specific Libraries: Depending on your target desktop application’s platform (e.g., Windows, Mac, Linux), install the corresponding application-specific library, such as AutoItLibrary for Windows applications or rdesktop for Linux.&lt;br&gt;
Step 2: Identify the Target Desktop Application&lt;br&gt;
Select the desktop application you want to automate. Gain a comprehensive understanding of its functionalities, GUI elements, and expected behavior before proceeding with automation.&lt;/p&gt;

&lt;p&gt;Step 3: Interacting with Desktop Applications&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Opening and Closing the Application: Utilize the application-specific library to create keywords for opening and closing the desktop application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigating the GUI Elements: Identify and interact with GUI elements (buttons, text fields, dropdowns) using keywords provided by the library.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 4: Creating Test Cases&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Designing Test Cases: Plan your test cases thoughtfully, considering various application functionalities and user scenarios. Use descriptive names to enhance readability.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Step 5: Data-Driven Testing&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Data Sources: Implement data-driven testing by utilizing external data sources, such as Excel or CSV files, to test multiple data sets without modifying test case logic.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2 . Parameterization: Define variables within test cases to pass data from the data source to the keywords, enabling reusability of test cases.&lt;/p&gt;

&lt;p&gt;Step 6: Validating Application Behavior&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Capturing Screenshots: Implement keywords to capture screenshots during test execution for effective debugging and issue reporting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Verification: Use assertions to validate that the application’s data matches the expected results.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 7: Error Handling and Synchronization&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Error Handling: Implement robust error handling using try-except blocks to gracefully manage exceptions during test execution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Synchronization: Address synchronization issues by utilizing built-in keywords to wait for specific GUI elements to be ready before interacting with them.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 8: Reporting and Logging&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Detailed Reports: Configure Robot Framework to generate detailed HTML test reports, providing a clear view of test execution results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Logging: Implement logging to record test execution details, including warnings and errors, for in-depth analysis.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 9: Best Practices for Desktop Application Automation&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Page Object Model (POM): Follow the POM design pattern to separate test cases from the application’s UI elements, simplifying maintenance.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Test Data Management: Maintain test data separately to ensure data integrity and reusability across multiple test cases.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Step 10: Integrating with CI/CD Tools&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Jenkins Integration: Configure Robot Framework to work with Jenkins, enabling automated test execution as part of your CI/CD pipeline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Automating desktop applications using Robot Framework empowers software teams to achieve efficient and reliable test automation. This guide has covered the entire process, from setting up the environment to implementing test cases and best practices. Embrace the power of Robot Framework and elevate your desktop application automation to new heights!&lt;/p&gt;

&lt;p&gt;As the world of software testing evolves rapidly, these automation testing services have proven their mettle in enhancing testing efficiency, ensuring robustness, and delivering high-quality software products. If you’re a QA enthusiast or a software developer looking to optimize your testing process, Get in touch with our QA Head!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>robot</category>
    </item>
    <item>
      <title>How to create a Maven project in Eclipse</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Sat, 04 Nov 2023 07:09:04 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/how-to-create-a-maven-project-in-eclipse-1b6h</link>
      <guid>https://dev.to/sureshayyanna/how-to-create-a-maven-project-in-eclipse-1b6h</guid>
      <description>&lt;p&gt;This is one of the methods to create a Maven project. But in this rather than creating a project outside Eclipse and then importing it to Eclipse, we will directly create a maven project into Eclipse.&lt;/p&gt;

&lt;p&gt;Step 1: Open your Eclipse and Go to File &amp;gt; New &amp;gt; Others. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2P3hDFsO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0urowhsetx6xp4rk1ajf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2P3hDFsO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0urowhsetx6xp4rk1ajf.png" alt="Image description" width="657" height="697"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Select Maven Project and click on Next. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dwfm69Lb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9m8fc2leeworfclj3shy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dwfm69Lb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9m8fc2leeworfclj3shy.png" alt="Image description" width="698" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Un-check the 'Use default Workspace location' and with the help of the Browse button choose your workspace where you would like to set up your Maven project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gVPUnnMZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ay7ik098rnixuvrllivj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gVPUnnMZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ay7ik098rnixuvrllivj.png" alt="Image description" width="718" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 4: Select the archetype, for now just select the 'maven-aechetype-quickstart' and click on Next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rMSW7nNt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b6k8k54jsuzs7oiajhzr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rMSW7nNt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b6k8k54jsuzs7oiajhzr.png" alt="Image description" width="701" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 5: Enter the Group Id &amp;amp; Artifact Id and click on Finish button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--85sOKfuO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/svltisb2warpykmrvzda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--85sOKfuO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/svltisb2warpykmrvzda.png" alt="Image description" width="696" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 6: Go to the project location to see the newly created maven project. Now open the pom.xml file, which resides in the project folder. By default the POM is generated as below screenshot:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mjo9REET--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ks3obaafhi31bzckfis4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mjo9REET--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ks3obaafhi31bzckfis4.png" alt="Image description" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 7: Look at the default folder structure of the Maven project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XAByCP95--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txs84umo6438xajbkk79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XAByCP95--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txs84umo6438xajbkk79.png" alt="Image description" width="371" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 8: Modify POM.xml with the latest Junit and other required dependencies and save the POM.xml&lt;/p&gt;

</description>
      <category>maven</category>
      <category>beginners</category>
      <category>automation</category>
    </item>
    <item>
      <title>Agile - Story Point Estimation</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Sat, 18 Jun 2022 05:06:07 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/agile-story-point-estimation-29dl</link>
      <guid>https://dev.to/sureshayyanna/agile-story-point-estimation-29dl</guid>
      <description>&lt;p&gt;&lt;strong&gt;What are story points?&lt;/strong&gt;&lt;br&gt;
Firstly, Agile estimation is the process to estimate the effort required to complete a task.&lt;/p&gt;

&lt;p&gt;A story point is an arbitrary measure of effort required to implement a user story; it's a number that tells the team how hard the story is. “Hard” can be related to complexity, unknowns, and/or effort.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Estimation Guidelines&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
Story Point values are based on a Fibonacci sequence (1,2,3,5,8,13,21,...)&lt;br&gt;
Story point estimates should take into account technical complexity &amp;amp; effort to complete.&lt;br&gt;
Story point estimates should account for the total effort to reach done, not just code complete. Both code review and QA testing can take considerable time and should be accounted for.&lt;br&gt;
The lowest point value that can be assigned is 1, don't dabble in fractions of a story point.&lt;br&gt;
Stories with an estimate larger than 8 should be refined and broken into multiple stories.&lt;br&gt;
Time spent on different parts of the development process should be measured in hours &amp;amp; days.&lt;br&gt;
When in doubt about the value of a ticket, play conservatively and go with the higher value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F625mwvdl15qmcbvz237j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F625mwvdl15qmcbvz237j.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Breakdown by Time Spent&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
The table below is provided as a guideline of the total effort put forth during Development, Code Review, and QA testing for a given point value. Duration values are shared as uninterrupted/distraction-free time; time spent on a ticket may exceed the value shown due to switching context throughout a given sprint (meetings, shifting priorities, etc)&lt;br&gt;
&lt;a href="https://media.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%2Ftpw9k5un7qbg38u9crst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ftpw9k5un7qbg38u9crst.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Process of Story Point Estimation:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Step 1: Choose an estimation matrix (Fibonacci series).&lt;br&gt;
Step 2: Identify user stories or other relevant items for estimation.&lt;br&gt;
Step 3: Select reference points using prev. experience.&lt;br&gt;
Step 4: Identify the risks, size, and complexity of the selected estimation item(s).&lt;br&gt;
Step 5: Discuss and estimate.&lt;br&gt;
Step 6: Set up deadlines&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Story Points are Not,&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Estimate of time
   Very difficult to estimate time, hard to get right
   Story points trade off precision to make estimating easier&lt;/li&gt;
&lt;li&gt;Exact end dates&lt;/li&gt;
&lt;li&gt;Exact time spent&lt;/li&gt;
&lt;li&gt;Time tracking&lt;/li&gt;
&lt;li&gt;For comparing the team's output
    Story points are, by definition, relative and unique to each team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thus, comparing one team's velocity to another team's velocity is pointless(pun intended)&lt;/p&gt;

&lt;p&gt;For in-depth details about Scrum: [&lt;a href="https://scrumguides.org/scrum-guide.html" rel="noopener noreferrer"&gt;https://scrumguides.org/scrum-guide.html&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>agile</category>
      <category>devops</category>
      <category>scrum</category>
      <category>iamsureshayyanna</category>
    </item>
    <item>
      <title>Selenium CheatSheet(xpath)</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Mon, 31 Jan 2022 12:21:26 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/selenium-cheatsheetxpath-1b4l</link>
      <guid>https://dev.to/sureshayyanna/selenium-cheatsheetxpath-1b4l</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Different approach to create XPath and CSS Selector&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Whole WebPage -&amp;gt;  /html --&amp;gt; html&lt;br&gt;
Whole WebPage -&amp;gt;  body  --&amp;gt; /html/body body&lt;br&gt;
image --&amp;gt; element --&amp;gt; //img img&lt;br&gt;
Link   ---&amp;gt; //a[&lt;a class="mentioned-user" href="https://dev.to/href"&gt;@href&lt;/a&gt; = 'url']  --&amp;gt; a[href = 'url']&lt;br&gt;
Direct Child //div/a div &amp;gt; a&lt;br&gt;
Id ---&amp;gt;//tagName[&lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;=’idValue’] tagName#idValue&lt;br&gt;
Class ---&amp;gt;//tagName[@class=’classValue’]&lt;br&gt;
[tagName.Value of Class]&lt;br&gt;
Attribute---&amp;gt; //tagname[@attributename=’value1′]&lt;br&gt;
tagName[attribute=Value of attribute]&lt;br&gt;
Multiple Attributes //input[@type='submit' and @name='btnLogin']&lt;br&gt;
tagname[attribute1='value1'][attribute2='value2']&lt;br&gt;
Contains //&lt;em&gt;[contains(@type,'sub')]&lt;br&gt;
         &amp;lt;HTML tag &amp;lt;[attribute&lt;/em&gt;=subString]&amp;gt;&lt;br&gt;
Starts with //tagname[startswith(@attribute, ‘Start value’)] &lt;br&gt;
Ends with //tagname[endswith(@attribute, ‘End value’)]&lt;br&gt;
          &amp;lt;[attribute$=suffix of the String]&amp;gt;&lt;br&gt;
Matches     --&amp;gt; //&lt;em&gt;[matches(@type,'value')] N/A&lt;br&gt;
First Child --&amp;gt; //ul[&lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;=’list’]/li[1] ul#list li:first-child&lt;br&gt;
Last Child  --&amp;gt; //ul[&lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;=’list’]/li[last()] ul#list li:last-child&lt;br&gt;
nth Child   --&amp;gt; //ul[&lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;=’list’]/li[3] ul#list li:nth-child(3)&lt;br&gt;
Text Value  --&amp;gt; //td[text()=‘textname'] &lt;br&gt;
Element preceding some sibling   ---&amp;gt;//E2/preceding-sibling::E1 &lt;br&gt;
Sibling element immediately preceding---&amp;gt;//E/preceding-sibling::*1&lt;br&gt;
User interface element that is disabled - //E[@disabled]E:disabled&lt;br&gt;
Checkbox---&amp;gt; (radio button) that is checked //&lt;/em&gt;[@checked]*:checked&lt;br&gt;
Text Value ---&amp;gt; //td[text()=‘textname'] &lt;/p&gt;

</description>
      <category>programming</category>
      <category>selenium</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>HTML tagnames</title>
      <dc:creator>Suresh Ayyanna</dc:creator>
      <pubDate>Mon, 31 Jan 2022 12:02:31 +0000</pubDate>
      <link>https://dev.to/sureshayyanna/html-tagnames-48m5</link>
      <guid>https://dev.to/sureshayyanna/html-tagnames-48m5</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Tag Name Specification&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul&amp;gt;     ----&amp;gt; Defines an unordered list of items.
&amp;lt;tr&amp;gt;     ----&amp;gt; Defines a row of cells in a table.
&amp;lt;title&amp;gt;  ----&amp;gt; Represents title to an HTML document.
&amp;lt;th&amp;gt;     ----&amp;gt; Used for creates header of a group of cell in HTML table.
&amp;lt;table&amp;gt;  ----&amp;gt;  Used to defines a table in an HTML document.
&amp;lt;tbody&amp;gt;  ----&amp;gt;  Used for grouping table rows.
&amp;lt;td&amp;gt;     ----&amp;gt;  Used for creates standard data cell in HTML table.
&amp;lt;span&amp;gt;   ----&amp;gt;  Used to grouping and applying styles to inline elements.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Important Tagname and their Description&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;section&amp;gt;  ----&amp;gt;   Used to divide a document into number of different generic section.
&amp;lt;select&amp;gt;  ----&amp;gt;  Used to create a drop-down list.
&amp;lt;menu&amp;gt;    ----&amp;gt;  Used to display a unordered list of items/menu of commands.
&amp;lt;li&amp;gt;     ----&amp;gt;Define a list item either ordered or unordered list.
&amp;lt;iframe&amp;gt; ----&amp;gt;  Defines a inline frame that embedded external content into current web document.
&amp;lt;img&amp;gt;    ----&amp;gt;  Used to insert image into a web document.
&amp;lt;input&amp;gt;  ----&amp;gt;  Define a get information in selected input
&amp;lt;div&amp;gt;    ----&amp;gt;  Define a division part
&amp;lt;body&amp;gt;   ----&amp;gt;  Defines a main section(body)part in HTML document
&amp;lt;br /&amp;gt;   ----&amp;gt;  Specific a single line break
&amp;lt;button&amp;gt; ----&amp;gt;  Specifies a press/push button
&amp;lt;a&amp;gt;      ----&amp;gt;  Specific a anchor (Hyperlink)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>programming</category>
      <category>webcomponents</category>
      <category>development</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
