<?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: Joy Odinaka</title>
    <description>The latest articles on DEV Community by Joy Odinaka (@dev-dinakajoy).</description>
    <link>https://dev.to/dev-dinakajoy</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2960206%2F5637d0f1-920d-43bd-970d-31aeb95720ed.png</url>
      <title>DEV Community: Joy Odinaka</title>
      <link>https://dev.to/dev-dinakajoy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev-dinakajoy"/>
    <language>en</language>
    <item>
      <title>Test Design: How Do I Know What to Test?</title>
      <dc:creator>Joy Odinaka</dc:creator>
      <pubDate>Wed, 02 Sep 2026 10:32:24 +0000</pubDate>
      <link>https://dev.to/dev-dinakajoy/test-design-how-do-i-know-what-to-test-3gdc</link>
      <guid>https://dev.to/dev-dinakajoy/test-design-how-do-i-know-what-to-test-3gdc</guid>
      <description>&lt;p&gt;So far, I have learned the fundamentals of Manual QA.&lt;/p&gt;

&lt;p&gt;Now comes a question that sounds simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If I have a feature to test, what exactly should I test?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's where &lt;strong&gt;Test Design&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;Test design is about deciding &lt;strong&gt;what test cases to create&lt;/strong&gt; so that we can test a feature effectively without having to test every possible combination.&lt;/p&gt;

&lt;p&gt;Here are the techniques I learnt.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Equivalence Partitioning
&lt;/h2&gt;

&lt;p&gt;Instead of testing every possible input, we divide inputs into groups that should behave similarly.&lt;/p&gt;

&lt;p&gt;These groups are called &lt;strong&gt;equivalence partitions&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;A website allows users to enter an age between &lt;strong&gt;18 and 60&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We can divide the inputs into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Below 18     → Invalid
18 - 60      → Valid
Above 60     → Invalid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of testing every age, we can test representative values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;17 → Invalid&lt;/li&gt;
&lt;li&gt;30 → Valid&lt;/li&gt;
&lt;li&gt;61 → Invalid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Test one or more values from each group instead of testing everything.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. Boundary Value Analysis
&lt;/h2&gt;

&lt;p&gt;Bugs often hide around the &lt;strong&gt;edges&lt;/strong&gt; of valid ranges.&lt;/p&gt;

&lt;p&gt;Boundary Value Analysis (BVA) focuses on those edges.&lt;/p&gt;

&lt;p&gt;Using the same age requirement:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;18 to 60&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;17  → Just below
18  → Minimum
19  → Just above

59  → Just below maximum
60  → Maximum
61  → Just above
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because developers can accidentally implement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;age &amp;gt; 18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;age &amp;gt;= 18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The boundary is where things often go wrong.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If there's a boundary, test around it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. Decision Table Testing
&lt;/h2&gt;

&lt;p&gt;Some features behave differently depending on &lt;strong&gt;multiple conditions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Decision tables help us organize these combinations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Login
&lt;/h3&gt;

&lt;p&gt;Suppose login succeeds only when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email is valid&lt;/li&gt;
&lt;li&gt;Password is correct&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Email&lt;/th&gt;
&lt;th&gt;Password&lt;/th&gt;
&lt;th&gt;Expected Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Valid&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Login succeeds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valid&lt;/td&gt;
&lt;td&gt;Incorrect&lt;/td&gt;
&lt;td&gt;Login fails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invalid&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Login fails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invalid&lt;/td&gt;
&lt;td&gt;Incorrect&lt;/td&gt;
&lt;td&gt;Login fails&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Instead of trying to remember every combination, the decision table makes the rules visible.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;When multiple conditions affect the outcome, think in combinations.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  4. State Transition Testing
&lt;/h2&gt;

&lt;p&gt;Some systems behave differently depending on their &lt;strong&gt;current state&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A simple example is a user account.&lt;/p&gt;

&lt;p&gt;Imagine an account is locked after &lt;strong&gt;3 failed login attempts&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Active
  ↓
1 failed attempt
  ↓
Active
  ↓
2 failed attempts
  ↓
Active
  ↓
3 failed attempts
  ↓
Locked
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Successful login → Account remains active&lt;/li&gt;
&lt;li&gt;1 failed attempt → Account remains active&lt;/li&gt;
&lt;li&gt;2 failed attempts → Account remains active&lt;/li&gt;
&lt;li&gt;3 failed attempts → Account becomes locked&lt;/li&gt;
&lt;li&gt;Login after lock → Access denied&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What happens when the system moves from one state to another?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  5. Error Guessing
&lt;/h2&gt;

&lt;p&gt;This one is different.&lt;/p&gt;

&lt;p&gt;There isn't a strict formula.&lt;/p&gt;

&lt;p&gt;It's about using &lt;strong&gt;experience, intuition, and knowledge of common mistakes&lt;/strong&gt; to predict where bugs might exist.&lt;/p&gt;

&lt;p&gt;For a registration form, I might try:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empty fields&lt;/li&gt;
&lt;li&gt;Very long inputs&lt;/li&gt;
&lt;li&gt;Special characters&lt;/li&gt;
&lt;li&gt;Spaces&lt;/li&gt;
&lt;li&gt;Duplicate email&lt;/li&gt;
&lt;li&gt;Invalid email format&lt;/li&gt;
&lt;li&gt;Copy/paste unexpected values&lt;/li&gt;
&lt;li&gt;Rapidly clicking the submit button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm basically asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"If I wanted to break this feature, what would I try?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The more experience a tester gains, the better they become at guessing where problems might hide.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Positive &amp;amp; Negative Testing
&lt;/h2&gt;

&lt;p&gt;These are two fundamental ways of approaching a test.&lt;/p&gt;

&lt;h3&gt;
  
  
  Positive Testing
&lt;/h3&gt;

&lt;p&gt;Use &lt;strong&gt;valid input&lt;/strong&gt; and verify that the system works as expected.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Valid email + Valid password = Login succeeds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Negative Testing
&lt;/h3&gt;

&lt;p&gt;Use &lt;strong&gt;invalid, unexpected, or inappropriate input&lt;/strong&gt; and verify that the system handles it correctly.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Invalid email + Valid password = Login rejected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A good tester asks both:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Does it work when I use it correctly?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What happens when I don't?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Putting It Together
&lt;/h1&gt;

&lt;p&gt;Let's say I'm testing a &lt;strong&gt;product quantity field&lt;/strong&gt; that accepts values from &lt;strong&gt;1 to 10&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I could use several techniques:&lt;/p&gt;

&lt;h3&gt;
  
  
  Equivalence Partitioning
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt; 1       → Invalid
1 - 10    → Valid
&amp;gt; 10      → Invalid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Boundary Value Analysis
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0, 1, 2
9, 10, 11
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Positive Testing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter 5 → Should be accepted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Negative Testing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter 0 → Should be rejected
Enter 11 → Should be rejected
Enter "abc" → Should be rejected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Error Guessing
&lt;/h3&gt;

&lt;p&gt;I might also try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Empty value
Negative number
Decimal number
Very large number
Special characters
Spaces
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now I'm not just randomly clicking around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm designing tests with a reason.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Have Learned
&lt;/h1&gt;

&lt;p&gt;Test design has changed how I think about testing.&lt;/p&gt;

&lt;p&gt;Before:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Let me test this feature."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What are the possible inputs, conditions, states, boundaries, and failure points?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the mindset I'm trying to develop.&lt;/p&gt;

&lt;p&gt;Testing isn't about testing everything but more about choosing the &lt;strong&gt;right things to test&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;The next step is to turn these techniques into something practical:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Writing professional test cases.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>testing</category>
      <category>qa</category>
      <category>learning</category>
    </item>
    <item>
      <title>Starting with Manual QA</title>
      <dc:creator>Joy Odinaka</dc:creator>
      <pubDate>Tue, 01 Sep 2026 10:17:11 +0000</pubDate>
      <link>https://dev.to/dev-dinakajoy/starting-with-manual-qa-l2</link>
      <guid>https://dev.to/dev-dinakajoy/starting-with-manual-qa-l2</guid>
      <description>&lt;p&gt;After learning the difference between &lt;strong&gt;QA and testing&lt;/strong&gt;, it’s time to get into the actual fundamentals.&lt;/p&gt;

&lt;p&gt;I'm starting with &lt;strong&gt;Manual QA&lt;/strong&gt; because I want to understand the thinking behind testing before moving into automation.&lt;/p&gt;

&lt;p&gt;Here’s what I’m learning.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. QA &amp;amp; Software Testing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;QA (Quality Assurance)&lt;/strong&gt; focuses on preventing quality problems by improving the process used to build software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software testing&lt;/strong&gt; focuses on checking the software to find defects and verify that it behaves as expected.&lt;/p&gt;

&lt;p&gt;A simple way to remember it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;QA -&amp;gt; How do we prevent problems?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Testing -&amp;gt; Can we find problems?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. SDLC &amp;amp; STLC
&lt;/h2&gt;

&lt;p&gt;Before testing software, I need to understand &lt;strong&gt;how software is built&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  SDLC — Software Development Life Cycle
&lt;/h3&gt;

&lt;p&gt;The overall process of developing software:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requirements
     ↓
Design
     ↓
Development
     ↓
Testing
     ↓
Deployment
     ↓
Maintenance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  STLC — Software Testing Life Cycle
&lt;/h3&gt;

&lt;p&gt;The process specifically followed for testing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requirement Analysis
        ↓
Test Planning
        ↓
Test Case Design
        ↓
Test Environment Setup
        ↓
Test Execution
        ↓
Test Closure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SDLC is the bigger picture. STLC focuses on testing.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Test Scenarios vs Test Cases
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;test scenario&lt;/strong&gt; describes &lt;em&gt;what&lt;/em&gt; needs to be tested.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;test case&lt;/strong&gt; describes &lt;em&gt;how&lt;/em&gt; to test it.&lt;/p&gt;

&lt;p&gt;For a login feature:&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Verify that a user can log in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Test cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login with valid credentials&lt;/li&gt;
&lt;li&gt;Login with an incorrect password&lt;/li&gt;
&lt;li&gt;Login with an empty email&lt;/li&gt;
&lt;li&gt;Login with an empty password&lt;/li&gt;
&lt;li&gt;Login with both fields empty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Scenario = What to test&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Test case = How to test it&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  4. Bug / Defect Lifecycle
&lt;/h2&gt;

&lt;p&gt;Finding a bug is only the beginning.&lt;/p&gt;

&lt;p&gt;A typical defect lifecycle looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New
 ↓
Assigned
 ↓
In Progress
 ↓
Fixed
 ↓
Retest
 ↓
Verified → Closed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But note that bugs can also be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reopened&lt;/li&gt;
&lt;li&gt;Rejected&lt;/li&gt;
&lt;li&gt;Duplicate&lt;/li&gt;
&lt;li&gt;Deferred&lt;/li&gt;
&lt;li&gt;Won't Fix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important thing is that a defect should be &lt;strong&gt;tracked from discovery to resolution&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Severity vs Priority
&lt;/h2&gt;

&lt;p&gt;These two confused me at first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; How badly does the bug affect the system?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Priority:&lt;/strong&gt; How urgently should it be fixed?&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A typo on the homepage might have &lt;strong&gt;low severity but high priority&lt;/strong&gt; if the homepage is part of an important marketing campaign.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A crash in a rarely used feature could have &lt;strong&gt;high severity but lower priority&lt;/strong&gt; depending on the business context.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity = Impact&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Priority = Urgency&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  6. Positive vs Negative Testing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Positive testing
&lt;/h3&gt;

&lt;p&gt;Check that the software works with &lt;strong&gt;valid input&lt;/strong&gt;.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Enter a valid email and password -&amp;gt; Login should succeed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Negative testing
&lt;/h3&gt;

&lt;p&gt;Check how the software behaves with &lt;strong&gt;invalid or unexpected input&lt;/strong&gt;.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Enter an incorrect password -&amp;gt; Login should fail with an appropriate message.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good testers don't only ask: &lt;em&gt;"Does it work?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They also ask: &lt;em&gt;&lt;strong&gt;"What happens when I do something I shouldn't?"&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Functional vs Non-Functional Testing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Functional testing
&lt;/h3&gt;

&lt;p&gt;Checks &lt;strong&gt;what the system does&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login&lt;/li&gt;
&lt;li&gt;Registration&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Checkout&lt;/li&gt;
&lt;li&gt;Payment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Non-functional testing
&lt;/h3&gt;

&lt;p&gt;Checks &lt;strong&gt;how well the system works&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Usability&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simple distinction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Functional = What does it do?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Non-functional = How well does it do it?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  8. Smoke, Sanity, Regression &amp;amp; Exploratory Testing
&lt;/h2&gt;

&lt;p&gt;These testing types are easy to mix up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smoke Testing
&lt;/h3&gt;

&lt;p&gt;A quick check to see if the build is stable enough for further testing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Does the application basically work?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Sanity Testing
&lt;/h3&gt;

&lt;p&gt;A focused check after a change or fix.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Does this specific change work correctly?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Regression Testing
&lt;/h3&gt;

&lt;p&gt;Checks that new changes haven't broken existing functionality.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Did this change break something that already worked?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Exploratory Testing
&lt;/h3&gt;

&lt;p&gt;Testing without following only predefined test cases.&lt;/p&gt;

&lt;p&gt;The tester explores the application, asks questions, follows clues, and looks for unexpected behavior.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What can I discover?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  9. Agile, Scrum &amp;amp; QA
&lt;/h2&gt;

&lt;p&gt;Modern QA doesn't happen only after developers finish everything.&lt;/p&gt;

&lt;p&gt;In an &lt;strong&gt;Agile&lt;/strong&gt; team, QA is involved throughout development.&lt;/p&gt;

&lt;p&gt;A typical Scrum team may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Owner&lt;/li&gt;
&lt;li&gt;Scrum Master&lt;/li&gt;
&lt;li&gt;Developers&lt;/li&gt;
&lt;li&gt;QA/Testers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;QA can contribute during:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Planning -&amp;gt; Development -&amp;gt; Testing -&amp;gt; Review -&amp;gt; Release&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This means QA isn't simply the person who receives a finished product and looks for bugs.&lt;/p&gt;

&lt;p&gt;QA works &lt;strong&gt;with the team&lt;/strong&gt; to help build quality into the product.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I'm Taking Away
&lt;/h1&gt;

&lt;p&gt;Manual QA is much more than clicking buttons.&lt;/p&gt;

&lt;p&gt;It's about:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding -&amp;gt; Thinking -&amp;gt; Designing -&amp;gt; Testing -&amp;gt; Finding -&amp;gt; Communicating -&amp;gt; Verifying&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the biggest skill I'm beginning to develop is &lt;strong&gt;thinking about what could go wrong&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's what I want to get better at.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I have the fundamentals mapped out, it's time to learn &lt;strong&gt;Test Design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I will be learning techniques such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Equivalence Partitioning&lt;/li&gt;
&lt;li&gt;Boundary Value Analysis&lt;/li&gt;
&lt;li&gt;Decision Table Testing&lt;/li&gt;
&lt;li&gt;State Transition Testing&lt;/li&gt;
&lt;li&gt;Error Guessing&lt;/li&gt;
&lt;li&gt;Positive &amp;amp; Negative Testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The journey continues.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>qa</category>
      <category>beginners</category>
      <category>testing</category>
    </item>
    <item>
      <title>What’s the Difference Between QA vs Testing?</title>
      <dc:creator>Joy Odinaka</dc:creator>
      <pubDate>Sun, 30 Aug 2026 19:55:15 +0000</pubDate>
      <link>https://dev.to/dev-dinakajoy/whats-the-difference-between-qa-vs-testing-5f7</link>
      <guid>https://dev.to/dev-dinakajoy/whats-the-difference-between-qa-vs-testing-5f7</guid>
      <description>&lt;p&gt;&lt;strong&gt;QA. Testing. Quality Control.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used to think they were basically the same thing.&lt;/p&gt;

&lt;p&gt;They are not.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what is QA?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quality Assurance (QA)&lt;/strong&gt; is about improving the process used to build software so that quality is built in from the start.&lt;/p&gt;

&lt;p&gt;QA asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“How can we prevent problems?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It looks at the bigger picture — processes, requirements, development, testing, and how the team works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then, what is Testing?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Software testing&lt;/strong&gt; is about checking the actual software to find problems and verify that it behaves as expected.&lt;/p&gt;

&lt;p&gt;Testing asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Does this actually work?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A developer builds a login page.&lt;/p&gt;

&lt;p&gt;A tester might check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can a user log in with valid credentials?&lt;/li&gt;
&lt;li&gt;What happens with the wrong password?&lt;/li&gt;
&lt;li&gt;What if the email is empty?&lt;/li&gt;
&lt;li&gt;What if the password is empty?&lt;/li&gt;
&lt;li&gt;What happens after several failed attempts?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These checks can reveal defects before users do.&lt;/p&gt;

&lt;h2&gt;
  
  
  QA vs Testing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;QA&lt;/th&gt;
&lt;th&gt;Testing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Prevents quality problems&lt;/td&gt;
&lt;td&gt;Finds problems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Process-focused&lt;/td&gt;
&lt;td&gt;Product-focused&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starts early&lt;/td&gt;
&lt;td&gt;Happens throughout development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Asks &lt;strong&gt;“How can we prevent defects?”&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Asks &lt;strong&gt;“Can we find defects?”&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;They are different, but they work together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a QA tester actually do?
&lt;/h2&gt;

&lt;p&gt;A QA tester doesn't simply click around looking for bugs.&lt;/p&gt;

&lt;p&gt;They:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand requirements&lt;/li&gt;
&lt;li&gt;Think about what could go wrong&lt;/li&gt;
&lt;li&gt;Design test cases&lt;/li&gt;
&lt;li&gt;Execute tests&lt;/li&gt;
&lt;li&gt;Report defects&lt;/li&gt;
&lt;li&gt;Retest fixes&lt;/li&gt;
&lt;li&gt;Perform regression testing&lt;/li&gt;
&lt;li&gt;Explore the software&lt;/li&gt;
&lt;li&gt;Communicate with developers and other team members&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And perhaps most importantly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They think like the user, and sometimes like the person trying to break the software.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm learning
&lt;/h2&gt;

&lt;p&gt;My biggest takeaway so far:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;QA isn't just about finding bugs. It's about helping teams build better software.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much bigger responsibility than I initially thought.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next:&lt;/strong&gt;&lt;br&gt;
I will learn how software actually gets built following &lt;strong&gt;SDLC&lt;/strong&gt;, and where QA fits into the process.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Getting Started in QA — Why Now?</title>
      <dc:creator>Joy Odinaka</dc:creator>
      <pubDate>Sun, 23 Aug 2026 10:13:48 +0000</pubDate>
      <link>https://dev.to/dev-dinakajoy/getting-started-in-qa-why-now-3bb1</link>
      <guid>https://dev.to/dev-dinakajoy/getting-started-in-qa-why-now-3bb1</guid>
      <description>&lt;p&gt;I’m starting my journey into &lt;strong&gt;Quality Assurance (QA)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And honestly, I’m starting from the beginning.&lt;/p&gt;

&lt;p&gt;I want to understand how software is tested, how bugs are found, how quality is maintained, and what it really means to work as a QA tester.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why QA?
&lt;/h2&gt;

&lt;p&gt;Software is everywhere.&lt;/p&gt;

&lt;p&gt;But good software isn't just about building features. It’s also about making sure those features &lt;strong&gt;work as expected&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hence, QA.&lt;/p&gt;

&lt;p&gt;I’m interested in learning how testers think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What can go wrong?&lt;/li&gt;
&lt;li&gt;How can I find it?&lt;/li&gt;
&lt;li&gt;How do I know the software is working correctly?&lt;/li&gt;
&lt;li&gt;How do I communicate a problem clearly?&lt;/li&gt;
&lt;li&gt;How can testing help build better software?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why now?
&lt;/h2&gt;

&lt;p&gt;Because I don't want to keep waiting until I feel ready.&lt;/p&gt;

&lt;p&gt;I have decided to &lt;strong&gt;learn by doing and document the journey as I go&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I won't pretend to be an expert.&lt;/p&gt;

&lt;p&gt;I will learn something → practice it → make mistakes → fix them → write about it.&lt;/p&gt;

&lt;p&gt;Hopefully, someone starting their own QA journey can learn alongside me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Road Ahead
&lt;/h2&gt;

&lt;p&gt;I will start with &lt;strong&gt;Manual QA&lt;/strong&gt; and gradually move toward automation.&lt;/p&gt;

&lt;p&gt;My roadmap looks something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manual QA&lt;/li&gt;
&lt;li&gt;Testing Fundamentals&lt;/li&gt;
&lt;li&gt;Test Cases &amp;amp; Bug Reporting&lt;/li&gt;
&lt;li&gt;API Testing&lt;/li&gt;
&lt;li&gt;Test Automation&lt;/li&gt;
&lt;li&gt;Real Projects
QA Job Ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will document the things I learn, the things I struggle with, and the things that finally make sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 1 Starts Here
&lt;/h2&gt;

&lt;p&gt;This is not a story about becoming an expert.&lt;/p&gt;

&lt;p&gt;It's the beginning of a journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm learning QA and I'm taking you with me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What exactly is QA, and what does a QA tester actually do?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>qa</category>
      <category>testing</category>
      <category>devjournal</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
