<?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 Planning Before Testing</title>
      <dc:creator>Joy Odinaka</dc:creator>
      <pubDate>Fri, 02 Oct 2026 01:06:07 +0000</pubDate>
      <link>https://dev.to/dev-dinakajoy/test-planning-before-i-start-testing-1onb</link>
      <guid>https://dev.to/dev-dinakajoy/test-planning-before-i-start-testing-1onb</guid>
      <description>&lt;p&gt;So far, I have learned how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand requirements&lt;/li&gt;
&lt;li&gt;Design tests&lt;/li&gt;
&lt;li&gt;Write test cases&lt;/li&gt;
&lt;li&gt;Execute tests&lt;/li&gt;
&lt;li&gt;Report bugs&lt;/li&gt;
&lt;li&gt;Document results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But before all of that, there is an important question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What exactly are we going to test, and how are we going to test it?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Test Planning?
&lt;/h2&gt;

&lt;p&gt;Test planning is the process of deciding what will be tested, how it will be tested, who will do it, and when it will happen.&lt;/p&gt;

&lt;p&gt;A test plan gives the team a clear direction before testing begins.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Goes Into a Test Plan?
&lt;/h2&gt;

&lt;p&gt;A test plan can include:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Scope
&lt;/h3&gt;

&lt;p&gt;What are we testing?&lt;/p&gt;

&lt;p&gt;Defining scope helps prevent confusion about what the team is responsible for testing.&lt;/p&gt;

&lt;p&gt;For a food delivery application, for example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In scope:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Registration&lt;/li&gt;
&lt;li&gt;Login&lt;/li&gt;
&lt;li&gt;Restaurant search&lt;/li&gt;
&lt;li&gt;Viewing menus&lt;/li&gt;
&lt;li&gt;Adding food to cart&lt;/li&gt;
&lt;li&gt;Placing orders&lt;/li&gt;
&lt;li&gt;Order history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Out of scope:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment gateway&lt;/li&gt;
&lt;li&gt;Delivery processing&lt;/li&gt;
&lt;li&gt;Password reset&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Testing Types
&lt;/h3&gt;

&lt;p&gt;We also decide what types of testing are needed. The types selected depend on the application and its requirements.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Functional testing&lt;/li&gt;
&lt;li&gt;Regression testing&lt;/li&gt;
&lt;li&gt;Exploratory testing&lt;/li&gt;
&lt;li&gt;Negative testing&lt;/li&gt;
&lt;li&gt;Smoke testing&lt;/li&gt;
&lt;li&gt;Usability testing&lt;/li&gt;
&lt;li&gt;Compatibility testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Test Environment
&lt;/h3&gt;

&lt;p&gt;Where will testing happen?&lt;/p&gt;

&lt;p&gt;The environment matters because software can behave differently across browsers, devices, and configurations.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser:
Chrome
Firefox

Devices:
Desktop
Android

Database:
Test Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Roles and Responsibilities
&lt;/h3&gt;

&lt;p&gt;Who is involved?&lt;/p&gt;

&lt;p&gt;Everyone should understand their role during testing.&lt;/p&gt;

&lt;p&gt;A test plan can define responsibilities for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QA Tester&lt;/li&gt;
&lt;li&gt;QA Lead&lt;/li&gt;
&lt;li&gt;Developer&lt;/li&gt;
&lt;li&gt;Product Owner&lt;/li&gt;
&lt;li&gt;Scrum Master&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Schedule
&lt;/h3&gt;

&lt;p&gt;Testing doesn't happen randomly.&lt;/p&gt;

&lt;p&gt;Schedule gives the team an idea of what happens when.&lt;/p&gt;

&lt;p&gt;We can plan activities such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requirement Review
       ↓
Test Planning
       ↓
Test Scenario Design
       ↓
Test Case Design
       ↓
Test Execution
       ↓
Bug Reporting &amp;amp; Retesting
       ↓
Test Closure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Entry and Exit Criteria
&lt;/h2&gt;

&lt;p&gt;Another thing I learned is that testing needs clear conditions for starting and finishing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Entry Criteria
&lt;/h3&gt;

&lt;p&gt;Conditions that should be met before testing begins.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Requirements are available&lt;/li&gt;
&lt;li&gt;Test environment is ready&lt;/li&gt;
&lt;li&gt;Test data is available&lt;/li&gt;
&lt;li&gt;Build is deployed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Exit Criteria
&lt;/h3&gt;

&lt;p&gt;Conditions that help determine when testing can be considered complete.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Planned tests have been executed&lt;/li&gt;
&lt;li&gt;Critical defects are resolved&lt;/li&gt;
&lt;li&gt;Test results are documented&lt;/li&gt;
&lt;li&gt;Required coverage has been achieved&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Risks and Assumptions
&lt;/h2&gt;

&lt;p&gt;Things don't always go according to plan.&lt;/p&gt;

&lt;p&gt;A test plan can also identify potential risks.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;The test environment may not be available on time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A required test API may be unavailable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Identifying risks early allows the team to think about how to handle them.&lt;/p&gt;




&lt;p&gt;After learning about Test planning, I now know that I won't just start testing immediately I am giving the application.&lt;/p&gt;

&lt;p&gt;But I must first define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What to be tested&lt;/li&gt;
&lt;li&gt;What's not included &lt;/li&gt;
&lt;li&gt;How it will be tested&lt;/li&gt;
&lt;li&gt;Who is responsible &lt;/li&gt;
&lt;li&gt;What is needed&lt;/li&gt;
&lt;li&gt;When to can start and finish&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Testing isn't something we simply start doing without a plan.&lt;/p&gt;

&lt;p&gt;Notes can be found &lt;a href="https://github.com/dev-dinakajoy/qa-learning-journey/tree/main/notes/04-test-planning-and-requirements-analysis" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&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;

</description>
      <category>qa</category>
      <category>testing</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Test Execution and Documentation</title>
      <dc:creator>Joy Odinaka</dc:creator>
      <pubDate>Tue, 29 Sep 2026 16:33:45 +0000</pubDate>
      <link>https://dev.to/dev-dinakajoy/test-execution-documentation-149h</link>
      <guid>https://dev.to/dev-dinakajoy/test-execution-documentation-149h</guid>
      <description>&lt;p&gt;I have learned how to &lt;strong&gt;design tests&lt;/strong&gt;, and the next is how to actually document and run them.&lt;/p&gt;

&lt;p&gt;I need to execute the tests, record what happened, report problems, and keep track of what has been tested.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Test Case Execution
&lt;/h2&gt;

&lt;p&gt;A test case tells me what to test and how to test it.&lt;/p&gt;

&lt;p&gt;During execution, I follow the steps and compare the actual result with the expected result.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Test:&lt;/strong&gt; Login with valid credentials&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected:&lt;/strong&gt; User should be successfully logged in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actual:&lt;/strong&gt; User is successfully logged in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; PASS ✅&lt;/p&gt;

&lt;p&gt;But what if the login fails?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actual:&lt;/strong&gt; Error message: "Invalid credentials"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; FAIL ❌&lt;/p&gt;

&lt;p&gt;And here, documentation becomes important.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Test Status
&lt;/h2&gt;

&lt;p&gt;Not every test will simply be Pass or Fail.&lt;/p&gt;

&lt;p&gt;Common statuses include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pass&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Expected result was achieved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fail&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Actual result differs from expected result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blocked&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Test cannot be executed because of a blocker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Not Run&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Test hasn't been executed yet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This gives the team a quick picture of the current testing progress.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Expected vs Actual Result
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Expected Result&lt;/strong&gt; -&amp;gt; What should happen?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actual Result&lt;/strong&gt; -&amp;gt; What actually happened?&lt;/p&gt;

&lt;p&gt;This difference is very important when reporting a bug.&lt;/p&gt;

&lt;p&gt;Instead of saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Login doesn't work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I should be able to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Expected:&lt;/strong&gt; User should log in with valid credentials.&lt;br&gt;
&lt;strong&gt;Actual:&lt;/strong&gt; User remains on the login page and receives an error message.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's much easier for someone else to understand and investigate.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Bug Reporting
&lt;/h2&gt;

&lt;p&gt;When a test fails because of a defect, I need to report it clearly.&lt;/p&gt;

&lt;p&gt;A useful bug report usually contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bug ID&lt;/li&gt;
&lt;li&gt;Title&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Steps to reproduce&lt;/li&gt;
&lt;li&gt;Test data&lt;/li&gt;
&lt;li&gt;Expected result&lt;/li&gt;
&lt;li&gt;Actual result&lt;/li&gt;
&lt;li&gt;Severity&lt;/li&gt;
&lt;li&gt;Priority&lt;/li&gt;
&lt;li&gt;Environment&lt;/li&gt;
&lt;li&gt;Screenshots or other evidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't simply to say that there's a bug.&lt;/p&gt;

&lt;p&gt;The goal is to give the developer enough information to reproduce and understand the problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Retesting vs Regression Testing
&lt;/h2&gt;

&lt;p&gt;When a developer fixes a bug, I don't just assume it's fixed.&lt;/p&gt;

&lt;p&gt;I retest it to know if the specific bug got fixed.&lt;/p&gt;

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

&lt;p&gt;A login bug was reported.&lt;/p&gt;

&lt;p&gt;The developer fixes it.&lt;/p&gt;

&lt;p&gt;I run the same steps again to verify the fix.&lt;/p&gt;

&lt;p&gt;Next, I do a Regression Testing to know if the fix broke anything else?&lt;/p&gt;

&lt;p&gt;I test related or existing functionality to make sure the change hasn't introduced new problems.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Retesting -&amp;gt; Check the fix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regression -&amp;gt; Check for unintended impact&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Test Execution Reports
&lt;/h2&gt;

&lt;p&gt;As testing progresses, the team needs to know what's happening.&lt;/p&gt;

&lt;p&gt;Example of an Execution Report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total Tests:      50
Executed:         38
Passed:           32
Failed:            6
Blocked:           4
Not Run:           8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From this, we can calculate useful metrics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test coverage&lt;/li&gt;
&lt;li&gt;Pass rate&lt;/li&gt;
&lt;li&gt;Fail rate&lt;/li&gt;
&lt;li&gt;Blocked tests&lt;/li&gt;
&lt;li&gt;Remaining tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The numbers help communicate the current state of testing.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Requirements Traceability Matrix
&lt;/h2&gt;

&lt;p&gt;Another useful document is the RTM - Requirements Traceability Matrix.&lt;/p&gt;

&lt;p&gt;It connects requirements to test cases and, where applicable, defects.&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Test Case&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;Bug&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User can log in&lt;/td&gt;
&lt;td&gt;TC-LOGIN-001&lt;/td&gt;
&lt;td&gt;Fail&lt;/td&gt;
&lt;td&gt;BUG-001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User can search products&lt;/td&gt;
&lt;td&gt;TC-SEARCH-001&lt;/td&gt;
&lt;td&gt;Pass&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Have we tested all the requirements?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And if something fails:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which requirement and test case are affected?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  What I am Learning
&lt;/h3&gt;

&lt;p&gt;Test execution shows that testing isn't finished wafter running all test because, good QA means:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execute -&amp;gt; Observe -&amp;gt; Compare -&amp;gt; Document -&amp;gt; Report -&amp;gt; Retest -&amp;gt; Verify&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The quality of the documentation matters because testing is a team activity.&lt;/p&gt;

&lt;p&gt;Someone else should be able to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What was tested&lt;/li&gt;
&lt;li&gt;What happened&lt;/li&gt;
&lt;li&gt;What failed&lt;/li&gt;
&lt;li&gt;Why it failed&lt;/li&gt;
&lt;li&gt;What has been fixed&lt;/li&gt;
&lt;li&gt;What still needs attention&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I will start working on a small QA project, creating test scenarios, test cases, executing them, reporting bugs, and documenting the results.&lt;/p&gt;

&lt;p&gt;Notes can be found &lt;a href="https://github.com/dev-dinakajoy/qa-learning-journey/tree/main/notes/03-test-execution-documentation" rel="noopener noreferrer"&gt;here&lt;/a&gt;&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;

</description>
      <category>beginners</category>
      <category>testing</category>
      <category>qa</category>
    </item>
    <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;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;Test design is about deciding what test cases to create so that we can test a feature effectively without having to test every possible combination.&lt;/p&gt;




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

&lt;p&gt;Instead of testing every possible input, 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     -&amp;gt; Invalid
18 - 60      -&amp;gt; Valid
Above 60     -&amp;gt; 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 -&amp;gt; Invalid&lt;/li&gt;
&lt;li&gt;30 -&amp;gt; Valid&lt;/li&gt;
&lt;li&gt;61 -&amp;gt; Invalid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is to test one or more values from each group instead of testing everything.&lt;/p&gt;




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

&lt;p&gt;Bugs often hide around the edges 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;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  -&amp;gt; Just below minimum
18  -&amp;gt; Minimum
19  -&amp;gt; Just above minimum

59  -&amp;gt; Just below maximum
60  -&amp;gt; Maximum
61  -&amp;gt; Just above maximum
&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, so if there's a boundary, we test around it.&lt;/p&gt;




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

&lt;p&gt;Some features behave differently depending on multiple conditions.&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, it is best to 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 current state.&lt;/p&gt;

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

&lt;p&gt;Let's say a user's 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 -&amp;gt; Account remains active&lt;/li&gt;
&lt;li&gt;1 failed attempt -&amp;gt; Account remains active&lt;/li&gt;
&lt;li&gt;2 failed attempts -&amp;gt; Account remains active&lt;/li&gt;
&lt;li&gt;3 failed attempts -&amp;gt; Account becomes locked&lt;/li&gt;
&lt;li&gt;Login after lock -&amp;gt; Access denied&lt;/li&gt;
&lt;/ul&gt;

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

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




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

&lt;p&gt;This one is different because there isn't a strict formula.&lt;/p&gt;

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

&lt;p&gt;For a registration form, we 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;The question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I wanted to break this feature, what would I try?&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 valid input 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 invalid, unexpected, or inappropriate input 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;The questions are:&lt;/p&gt;

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

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

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




&lt;p&gt;Testing a product quantity field that accepts values from &lt;strong&gt;1 to 10&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We 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       -&amp;gt; Invalid
1 - 10    -&amp;gt; Valid
&amp;gt; 10      -&amp;gt; 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 -&amp;gt; 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 -&amp;gt; Should be rejected
Enter 11 -&amp;gt; Should be rejected
Enter "abc" -&amp;gt; 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 am not just randomly clicking around, but I am designing tests with a reason.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Take Away
&lt;/h1&gt;

&lt;p&gt;Test design changed how I think about testing. I understand that testing isn't about testing everything but more about choosing the right things to test. &lt;/p&gt;

&lt;p&gt;I don't just jump into testing a feature. I first check the possible inputs, conditions, states, boundaries, and failure points.&lt;/p&gt;

&lt;p&gt;Notes can be found &lt;a href="https://github.com/dev-dinakajoy/qa-learning-journey/tree/main/notes/02-test-design" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&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;

</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;h2&gt;
  
  
  1. QA vs 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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;QA -&amp;gt; How do we prevent problems?&lt;/strong&gt;&lt;/p&gt;

&lt;p&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;This is 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;This is 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;&lt;strong&gt;Scenario = What to test&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test case = How to test it&lt;/strong&gt;&lt;/p&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;&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;&lt;strong&gt;Severity = Impact&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Priority = Urgency&lt;/strong&gt;&lt;/p&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;"What happens when I do something I shouldn't?"&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;&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;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;
  
  
  My Take 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;I will be learning test design 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;Notes can be found &lt;a href="https://github.com/dev-dinakajoy/qa-learning-journey/tree/main/notes/01-manual-testing" rel="noopener noreferrer"&gt;here&lt;/a&gt;&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;

</description>
      <category>qa</category>
      <category>beginners</category>
      <category>testing</category>
    </item>
    <item>
      <title>Quality Assurance and Software 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;My first note:&lt;/p&gt;

&lt;p&gt;Software Quality Assurance and Software Testing&lt;/p&gt;

&lt;h2&gt;
  
  
  Quality Assurance (QA)?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Software 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;It looks at the bigger picture — processes, requirements, development, testing, and how the team works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software 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;For example:&lt;/p&gt;

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

&lt;p&gt;A tester checks:&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 before development&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;Though they are different, they actually work together.&lt;/p&gt;

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

&lt;p&gt;A QA tester does not 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;p&gt;QA is about helping teams build better software and not just only finding bugs.&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;

</description>
      <category>testing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Getting Started in QA</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 am starting my journey into &lt;strong&gt;Quality Assurance (QA)&lt;/strong&gt; from the very beginning.&lt;/p&gt;

&lt;p&gt;I have built software as a developer and now I want to focus on software testing.&lt;/p&gt;




&lt;p&gt;Software is everywhere but good software is about building features and making sure those features &lt;strong&gt;work as expected&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I am 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;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 will learn something -&amp;gt; practice it -&amp;gt; make mistakes -&amp;gt; fix them -&amp;gt; write about it.&lt;/p&gt;

&lt;p&gt;Hopefully, someone starting their own QA journey can learn alongside me or learn from my documentation some day.&lt;/p&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;I will document the things I learn, the things I struggled with, and the things that finally make sense.&lt;/p&gt;

&lt;p&gt;You can follow along or view my notes and practicals &lt;a href="https://github.com/dev-dinakajoy/qa-learning-journey" rel="noopener noreferrer"&gt;here&lt;/a&gt;&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;

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