<?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>Forem: Moaaz Adel</title>
    <description>The latest articles on Forem by Moaaz Adel (@moaaz_adel).</description>
    <link>https://forem.com/moaaz_adel</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%2F677210%2Fde7d47c7-2d7e-414b-bd94-43f9d0020ec9.jpg</url>
      <title>Forem: Moaaz Adel</title>
      <link>https://forem.com/moaaz_adel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/moaaz_adel"/>
    <language>en</language>
    <item>
      <title>What Makes a Good QA Engineer Part 2: Effective Communication Skills 🗣️💬</title>
      <dc:creator>Moaaz Adel</dc:creator>
      <pubDate>Sat, 28 Sep 2024 21:31:07 +0000</pubDate>
      <link>https://forem.com/moaaz_adel/what-makes-a-good-qa-engineer-part-2-effective-communication-skills-4k9e</link>
      <guid>https://forem.com/moaaz_adel/what-makes-a-good-qa-engineer-part-2-effective-communication-skills-4k9e</guid>
      <description>&lt;p&gt;This is the Part 2 of the Series (What Makes a Good QA Engineer)&lt;br&gt;
Here is Part 1: &lt;a href="https://dev.to/moaaz_adel/what-makes-a-good-qa-engineer-part-1-tester-mindset-415j"&gt;QA-Mindset&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the world of software development, the ability to communicate effectively is just as important as technical skills. A good QA Engineer not only tests software, but also acts as a **bridge **between various teams. Let’s dive into the key aspects of effective communication for QA Engineers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Components of Effective Communication:
&lt;/h2&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Active Listening&lt;/strong&gt; 👂
&lt;/h1&gt;

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

&lt;p&gt;Understand requirements and concerns from developers, product managers, and other stakeholders.&lt;br&gt;
Encourage an open dialogue to clarify misunderstandings and gather comprehensive information.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Clear Documentation&lt;/strong&gt; 📄
&lt;/h1&gt;

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

&lt;p&gt;Create detailed and comprehensible test plans, cases (When needed), and reports.&lt;br&gt;
Use visual aids (like charts or flow diagrams) to enhance understanding, especially for complex processes.&lt;br&gt;
&lt;code&gt;Personal recommendation:&lt;/code&gt; I encourage you to check out &lt;strong&gt;MindMaps&lt;/strong&gt; to visualize your work. Some tools like &lt;a href="https://xmind.app/" rel="noopener noreferrer"&gt;Xmind&lt;/a&gt;, and [MindMeister]. (&lt;a href="https://www.mindmeister.com/)(Will" rel="noopener noreferrer"&gt;https://www.mindmeister.com/)(Will&lt;/a&gt; have an article on how to use MindMaps as a QA Engineer soon).&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Tailoring Communication Style&lt;/strong&gt; 🎯
&lt;/h1&gt;

&lt;p&gt;Adjust your communication based on your audience (technical vs. non-technical).&lt;br&gt;
Use concise language for busy stakeholders and provide in-depth explanations when necessary.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Providing Constructive Feedback&lt;/strong&gt; 🛠️
&lt;/h1&gt;

&lt;p&gt;Offer actionable insights rather than just pointing out problems.&lt;br&gt;
Frame feedback positively to foster a collaborative environment.&lt;/p&gt;

&lt;h1&gt;
  
  
  Facilitating Cross-Functional Collaboration 🤝
&lt;/h1&gt;

&lt;p&gt;Work closely with developers and other team members to ensure alignment on quality objectives.&lt;br&gt;
Promote a culture of quality throughout the development process.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Conflict Resolution&lt;/strong&gt; ⚖️
&lt;/h1&gt;

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

&lt;p&gt;Address disagreements diplomatically and find common ground.&lt;br&gt;
Use problem-solving techniques to navigate challenges and keep the team focused on goals.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Remember💡&lt;br&gt;
QA is a CRITICAL part of the development process, We're all developing the Software, but everyone has his own way. (A developer is not a only a Coder). 🤷‍♂️&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Effective communication is crucial for a QA Engineer's success. It not only enhances team collaboration but also ensures that quality is prioritized throughout the development lifecycle.&lt;/p&gt;

&lt;p&gt;See you in part 3 ;)&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy testing! ❤️❤️😃&lt;/p&gt;

</description>
      <category>qa</category>
      <category>automation</category>
      <category>softwareengineering</category>
      <category>development</category>
    </item>
    <item>
      <title>🚀 Github Actions: A simple way to trigger workflow from another workflow</title>
      <dc:creator>Moaaz Adel</dc:creator>
      <pubDate>Mon, 03 Oct 2022 13:51:21 +0000</pubDate>
      <link>https://forem.com/moaaz_adel/github-actions-a-simple-way-to-trigger-workflow-from-another-workflow-1b55</link>
      <guid>https://forem.com/moaaz_adel/github-actions-a-simple-way-to-trigger-workflow-from-another-workflow-1b55</guid>
      <description>&lt;p&gt;GitHub Actions is a neat and tidy way of automating the workflow in your development environment.&lt;/p&gt;

&lt;p&gt;Actions let you define and run simple commands in your development environment using a single interface.&lt;/p&gt;

&lt;p&gt;You can write your script as a simple bash file, but defining it as a GitHub action will make it even easier to run (and maintain).&lt;/p&gt;

&lt;p&gt;In this article, we will learn how to trigger a workflow from another workflow in a simple and easy way.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites:
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
To trigger a workflow from another workflow we need the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A repository with an action defined inside it (&lt;strong&gt;repo_01&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Another repository that needs the action to be triggered (&lt;strong&gt;repo_02&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Personal Access Token (PAT) that will be added at "Secrets".&lt;/li&gt;
&lt;li&gt;Simple Command to authorize the other workflow's PAT to call the repository's PAT to initiate the workflow, which will call the &lt;strong&gt;repo_01&lt;/strong&gt;'s action to execute the command.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now after we knowing what we need to make it works, let's make it works :D&lt;/p&gt;

&lt;p&gt;Generating PAT:&lt;/p&gt;

&lt;p&gt;To generate Personal Access Token for a user account we need to navigate to user profile tab &amp;gt; and in dropdown menu select "Settings" option &amp;gt; Personal access tokens.&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%2Fu22j0tj7iz8zvce94e6u.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%2Fu22j0tj7iz8zvce94e6u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New choose "Developer settings"&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%2Ftxojunubn5y0ncavmgs2.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%2Ftxojunubn5y0ncavmgs2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on "Generate new token"&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%2Fkk34yugctcrlmlgn096u.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%2Fkk34yugctcrlmlgn096u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Provide a descriptive note (or leave it empty) and select the desired scopes of the PAT:&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%2F03at784cag7jk8su3upy.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%2F03at784cag7jk8su3upy.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: PAT is secret and should not be shared; this is to prevent unauthorized access to your account and other repos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We need to add the PAT to the secrets section of the &lt;strong&gt;repo_01&lt;/strong&gt; repositories permissions.&lt;/p&gt;

&lt;p&gt;Navigate to "Settings" tab from the top navigation menu.&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%2Fxwbc9p7gus6frvnqrvgd.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%2Fxwbc9p7gus6frvnqrvgd.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the left navigation panel, click on "Secrets" then choose "Actions"&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%2F4tb0ueqk3ny0opxpba9z.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%2F4tb0ueqk3ny0opxpba9z.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now choose "New Repository secret"&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%2Fmc2eiejwbyjem50te1gy.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%2Fmc2eiejwbyjem50te1gy.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type "ACTIONS_KEY" as the secret name and enter the "PAT" in the "Secret" field.&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%2F10gp8f4i5bk0n40c2hj2.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%2F10gp8f4i5bk0n40c2hj2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Creating workflows:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Now we will create the workflow for the two repos.&lt;/p&gt;

&lt;p&gt;First navigate to "Actions" of the first repo and click on "New Workflow".&lt;/p&gt;

&lt;p&gt;You can choose between "Set up a workflow yourself" or using one of the suggested workflows depending on your need.&lt;/p&gt;

&lt;p&gt;Do the same steps at the &lt;strong&gt;repo_02&lt;/strong&gt; repository to create the second workflow.&lt;/p&gt;

&lt;p&gt;Last but not least, we need to configure the two workflows to interact with each other by calling one from the other.&lt;/p&gt;

&lt;p&gt;Use the following script at repo_01 (The trigger flow).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Replace userName with the Girhub userName and repoName with the actual Repository name name and the related url to the repository.&lt;/p&gt;
&lt;/blockquote&gt;

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


name: workflow_01
on:
  workflow_dispatch:
     inputs:
      workflow_02:
        description: 'ًWorkflow 2 which will be triggered'
        required: true
        default: 'workflow_02'

      workflow2_github_account:
        description: 'GitHub Account Owner'
        required: true
        default: ':userName'

      workflow2_repo_github:
        description: 'repo-name'
        required: true
        default: ':repoName' 

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Test
        run: |
          curl -X POST https://api.github.com/repos/:userName/:repoName/dispatches \
          -H 'Accept: application/vnd.github.everest-preview+json' \
          -u ${{ secrets.ACTIONS_KEY }} \
          --data '{"event_type": "Trigger Workflow", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'" }}'
      - uses: actions/checkout@v3


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And at repo_02, add the follwoing code to the actions file:&lt;/p&gt;

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

name: workflow_02
on: [repository_dispatch]
jobs:
  cypress-run:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Triggering Wokflow 2"
      - name: Checkout
        uses: actions/checkout@v2


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Finally, let's try it :D&lt;/p&gt;

&lt;p&gt;Navigate to repo_01 &amp;gt; Actions &amp;gt; workflow_01 &amp;gt; run workflow&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%2Fnfu20gbbru73cmzj8g74.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%2Fnfu20gbbru73cmzj8g74.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Tada! we made it&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workflow_02&lt;/strong&gt; is now being triggered by &lt;strong&gt;workflow_01&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;workflow_01&lt;/strong&gt;&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%2Fmcfczkkpoc3cvpmc4wbt.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%2Fmcfczkkpoc3cvpmc4wbt.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workflow_02&lt;/strong&gt;&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%2Fjfh9avvp8rk5cfqm4d11.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%2Fjfh9avvp8rk5cfqm4d11.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all folks! 🎉&lt;/p&gt;

&lt;p&gt;To learn more about github triggeres and events:&lt;br&gt;
&lt;a href="https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows" rel="noopener noreferrer"&gt;https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.letsdevops.net/post/letsdevops-trigger-workflow-from-another-workflow-using-github-actions" rel="noopener noreferrer"&gt;LetsDevOps&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>github</category>
      <category>testing</category>
      <category>codequality</category>
    </item>
    <item>
      <title>What makes a good QA Engineer Part 1: Tester Mindset</title>
      <dc:creator>Moaaz Adel</dc:creator>
      <pubDate>Wed, 20 Apr 2022 19:04:17 +0000</pubDate>
      <link>https://forem.com/moaaz_adel/what-makes-a-good-qa-engineer-part-1-tester-mindset-415j</link>
      <guid>https://forem.com/moaaz_adel/what-makes-a-good-qa-engineer-part-1-tester-mindset-415j</guid>
      <description>&lt;p&gt;In this series, we will discover in a nutshell and straightforward points what makes a good Quality Assurance Engineer that rocks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The name of the series is inspired by this song &lt;a href="https://www.youtube.com/watch?v=08h0IVs4RKQ" rel="noopener noreferrer"&gt;What makes a good man&lt;/a&gt;, which I encourage you to listen, it's really a good one. :D&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So without long intro, let's go ahead and start with the part 1 and the most important skill (in my opinion), which is The Tester Mindset.&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%2Flvgzjeieetgkfjm1f9db.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%2Flvgzjeieetgkfjm1f9db.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following 10 skills are what shapes the mindset of a good QA Engineer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Critical thinking&lt;/strong&gt;: having an open mindset instead of clinging onto prejudices. Thinks, challenges, explores, investigates and questions rather than just accepts, checks, validates and verifies.&lt;/li&gt;
&lt;li&gt;Curious about learning and exploring.&lt;/li&gt;
&lt;li&gt;Evaluating the possibility of failures.&lt;/li&gt;
&lt;li&gt;Aiming to NOT just find bugs, but prevent them.&lt;/li&gt;
&lt;li&gt;Flexible: able to switch between big-picture (which could also be called business-oriented) and detailed analytical mindsets at need.&lt;/li&gt;
&lt;li&gt;Making sure the app doesn’t do what it isn’t supposed to do (which is different than making sure it does what it is supposed to do) but in an efficient manner.&lt;/li&gt;
&lt;li&gt;Being able to spot patterns and inconsistencies.&lt;/li&gt;
&lt;li&gt;The more time testers spend doing manual tasks like documenting test cases, the less time they have to do value-added activities like finding defects&lt;/li&gt;
&lt;li&gt;Don’t focus on the overall defect count (Focusing on quantity over quality is a mistake).&lt;/li&gt;
&lt;li&gt;Everyone must be focused on creating the best experience possible for the end-user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
The most important skill that shapes a good QA Engineer is the mindset, that will difference between being an OK QA engineer and good one.&lt;/p&gt;

&lt;p&gt;See you in the part 2.&lt;br&gt;
Thanks for reading and happy testing ❤️ ❤️ 😃&lt;br&gt;
Feel free to reach out on &lt;a href="https://www.linkedin.com/in/moaz-moharam/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>qualityassurance</category>
      <category>testautomation</category>
      <category>softwaretesting</category>
    </item>
    <item>
      <title>Screan Driven Development (A Mixed Approach Scrum &amp; Lean)</title>
      <dc:creator>Moaaz Adel</dc:creator>
      <pubDate>Thu, 13 Jan 2022 12:26:57 +0000</pubDate>
      <link>https://forem.com/moaaz_adel/screan-driven-development-a-mixed-approach-scrumlean-5hcb</link>
      <guid>https://forem.com/moaaz_adel/screan-driven-development-a-mixed-approach-scrumlean-5hcb</guid>
      <description>&lt;p&gt;Are you a developer, tester, manager? Whatever your rule is in the company, you absolutely don’t want to fail any sprint for any reason.&lt;/p&gt;

&lt;p&gt;If you have been involved in a failed sprint before, then this article is for you, you will see what can make a Sprint fail and how to avoid that in future, and if you have never failed a Sprint, then perfect! I guarantee that you will find it interesting to learn a new methodology to try.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KlDLZhMJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvyqora4nz01h7nq50c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KlDLZhMJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvyqora4nz01h7nq50c4.png" alt="Scrum" width="880" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden Wastes!
&lt;/h2&gt;

&lt;p&gt;Let me tell you a story:&lt;/p&gt;

&lt;p&gt;Once upon a Sprint in a company that follows a Scrum Approach, the scrum master told the team "&lt;em&gt;the sprint is running out of time and there are still some features that weren't finished yet, and there were also unresolved bugs still opened&lt;/em&gt;".&lt;/p&gt;

&lt;p&gt;The Development Team was in a hurry to finish the remaining features and solve the bugs, QA members were trying to finish the testing tasks, the time was tight, new bugs were reported, new code merged, fixed bugs reopened, the team tried hard, but sadly,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The Sprint FAILED!!!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Scrum master said that on the last day of the sprint after the 2 weeks passed and the team was waiting for the Retrospective meeting to discuss what happened during the sprint.&lt;/p&gt;

&lt;p&gt;All team members were mature enough at development, testing, and estimation almost accurate all the time, so what went wrong to fail the sprint?&lt;/p&gt;




&lt;h2&gt;
  
  
  What Went Wrong?!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RqAUeqt5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/144uqyn6c0htt74j2jdp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RqAUeqt5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/144uqyn6c0htt74j2jdp.png" alt="WWW" width="279" height="181"&gt;&lt;/a&gt; &lt;br&gt;
&lt;code&gt;Image Credit(shorturl.at/byLPS)&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
In the Retrospective Meeting:&lt;/p&gt;

&lt;p&gt;At the “&lt;strong&gt;What went wrong?&lt;/strong&gt;” question in the Retrospective, those answers came up from the team members:&lt;/p&gt;

&lt;p&gt;1- “&lt;strong&gt;Some Stories were NOT clear enough and many scenarios were not mentioned, we spent a lot of time waiting for answers&lt;/strong&gt;”.&lt;/p&gt;

&lt;p&gt;2- “&lt;strong&gt;There were many Bugs and they needed a lot of time to be resolved and retested&lt;/strong&gt;” “QA Engineer”&lt;/p&gt;

&lt;p&gt;From those points, we can conclude common issues that are related to a broader Concept that is (Waste)!!!&lt;/p&gt;

&lt;p&gt;Now after this short story, let’s explain what "&lt;strong&gt;Wastes&lt;/strong&gt;" really meant, what can introduce wastes in the Development process, consequences, and how to avoid them leading to &lt;strong&gt;sustainable development&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Lean Approach
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1Bwg2qXU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bae7900qnj68zccwxlcw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1Bwg2qXU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bae7900qnj68zccwxlcw.gif" alt="Lean Approach" width="681" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/Lean_software_development"&gt;Lean Development&lt;/a&gt;&lt;/em&gt; is an agile framework based on &lt;strong&gt;optimizing development time and resources&lt;/strong&gt;, &lt;strong&gt;eliminating waste&lt;/strong&gt;, and ultimately &lt;strong&gt;delivering only what the product needs&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Waste
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eLqSoN0r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4jxl24e14p5omrcnbc45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eLqSoN0r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4jxl24e14p5omrcnbc45.png" alt="Wastes" width="880" height="521"&gt;&lt;/a&gt;&lt;br&gt;
             &lt;code&gt;image credit (shorturl.at/swAV5)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;Waste&lt;/strong&gt;” is any action or step in a process that &lt;strong&gt;does not add value to the customer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are 8 types of wastes identified by the Lean Approach, we will discover them one by one and show when they can occur and how to avoid them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Overproduction/ Extra features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: &lt;strong&gt;More is produced than is required&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Solution:
Only focus on what is needed now, prioritize the backlog, 
and take ONLY the highest priority features and consider the 
team's velocity.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Over-processing&lt;/strong&gt;: &lt;strong&gt;adding extra steps with no added value&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem. Need Approvals of more people than is necessary &lt;/li&gt;
&lt;li&gt;Solution: Reduce the steps required and remove the unnecessary ones that add no value to the feature and delay delivering it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Motion&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: Moving tasks &lt;strong&gt;more than necessary when doing work. Each time a deliverable is handed off, there is a potential knowledge loss.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Solution: Having Cross-functional teams with generalizing specialists (T-shaped people), face to face communication, shortening feedback loops, and having a variety of useful &lt;strong&gt;documentation&lt;/strong&gt; types for the feature (&lt;strong&gt;API doc, user guides&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Inventory/ Partially done work&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: Developers should not leave incomplete work.
A feature is considered partially done if it has not:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Documented&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deployed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tested&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Solution: Redefinition of Done to include the previous
3 points, apply the Kanban methodology &lt;strong&gt;limit Work In Progress&lt;/strong&gt; (WIP) that any stage (Column/status) can hold for pulling new work only if capacity is available.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transportation/ Task switching&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: Unnecessary task switching, each time a person working on a task switches between other tasks, there is amount of time being wasted to refocus on the working tasks.&lt;/li&gt;
&lt;li&gt;Solution: Reduce the task switching to the minimum and prioritizing work to be done&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Talent Utilization&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: Lose the Team members creativity due to ineffective allocation of responsibilities and tasks.&lt;/li&gt;
&lt;li&gt;Solution: Always &lt;strong&gt;empower team members&lt;/strong&gt;, &lt;strong&gt;encourage them&lt;/strong&gt;, and pay attention to the allocation of the members.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Defects&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Problem: Defects are producing additional rework which is considered a Waste.&lt;/li&gt;
&lt;li&gt;Solution: Try to reduce the number of Bugs produced at each Sprint by applying Bug &lt;strong&gt;Prevention approaches&lt;/strong&gt;, &lt;strong&gt;Shift Left&lt;/strong&gt; for early bugs detection, and applying &lt;strong&gt;TDD&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


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

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

&lt;ol&gt;
&lt;li&gt;Problem: Any process that stops the project activity like inputs, delays in reviews, approvals, and testing.&lt;/li&gt;
&lt;li&gt;Solution: Reduce the waiting times to the minimum by &lt;strong&gt;instant messaging&lt;/strong&gt;, &lt;strong&gt;regular feedback&lt;/strong&gt;, and &lt;strong&gt;applying test automation&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


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




&lt;h2&gt;
  
  
  The Combination of Scrum and Lean
&lt;/h2&gt;

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

&lt;p&gt;The main issue with scrum is that the problems are not properly identified.&lt;/p&gt;

&lt;p&gt;After each sprint, &lt;strong&gt;during the retrospective meeting&lt;/strong&gt;, the team states what went wrong without knowing the root cause, so we can face the same issues repeatedly.&lt;/p&gt;

&lt;p&gt;The gap filling between both approaches can be achieved by applying a new approach (&lt;strong&gt;Screan&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Firstly, as mentioned the importance of waste reduction following the &lt;strong&gt;Lean&lt;/strong&gt; Approach alongside with &lt;strong&gt;Scrum&lt;/strong&gt;, we can achieve that by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mapping the Sprint Problems to the related wastes.&lt;/li&gt;
&lt;li&gt;After identifying the problems, start working on reducing the waste in your next sprint.&lt;/li&gt;
&lt;li&gt;Repeat the process at each Sprint's Retrospective to reach the optimum method that eliminates waste.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HW3-DGDB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10v06kvif9kev4ur4srz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HW3-DGDB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10v06kvif9kev4ur4srz.png" alt="Continues" width="880" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine what we can achieve when reducing the previously mentioned wastes by &lt;strong&gt;mixing Lean Development alongside with the Scrum Approach&lt;/strong&gt;, we will achieve stunning results through &lt;strong&gt;Sustainable Delivery of Value&lt;/strong&gt; to the customers without having obstacles of wastes that impede the continuous  delivery.&lt;/p&gt;

&lt;p&gt;Give it a try in your next sprints and I’m looking forward to hearing that it helps you.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Scrum_(software_development)"&gt;Scrum Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://searchsoftwarequality.techtarget.com/definition/lean-programming"&gt;Lean Approach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/eight-types-waste-lean-manufacturing-software-jordi-triquell"&gt;The 8 Wastes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ministryoftesting.com/dojo/lessons/reducing-waste-in-scrum-and-improving-team-efficiency"&gt;Lean Retrospective&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your contribution is highly appreciated.&lt;br&gt;
Thanks for reading and happy improvement ❤️ ❤️ 😃&lt;br&gt;
Feel free to reach out on &lt;a href="https://www.linkedin.com/in/moaz-moharam/"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>agile</category>
      <category>qualityassurance</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
