Practice Software Testing
repository·main·Indexed 41 days ago
https://github.com/testsmith-io/practice-software-testingA Dockerized e-commerce Toolshop application designed for developers and testers to practice software testing. It features a Laravel-based REST API and an Angular frontend, structured into multiple development sprints that incrementally add features and complexities. The environment includes specialized versions for exploratory testing with intentional bugs and localized versions for specific training scenarios.
What's inside Practice Software Testing
- Practice Software Testing is an e-commerce Toolshop application designed for practicing software testing. The project is structured into multiple 'sprints', where each sprint incrementally adds new features. This allows testers and developers to work with an evolving application that mimics real-world software development lifecycles.
Overview of available features in the Toolshop application
mainThe Toolshop application includes the following functional areas and features:
- Navigation: Home, Contact, and Categories (Hand Tools, Power Tools, Special Tools, Rentals).
- Authentication: Sign In, Register, and Forgot Password flows.
- User Management (Requires Sign In):
- My Account, My Favorites, and My Profile (Update profile, Change password).
- My Invoices (Overview, Details).
- My Messages.
- Sign Out.
- Shopping Cart (Visible when not empty):
- View Cart content.
- Add or Delete products.
- Checkout flow (Sign In, Address, Payment).
- Catalog/Product Discovery (Available on the homepage):
- Sorting, Price Range filtering, Search, and Category filtering.
- Pagination (Prev.Page, Next.Page).
- Product interactions: Adjusting quantities (+/-), Adding to cart, Adding to favorites, and viewing Related products/More information.
Overview of the Angular Quick Reference for ToolShop
mainThe
angular-quickreference.mddocument serves as an onboarding guide for the ToolShop codebase. It maps backlog user stories to specific files and code patterns, helping developers avoid reverse-engineering the codebase for every new task.It provides:
- A conceptual explanation of how Angular is used in this project (using a restaurant analogy).
- The application's file structure.
- End-to-end data flow examples (e.g., the payment feature).
- Implementation guidance for specific user stories (US IDs).
For new contributors, it is recommended to start with US1003 as an onboarding exercise before attempting other stories.
Overview of Sprint5-with-bugs for Exploratory Testing
mainThe
Sprint5-with-bugsenvironment is a specialized setup designed to demonstrate Exploratory Testing workflows. It contains over 40 intentional bugs (defects) distributed throughout the application, which can be discovered using various "testing tours."In addition to the bugs, the environment includes predefined user stories to facilitate test planning and test design during exploratory testing sessions.
Overview of RBI Holistic Testing Training Special Version
mainThis is a specialized version of the software testing practice environment designed specifically for the RBI Holistic Testing Training. It includes specific localization and feature sets for testing Czech-market scenarios.
Key features included in this version:
- Language Support: Includes CS (Czech) language support.
- Product Catalog: Contains additional products localized in the Czech language.
- Currency & Payments:
- Payments in Czech Koruna (CZK) are available when the account country is set to
CZ. - The
PayU Czech Republicpayment option is available when the account country is set toCZ.
- Payments in Czech Koruna (CZK) are available when the account country is set to
- Delivery Options:
- New delivery methods:
StandardandZasilkovna. - Base delivery cost is set to
7,90 Euro.
- New delivery methods:
Feature availability matrix across versions
mainThe Practice Software Testing project provides multiple versions (v1 through v5) and specialized builds (
with-bugs,performance, andmobile app) to facilitate different testing scenarios. Use the matrix below to identify which features are available in a specific version for your testing requirements.Feature Matrix
Functionality v1 v2 v3 v4 v5 with-bugs performance mobile app Admin Account x x x - CRUD all entities x x x - Reporting x x x Authentication x x x x - Login x x x x x - Two-Factor Authentication x x - Register x x x x x - Forgot Password x x x x - Lock account after failed attempts x x x - Social Login (Google, GitHub) x x Chat Widget x x x Checkout Flow x x x x x x - Increase/decrease quantity x x x x x x - Delete item x x x x x x - Address details x x x x x x - Payment options (basic) x x x - Payment options (advanced) x x x x Contact Form (basic) x x x x Contact Form (advanced) x x x - File upload x x x Customer Account x x x x - Update profile x x x x - Change password x x x x - Invoices overview x x x x - Invoice detail x x x x - Invoice PDF x x - Favorites x x x x - Contact messages x x x x Discount x x x - Geo-location x x x - Combined products x x x Google Analytics x x Multi-Language x Privacy Policy x Product Category x x x x x x x x Product Comparison x - Side-by-side specs comparison x - Highlight differences only x Product Detail x x x x x x x - Product specifications x Product Overview x x x x x x x - Pagination x x x x x x - Filter x x x x x x - Search x x x x x x - Sorting x x x x x x - Price-range x x x Rentals x x x x x APIs - REST API x x x x x x x x - REST API documentation (Swagger) x x x x x x x - GraphQL API x x x x x - GraphQL playground (GraphiQL) x x x x x Understand the practicesoftwaretesting.com architecture
mainThe application is a full-stack system designed to simulate a real-world production environment. It consists of an Angular-based frontend, a Laravel backend, and a React Native mobile application. The backend serves data through both RESTful and GraphQL APIs, utilizing a MySQL-compatible MariaDB database, Redis for caching, and a queueing system for asynchronous tasks like email delivery and PDF generation.Sprint 1 Product Catalog Requirements
mainSprint 1 establishes the core product catalog functionality. The system must support a product overview grid, detailed product views, category-based browsing, and a contact form for user inquiries.Understand the Sprint 05 Test Approach and Scope
mainThe Sprint 05 test cycle serves as the final User Acceptance Test (UAT) to inform the Go-Live decision.
Test Methods
- Scripted Tests: Executed for specific scenarios.
- Exploratory Tests: Unscripted testing to discover issues.
- Automated Regression Tests: Used to ensure existing functionality remains intact.
Scope
In Scope:
- Chinese character support in registration (3203)
- Security enhancements in user profile (3206)
- China Pay implementation (3207)
- Additional login step in checkout flow (3411)
- "Contact" feature implementation (3424)
- Replacing
auth-X32withauth-XX64due to vulnerabilities (3490) - OR-Mapper upgrade from v1.2 to v2.0 (5003)
Out of Scope:
- Imprint typos (4555)
- "Contact" feature API testing (3489) — only UI is tested for UX; API UAT occurs in the next sprint.
Sprint 1 - Product Catalog Overview
mainSprint 1 establishes the foundation for the e-commerce platform, focusing on a basic product catalog. It includes features for product listings, detail pages, category tree structures with filtering, brand management, product images, and a contact form.Explore Practice Software Testing features and user stories
mainThe documentation is organized into several key areas to help you learn how to test software using this project:
- Feature Overviews & Architecture: Understand the high-level design and specific technical implementations like
Postcode Lookup,Gift Card Validation, andHTTP QUERY Method. - Getting Started: Guides for installation, prerequisites, Docker setup, and switching between different project versions (sprints).
- Code Coverage: Optional setup for viewing test coverage reports.
- Features by Version (Sprints): Documentation of the application's capabilities at different stages of development, from a simple Product Catalog (Sprint 1) to a Full Platform (Sprint 5).
- User Stories: Detailed, task-oriented requirements for each sprint. These are ideal for writing test cases, as they describe specific behaviors like
Pagination,Checkout,Two-Factor Auth, andAdmin Dashboardfunctionality.
- Feature Overviews & Architecture: Understand the high-level design and specific technical implementations like
Navigate the ToolShop Angular file structure
mainThe Angular application is located in
sprint5/UI/src/app/. The directory structure follows this pattern:app.component.html: The root layout containing the header, footer, and<router-outlet>.app-routing.module.ts: Defines top-level, lazy-loaded routes.header/,footer/: Global UI components.products/: Product browsing, details, categories, and rentals.checkout/: The 4-step checkout wizard (Cart → Login → Address → Payment).auth/: Authentication flows (Login, Register, Forgot Password).account/: User-specific views (Profile, Invoices, Favorites).admin/: Administrative dashboard and CRUD operations._services/: Contains the 22 core services for API calls and state management._helpers/: Utility functions like Validators and discount logic.models/: TypeScript interfaces defining data shapes (e.g.,Product,User).shared/: Reusable components and validators used across multiple modules.transloco-root.module.ts: Configuration for the translation system.assets/i18n/: JSON files containing translation strings for supported languages.
sprint5/UI/src/app/ ├── app.component.html ← Root: header + <router-outlet> + footer ├── app-routing.module.ts ← Top-level routes (lazy-loaded modules) ├── header/ ← Nav bar, language switcher, cart badge ├── footer/ ← Copyright line ├── products/ ← Product overview, detail, category, rentals, comparison ├── checkout/ ← 4-step wizard: Cart → Login → Address → Payment ├── auth/ ← Login, Register, Forgot Password ├── account/ ← User profile, invoices, favorites, messages ├── admin/ ← Admin dashboard, CRUD for all entities ├── _services/ ← 22 services (API calls, state) ├── _helpers/ ← Validators, discount utilities ├── models/ ← TypeScript interfaces (Product, User, etc.) ├── shared/ ← Reusable components (password input, validators) └── transloco-root.module.ts ← Translation config (7 languages) └── assets/i18n/ ← Translation JSON files (en, de, el, es, fr, nl, tr)