<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Nguyen Le Minh Tri</title>
        <link>https://mihchis.click/</link>
        <description>Nguyen Le Minh Tri's Blog</description>
        <lastBuildDate>Wed, 16 Sep 2026 03:14:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>Nguyen Le Minh Tri</title>
            <url>https://mihchis.me/avatar.png</url>
            <link>https://mihchis.click/</link>
        </image>
        <copyright>CC BY-NC-SA 4.0 2026-PRESENT © Nguyen Le Minh Tri</copyright>
        <atom:link href="https://mihchis.click/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[A Great QA Is Not the One Who Tests Everything]]></title>
            <link>https://mihchis.click/posts/a-great-qa-is-not-the-one-who-tests-everything</link>
            <guid isPermaLink="true">https://mihchis.click/posts/a-great-qa-is-not-the-one-who-tests-everything</guid>
            <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>There’s a common misconception in software testing:<br>
<em>a great QA is the one who tests everything.</em></p>
<ul>
<li>Every button.</li>
<li>Every field.</li>
<li>Every possible combination.</li>
</ul>
<p>But in reality, the best testers are not the ones who test the most.<br>
<strong>They are the ones who know what deserves depth — and what can be safely ignored.</strong></p>
<hr>
<h2>The Illusion of “Test Everything”</h2>
<p>In fast-paced delivery environments, especially with agile teams and continuous deployment, time is never unlimited. Features ship quickly. Requirements evolve. Priorities shift.</p>
<p>Trying to test <strong>everything</strong> often leads to one of two outcomes:</p>
<ol>
<li>You run out of time.</li>
<li>You generate noise instead of insight.</li>
</ol>
<p>More test cases do not automatically mean better quality.<br>
More regression scripts do not automatically mean lower risk.</p>
<blockquote>
<p>Exhaustive testing sounds responsible.<br>
<strong>Strategic testing is what actually protects the product.</strong></p>
</blockquote>
<h2>Risk-Based Thinking Changes Everything</h2>
<p>A strong QA thinks in terms of <strong>risk</strong>, not just coverage.</p>
<p>Before writing test cases, they ask:</p>
<ul>
<li>What is the <strong>business impact</strong> if this fails?</li>
<li><strong>Who</strong> will be affected?</li>
<li>How <strong>frequently</strong> is this functionality used?</li>
<li>What is the <strong>cost</strong> of failure?</li>
</ul>
<p>A payment calculation error is not the same as a minor UI misalignment.<br>
A broken authentication flow is not the same as a tooltip typo.</p>
<p><strong>Risk-based thinking means allocating effort where failure hurts the most.</strong></p>
<p>It’s not about ignoring quality.<br>
It’s about prioritizing impact.</p>
<h2>Business Impact Over Blind Coverage</h2>
<p>Blind coverage focuses on <em>numbers</em>:</p>
<ul>
<li>100% requirement coverage</li>
<li>90% automation coverage</li>
<li>Hundreds of test cases written</li>
</ul>
<p>But business impact focuses on <strong>value</strong>:</p>
<ul>
<li>Does this release protect <strong>revenue</strong>?</li>
<li>Does it protect <strong>user trust</strong>?</li>
<li>Does it reduce <strong>production incidents</strong>?</li>
<li>Does it increase <strong>delivery confidence</strong>?</li>
</ul>
<p>A great QA understands the product, <em>not just the ticket</em>. They understand the user journey, <em>not just the acceptance criteria</em>. They speak the language of risk, trade-offs, and impact.</p>
<blockquote>
<p>That mindset turns testing from a checklist activity into a <strong>strategic function</strong>.</p>
</blockquote>
<h2>Depth Over Noise</h2>
<p>Testing everything shallowly creates noise.<br>
Testing critical areas deeply creates confidence.</p>
<p>Depth means:</p>
<ul>
<li><strong>Challenging</strong> assumptions.</li>
<li><strong>Exploring</strong> edge cases that truly matter.</li>
<li><strong>Thinking</strong> like a malicious user.</li>
<li><strong>Simulating</strong> real-world behavior, not just happy paths.</li>
</ul>
<p>It also means knowing when to stop.</p>
<p>Not every edge case is worth automation.<br>
Not every scenario deserves documentation.<br>
Not every theoretical bug is worth delaying a release.</p>
<blockquote>
<p><strong>Maturity in QA is often reflected in restraint.</strong></p>
</blockquote>
<hr>
<h2>Quality Is About Value</h2>
<p>Quality is not measured by the number of test cases you write.</p>
<p>It is measured by the <strong>value</strong> your testing adds:</p>
<ul>
<li><strong>Fewer</strong> critical defects in production.</li>
<li><strong>Faster</strong> feedback cycles.</li>
<li><strong>Clearer</strong> risk communication.</li>
<li><strong>Better</strong> decision-making before release.</li>
</ul>
<p>A tester focuses on execution.<br>
A quality leader focuses on impact.</p>
<p>To all QAs, SDETs, and Automation Engineers —<br>
the mindset of <strong>selective depth, risk awareness, and business alignment</strong> is what truly separates testers from quality leaders.</p>
<p>In today’s fast delivery world, smart testing matters more than exhaustive testing.</p>
<blockquote>
<p>And sometimes, the most powerful thing you can test…<br>
<strong>is your own assumption about what really matters.</strong></p>
</blockquote>
]]></content:encoded>
            <author>trin72242@gmail.com (Nguyễn Lê Minh Trí)</author>
        </item>
        <item>
            <title><![CDATA[How to Write Effective Test Cases]]></title>
            <link>https://mihchis.click/posts/effective-test-cases</link>
            <guid isPermaLink="true">https://mihchis.click/posts/effective-test-cases</guid>
            <pubDate>Sun, 22 Feb 2026 21:30:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Writing test cases is the bread and butter of Quality Assurance. But there's a huge difference between a <em>valid</em> test case and an <strong><em>effective</em></strong> one.</p>
<p>An effective test case doesn't just verify that a feature works; it <strong>communicates intent</strong>, provides a clear path to reproduction, and serves as living documentation for the system.</p>
<p>Here are my top rules for writing test cases that actually add value.</p>
<hr>
<h2>1. Keep It Atomic</h2>
<p>A single test case should verify a <strong>single behavior</strong>.<br>
If a test case title includes the word &quot;and,&quot; you probably need to split it.</p>
<p><strong>Bad:</strong></p>
<blockquote>
<p><em>Verify that the user can log in with valid credentials and then update their profile picture.</em></p>
</blockquote>
<p><strong>Good:</strong></p>
<ul>
<li><code>TC01:</code> Verify user login with valid credentials.</li>
<li><code>TC02:</code> Verify profile picture update after successful login.</li>
</ul>
<h2>2. Preconditions Matter</h2>
<p>Never assume the tester (or future you) knows the state the system needs to be in. <strong>Explicitly state</strong> what needs to happen before step 1.</p>
<p><strong>Example:</strong></p>
<blockquote>
<p><strong>Precondition:</strong> User is registered, email is verified, and user is currently logged out.</p>
</blockquote>
<h2>3. Be Specific with Test Data</h2>
<p>Vague instructions lead to inconsistent testing. Don't tell the tester to &quot;enter a long string.&quot; Tell them <em>exactly</em> what to enter.</p>
<ul>
<li><strong>Bad:</strong> <em>Enter an invalid email address.</em></li>
<li><strong>Good:</strong> <em>Enter an email address without an '@' symbol (e.g., <code>testdomain.com</code>).</em></li>
</ul>
<h2>4. The Expected Result is the Star</h2>
<p>The actual steps are just the vehicle to get to the expected result. The expected result must be <strong>crystal clear and verifiable</strong>.</p>
<p>Avoid subjective terms like &quot;works correctly&quot; or &quot;looks good.&quot;</p>
<ul>
<li><strong>Bad:</strong> <em>The system should display an error.</em></li>
<li><strong>Good:</strong> <em>The system displays a red toast notification with the exact text: &quot;Invalid username or password.&quot;</em></li>
</ul>
<h2>5. Write for the &quot;New Guy&quot;</h2>
<p>The ultimate test of a good test case:</p>
<blockquote>
<p>Can a brand new QA Analyst or Developer pick it up and execute it without asking you any questions?</p>
</blockquote>
<p>If they can, you've written an effective test case.</p>
]]></content:encoded>
            <author>trin72242@gmail.com (Nguyễn Lê Minh Trí)</author>
        </item>
        <item>
            <title><![CDATA[QA Is Not About Clicking Buttons]]></title>
            <link>https://mihchis.click/posts/qa-is-not-about-clicking-buttons</link>
            <guid isPermaLink="true">https://mihchis.click/posts/qa-is-not-about-clicking-buttons</guid>
            <pubDate>Sat, 17 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>People often think QA is about clicking buttons and finding bugs.</p>
<p>If you’ve worked in testing, you know that’s probably the <em>smallest</em> part of the job.</p>
<p>Quality Assurance is not a phase at the end of development. <strong>It’s a mindset</strong> that lives throughout the entire lifecycle of a product. It starts long before test cases are written, and it continues long after features are released.</p>
<hr>
<h2>QA Is About Thinking Ahead</h2>
<p>At its core, QA is about <strong>anticipation</strong>.</p>
<p>It’s asking questions when everyone else is excited about shipping.<br>
It’s challenging assumptions when a requirement “looks fine.”<br>
It’s imagining what could go wrong before it actually does.</p>
<p>A missed edge case might look harmless during development. In production, it can cost hours of debugging, damage user trust, or even affect revenue.</p>
<blockquote>
<p>The difference between a smooth release and a production incident is often <strong>one uncomfortable question</strong> that someone dared to ask early enough.</p>
</blockquote>
<p>Good QA doesn’t slow teams down for the sake of process. It slows things down today so users don’t suffer tomorrow.</p>
<h2>Testing Is More Than Tools</h2>
<p>As an SDET, I’ve learned that automation is powerful — but <strong>intention matters more than frameworks.</strong></p>
<p>You can have high automation coverage and still miss critical risks. You can build sophisticated pipelines and still overlook flawed assumptions. Tools amplify thinking; <em>they don’t replace it.</em></p>
<p>The best testers don’t just test features. <strong>They test assumptions:</strong></p>
<ul>
<li><strong>What happens</strong> if the data is not clean?</li>
<li><strong>What if</strong> the user behaves unpredictably?</li>
<li><strong>What if</strong> the integration partner changes their API?</li>
<li><strong>What if</strong> performance degrades under real-world load?</li>
</ul>
<p>Automation helps scale confidence. But clarity of purpose determines where that automation should exist in the first place.</p>
<h2>Quality Starts Before “Testing”</h2>
<p>One of the biggest misconceptions about QA is that it begins when development ends.</p>
<p>In reality, quality is shaped during requirement discussions, design reviews, and architectural decisions. By the time something reaches a “testing phase,” many quality outcomes have already been decided.</p>
<p>When QA participates early:</p>
<ul>
<li><strong>Risks</strong> are identified sooner.</li>
<li><strong>Ambiguities</strong> are clarified.</li>
<li><strong>Edge cases</strong> are designed out instead of tested in.</li>
<li><strong>Rework</strong> is reduced.</li>
</ul>
<blockquote>
<p>Quality engineering is proactive, not reactive.</p>
</blockquote>
<h2>The Invisible Nature of QA</h2>
<p>QA work often goes unnoticed — <em>until something breaks</em>.</p>
<p>When a release goes smoothly, it’s easy to assume everything just worked. The careful thinking, the risk assessments, the conversations that prevented defects rarely make headlines.</p>
<p>And that’s okay.</p>
<h3><strong>Silent success is still success.</strong></h3>
<p>Prevented bugs don’t show up in metrics. Avoided incidents don’t trend on dashboards. But they matter. They protect users, teams, and businesses.</p>
<hr>
<h2>Why I’m Sharing This Journey</h2>
<p>Through this journey in QA and SDET, I want to share more than just technical tips. I want to explore:</p>
<ul>
<li><strong>Practical</strong> QA and automation insights from real projects</li>
<li><strong>Lessons</strong> learned from production issues and near-misses</li>
<li><strong>Career</strong> growth experiences in quality engineering</li>
<li><strong>Honest</strong> thoughts from behind the test cases</li>
</ul>
<p>Quality is not about perfection. <strong>It’s about consistency.</strong> It’s about showing up release after release, asking better questions, thinking deeper, and improving systems incrementally.</p>
<p>If you’re in QA, SDET, or building software in any role — this space is for you.</p>
<blockquote>
<p><em>Consistency over perfection.</em></p>
</blockquote>
<p>On to the next post.</p>
]]></content:encoded>
            <author>trin72242@gmail.com (Nguyễn Lê Minh Trí)</author>
        </item>
        <item>
            <title><![CDATA[Why Test Documentation Still Matters in Modern QA]]></title>
            <link>https://mihchis.click/posts/why-test-documentation-still-matters-in-modern-qa</link>
            <guid isPermaLink="true">https://mihchis.click/posts/why-test-documentation-still-matters-in-modern-qa</guid>
            <pubDate>Thu, 25 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>In fast-moving development environments, documentation is often the first thing people want to reduce.</p>
<blockquote>
<p>“It slows us down.”<br>
“We’re agile, we don’t need heavy docs.”<br>
“We’ll remember it.”</p>
</blockquote>
<p>But in software testing, documentation isn’t just paperwork. <strong>It’s the backbone of sustainable quality.</strong></p>
<p>When done right, test documentation doesn’t create bureaucracy. <strong>It creates clarity.</strong></p>
<hr>
<h2>Test Cases: Guarding Against Blind Spots</h2>
<p>Test cases are more than step-by-step instructions. They are a structured way to ensure every requirement is validated and no critical scenario is silently ignored.</p>
<p>Well-written test cases:</p>
<ul>
<li><strong>Map clearly</strong> to requirements</li>
<li><strong>Cover</strong> positive, negative, and edge scenarios</li>
<li><strong>Provide</strong> traceability</li>
<li><strong>Reduce</strong> reliance on individual memory</li>
</ul>
<p>Without documented test cases, testing becomes dependent on who is available that day. Knowledge lives in people’s heads instead of in the system. That’s a massive risk.</p>
<p><em>Test cases turn individual effort into team knowledge.</em></p>
<h2>Test Plans: Strategy Before Execution</h2>
<p>Testing without a plan often leads to reactive work.</p>
<p>A solid test plan defines:</p>
<ul>
<li><strong>Scope</strong> — what will and won’t be tested</li>
<li><strong>Approach</strong> — manual, automation, exploratory, performance, etc.</li>
<li><strong>Timeline</strong> and milestones</li>
<li><strong>Risks</strong> and mitigation strategies</li>
</ul>
<p>A test plan aligns expectations across QA, developers, and stakeholders. It answers critical questions before execution begins:</p>
<blockquote>
<p><em>What is our testing depth for this release?</em><br>
<em>What risks are we accepting?</em><br>
<em>What does “ready to ship” mean?</em></p>
</blockquote>
<p>Without that clarity, quality decisions become ambiguous and subjective.</p>
<h2>Bug Reports: Speeding Up Resolution</h2>
<p>A poorly written bug report slows down the entire team. A strong bug report <strong>accelerates delivery</strong>.</p>
<p>Clear reproduction steps, environment details, logs, screenshots, expected vs. actual results — these are <em>not</em> formalities. They reduce back-and-forth communication and help developers fix issues efficiently.</p>
<blockquote>
<p>The goal of a bug report is not to prove something is broken.<br>
<strong>It is to help fix it as quickly as possible.</strong></p>
</blockquote>
<p>Precise documentation saves hours in production support and debugging.</p>
<h2>The Real Benefits of Test Documentation</h2>
<p>When documentation is maintained thoughtfully, it delivers long-term value:</p>
<ul>
<li>It <strong>improves communication</strong> between QA, developers, and stakeholders.</li>
<li>It <strong>ensures consistency</strong> in testing across releases.</li>
<li>It becomes a <strong>reliable reference</strong> for audits, onboarding, and future enhancements.</li>
<li>It <strong>preserves project knowledge</strong> even when team members change.</li>
</ul>
<p>Documentation transforms testing from a temporary activity into an <em>institutional capability</em>.</p>
<hr>
<h2>Documentation Is About Accountability</h2>
<p>There’s a common saying in QA:</p>
<blockquote>
<p><strong>“If it’s not documented, it’s not tested.”</strong></p>
</blockquote>
<p>This doesn’t mean every click needs a written record. It means critical validation should be traceable. Decisions should be explainable. Risks should be visible.</p>
<p>Documentation creates <strong>accountability</strong>. It allows teams to answer:</p>
<ul>
<li>What did we test?</li>
<li>What did we intentionally skip?</li>
<li>Why did we make that decision?</li>
</ul>
<p>In modern QA, speed matters. Automation matters. Continuous delivery matters.</p>
<p>But <strong>clarity</strong> still matters more.</p>
<p>And good documentation is what keeps quality stable when everything else is moving fast.</p>
]]></content:encoded>
            <author>trin72242@gmail.com (Nguyễn Lê Minh Trí)</author>
        </item>
    </channel>
</rss>