Practice Software Testing

repository·main·Indexed 41 days ago

https://github.com/testsmith-io/practice-software-testing

A 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.

Tokens
61.1K
Snippets
140
Records
267
Agent score
51%

What's inside Practice Software Testing

  1. Overview of Practice Software Testing

    main
    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.
  2. Overview of available features in the Toolshop application

    main

    The 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.
  3. Overview of the Angular Quick Reference for ToolShop

    main

    The angular-quickreference.md document 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.

  4. Overview of Sprint5-with-bugs for Exploratory Testing

    main

    The Sprint5-with-bugs environment 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.

  5. Overview of RBI Holistic Testing Training Special Version

    main

    This 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 Republic payment option is available when the account country is set to CZ.
    • Delivery Options:
      • New delivery methods: Standard and Zasilkovna.
      • Base delivery cost is set to 7,90 Euro.
  6. Feature availability matrix across versions

    main

    The Practice Software Testing project provides multiple versions (v1 through v5) and specialized builds (with-bugs, performance, and mobile 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

    Functionalityv1v2v3v4v5with-bugsperformancemobile app
    Admin Accountxxx
    - CRUD all entitiesxxx
    - Reportingxxx
    Authenticationxxxx
    - Loginxxxxx
    - Two-Factor Authenticationxx
    - Registerxxxxx
    - Forgot Passwordxxxx
    - Lock account after failed attemptsxxx
    - Social Login (Google, GitHub)xx
    Chat Widgetxxx
    Checkout Flowxxxxxx
    - Increase/decrease quantityxxxxxx
    - Delete itemxxxxxx
    - Address detailsxxxxxx
    - Payment options (basic)xxx
    - Payment options (advanced)xxxx
    Contact Form (basic)xxxx
    Contact Form (advanced)xxx
    - File uploadxxx
    Customer Accountxxxx
    - Update profilexxxx
    - Change passwordxxxx
    - Invoices overviewxxxx
    - Invoice detailxxxx
    - Invoice PDFxx
    - Favoritesxxxx
    - Contact messagesxxxx
    Discountxxx
    - Geo-locationxxx
    - Combined productsxxx
    Google Analyticsxx
    Multi-Languagex
    Privacy Policyx
    Product Categoryxxxxxxxx
    Product Comparisonx
    - Side-by-side specs comparisonx
    - Highlight differences onlyx
    Product Detailxxxxxxx
    - Product specificationsx
    Product Overviewxxxxxxx
    - Paginationxxxxxx
    - Filterxxxxxx
    - Searchxxxxxx
    - Sortingxxxxxx
    - Price-rangexxx
    Rentalsxxxxx
    APIs
    - REST APIxxxxxxxx
    - REST API documentation (Swagger)xxxxxxx
    - GraphQL APIxxxxx
    - GraphQL playground (GraphiQL)xxxxx
  7. Understand the practicesoftwaretesting.com architecture

    main
    The 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.
  8. Understand the Sprint 05 Test Approach and Scope

    main

    The 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-X32 with auth-XX64 due 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.
  9. Explore Practice Software Testing features and user stories

    main

    The 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, and HTTP 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, and Admin Dashboard functionality.
  10. Navigate the ToolShop Angular file structure

    main

    The 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)