A complete manual QA testing project for the Swag Labs demo e-commerce application. This repository demonstrates the full manual testing workflow — from requirement analysis to defect reporting — using an Agile process and professional QA tooling.
Author: Miodrag Milosevic — Junior QA Manual Tester Type: Manual / Black-box / Requirement-based testing Toolchain: Jira (Agile + defects) · Qase (test case management) · GitHub (documentation & version control) Application under test: https://www.saucedemo.com Environment: MacBook Air M3 (13-inch) — macOS, Google Chrome (latest)
Everything goes to GitHub. The whole project — every folder, including qase/ — lives in this repository. GitHub is the complete storage of the portfolio.
Only the files in /qase are imported into the Qase tool (qase.io). They are the same test cases, reformatted for the tool.
| Folder | Format | Where it is used |
|---|---|---|
test-cases/ |
Readable (for people) | Read on GitHub — one row per case, by epic |
qase/ |
Qase import format (26 columns) | Imported into the Qase tool (and also stored on GitHub) |
In short: nothing is "only on Qase". Everything is on GitHub. The files in
/qaseare additionally imported into the Qase tool to populate it. Both folders contain the same 46 test cases.
The goal of this project is to test the core functionality of an e-commerce web application and document the process and findings to professional standards. Since the application ships without an official specification, an assumed requirements document was created to serve as the source of truth for testing.
Highlights:
- 📋 46 test cases across 4 epics, executed over 4 sprints
- ✅ 39 passed / ❌ 7 failed (85% pass rate)
- 🐞 7 defects reported with full traceability — found through planned and exploratory testing
- 🧠 Black-box techniques applied where they add value: Equivalence Partitioning, Boundary Value Analysis, Decision Table, State Transition
- 🏃 Agile workflow tracked in Jira (epics, user stories, sprints, bug workflow)
- 👥 Role-based testing across selected demo accounts
- 🔗 100% requirement coverage with a full traceability matrix (requirement → test → bug)
| Tool | Used for |
|---|---|
| Jira | Agile board, epics, user stories, sprints, defect tracking & workflow |
| Qase | Test case management and test runs |
| GitHub | Documentation, CSV source of truth, version control |
| Chrome | Test execution (macOS — MacBook Air M3) |
sauce-demo-qa-portfolio/
├── README.md ← you are here
├── docs/
│ ├── 01-requirements-specification.md
│ ├── 02-test-plan.md
│ ├── 03-test-scenarios.md
│ ├── 04-test-design-techniques.md
│ ├── 05-test-summary-report.md
│ ├── 06-traceability-matrix.md
│ └── traceability-matrix.csv
├── test-cases/ ← readable test cases, by epic (46 total)
│ ├── README.md
│ ├── 1-Authentication/ → Positive (3) + Negative (6)
│ ├── 2-Catalogue & Cart/ → Positive (18)
│ ├── 3-Checkout/ → Positive (9) + Negative (4)
│ └── 4-Roles & NFR/ → Positive (6)
├── bug-reports/
│ └── BUG-001 … BUG-007 (.md)
├── jira/
│ ├── agile-workflow.md
│ ├── jira-backlog-import.csv ← epics + user stories
│ └── jira-bugs-import.csv ← defects
├── qase/ ← same 46 cases, formatted for Qase import
│ ├── README.md
│ ├── qase-guide.md
│ ├── qase-authentication-positive.csv (3)
│ ├── qase-authentication-negative.csv (6)
│ ├── qase-catalogue-cart-positive.csv (18)
│ ├── qase-checkout-positive.csv (9)
│ ├── qase-checkout-negative.csv (4)
│ └── qase-roles-nfr-positive.csv (6)
├── evidence/ ← screenshots & recordings, mapped to bugs
│ ├── README.md
│ ├── BUG-001-before-reset.png
│ ├── BUG-001-after-reset.png
│ ├── BUG-001-reset-app-state.mp4
│ ├── BUG-002-invalid-input-step-one.png
│ ├── BUG-002-overview-reached.png
│ ├── BUG-002-invalid-name-checkout.mp4
│ ├── BUG-003-problem-user-identical-images.png
│ ├── BUG-004-problem-user-sorting-broken.mp4
│ ├── BUG-005-cart-buttons-before.png
│ ├── BUG-005-cart-buttons-after.png
│ ├── BUG-005-problem-user-cart-buttons.mp4
│ ├── BUG-006-last-name-redirects-to-first-name.mp4
│ ├── BUG-007-load-time-standard-user.png
│ └── BUG-007-load-time-performance-glitch-user.png
└── screenshots/ ← Jira & Qase tool screenshots
├── README.md
├── jira-backlog.png
├── jira-epic-stories.png
├── jira-bug-detail.png
├── jira-sprint-report.png
├── qase-repository.png
├── qase-test-case.png
├── qase-test-run.png
└── qase-dashboard.png
In scope: authentication, product catalogue, sorting, shopping cart, checkout flow, navigation, and basic non-functional checks (performance, access control).
Out of scope: real payment processing, external footer links, load/security testing, automated regression, cross-browser testing, and the error_user / visual_user accounts. The scope and account-selection rationale are documented in the Test Plan (Section 3, Section 6) — choosing what to cover by risk, rather than testing everything, is a deliberate decision.
Techniques are recorded as an attribute of each test case (the Technique column) and demonstrated in docs/04-test-design-techniques.md. They are applied where they add coverage value, not as labels on every case.
| Technique | Applied to | Example cases |
|---|---|---|
| Equivalence Partitioning | Checkout name fields (valid/invalid classes) | SLSD-42 |
| Boundary Value Analysis | Checkout field lengths (1 char, large input, empty) | SLSD-29 … 32, 39 … 41 |
| Decision Table | Login condition combinations | SLSD-1, 4–8 |
| State Transition | Session and checkout flow | SLSD-3, 9, 33–35, 37 |
| Metric | Value |
|---|---|
| Test cases executed | 46 |
| Passed | 39 |
| Failed | 7 |
| Pass rate | 85% |
| Distinct defects | 7 (5 Major, 2 Minor) |
| Sprint | Suite | Executed | Passed | Failed |
|---|---|---|---|---|
| Sprint 1 | Authentication | 9 | 9 | 0 |
| Sprint 2 | Catalogue & Cart | 18 | 17 | 1 |
| Sprint 3 | Checkout | 13 | 12 | 1 |
| Sprint 4 | Roles & NFR | 6 | 1 | 5 |
| Bug ID | Title | Severity |
|---|---|---|
| BUG-005 | Add/remove cart buttons unresponsive for problem_user |
Major |
| BUG-006 | Last Name field redirects input to First Name (problem_user) |
Major |
| BUG-003 | Product images are all identical for problem_user |
Major |
| BUG-007 | Excessive inventory load time for performance_glitch_user |
Major |
| BUG-001 | "Reset App State" leaves product buttons on "Remove" (exploratory) | Minor |
Visual proof that the project was managed in real QA tools. See /screenshots for all captures.
| Jira | Qase |
|---|---|
| Backlog with epics, stories & bugs | Test case repository by epic |
| Defect detail with full traceability | Test run results (39 Pass / 7 Fail) |
Screenshots show the Agile workflow (Jira) and test management & execution (Qase) behind the documentation in this repository.
- Start with the requirements and test plan.
- See the test scenarios (what is tested) and test design techniques (how cases were derived).
- Browse the test cases and the Qase import files.
- Review the Agile/Jira workflow and the bug reports.
- Check the traceability matrix to see requirement → test → bug coverage.
- Read the test summary report for the final results.
This project was created as a QA portfolio piece to demonstrate the end-to-end manual testing process within an Agile setup: requirement analysis, test planning, scenario and test case design with formal techniques, execution across sprints, defect reporting with full traceability (epic → user story → bug → test case → evidence), and results reporting.
Note: this is an independent practice project. Swag Labs / Sauce Demo is a publicly available demo application provided by Sauce Labs for testing purposes. Application details were verified against the live site.