Structured Test Strategy Series - Day 1
Day 1: Heuristic Test Strategy Model Introduction
· Goal: Understand the basics and components of the Heuristic Test Strategy Model (HTSM).
· Tasks:
· Read an overview of the HTSM (by James Bach) to understand its purpose.
· Study the main categories of the model: Project Environment, Product Elements, Quality Criteria, and Test Techniques.
Notes:
What is the Heuristic Test Strategy Model (HTSM)?
- Heuristic: Think of this as a rule of thumb or a general guideline, not a strict rule. In testing, heuristics help you decide what to test and how to test it.
- Test Strategy Model: It's a framework or guide that helps testers think about different areas of a product that need to be tested.
Why is HTSM Useful?
- It helps testers identify what aspects of a product to focus on.
- It provides a structure, so you don’t miss important areas during testing.
How to Use HTSM?
- When testing a product, you can use these categories as a checklist or guide to ensure you are covering different aspects of testing.
Example: Before testing a new feature, ask yourself questions that you would not have thought of:
- What product elements does this feature interact with?
- What quality criteria are important for this feature?
- What test techniques should I use to test it effectively?
Let’s take below User Story as example:
User Story:
"As a user, I want to add products to my shopping basket on an e-commerce website to make a purchase."
Product Elements for Shopping Basket Feature Using SFDIPOT
- Structure:
- Page Layout: The layout of the product detail page, basket summary, and checkout page.
- Components: The "Add to Basket" button, quantity selector, item list, Minimum order qty, Qty Interval, total price display, and basket icon.
- Data Structure: Backend structure storing product IDs, prices, quantities, and user basket states.
- Function:
- Add to Basket: Functionality to add a product to the basket when "Add to Basket" is clicked.
- Remove from Basket: Ability to remove a product from the basket.
- Update Quantity: Ability to adjust the quantity of a product in the basket.
- Total Calculation: Real-time calculation of the total price based on items and their quantities.
- Save Basket State: Save the basket state for logged-in and guest users across sessions.
- Data:
- Product Information: Product names, prices, images, and availability status (in-stock or out-of-stock).
- User Session Data: Data on items added to the basket during the session or saved between sessions.
- Basket Summary Data: Total item count, individual item totals, and the overall basket total.
- Promo Codes: Information on any applicable discount codes, promo codes.
- Interfaces:
- User Interface: Interaction elements such as buttons, icons, pop-ups, and error messages.
- API Endpoints: Calls to backend services for retrieving product details, saving basket items, and checking available inventory based on the zip code.
- External Integrations: Payment gateway integration (for when proceeding to checkout) and product recommendation (or) Recently Purchased widgets (or) Product Reviews Widgets.
- Database Interface: Connection to the database storing product details and user basket information.
- Platform:
- Device Compatibility: Ensures functionality on both mobile and desktop devices.
- Browser Compatibility: Supports major browsers like Chrome, Safari, Firefox, and Edge.
- Operating System: Compatibility across common OSes like Windows, macOS, iOS, and Android.
- Operations:
- Error Handling: Display appropriate error messages for issues like adding out-of-stock items or connectivity problems.
- Session Management: Handling user sessions to maintain basket state, including for guest and logged-in users.
- Logging and Analytics: Tracking user actions within the basket (e.g., item added, quantity updated) for analytics and debugging.
- Time:
- Performance Requirements: Time taken to add an item to the basket and update the basket icon/item count in real-time.
- Session Persistence: Retain basket state for a certain time (e.g., 24 hours for guest users).
- Network Management: Handle network delays during high traffic, ensuring smooth updates to the basket.
Test Ideas (Based on Product Elements):
- Verify that the "Add to Basket" button is present and enabled for each product.
- Check that the correct product information (name, price, image) is displayed when a product is added.
- Ensure that the basket icon updates with the item count whenever an item is added.
Test Ideas (Based on Quality Criteria):
Consistency:
- Check that the basket’s item count updates accurately when products are added.
Test Ideas (Based on Test Techniques):
Usability Testing:
- Verify that error messages display if a user tries to add an out-of-stock item.
- Test that the "Add to Basket" button provides feedback (e.g., change of colour, animation) when clicked.
Accessibility Testing:
- Confirm that the basket icon is accessible and labelled correctly for screen readers.
Compatibility:
- Verify that the add to shopping basket feature works across supported browsers (Chrome, Firefox, Safari, Edge).
- Test on mobile and desktop views to ensure responsive design functionality.
Exploratory Testing:
- Perform exploratory testing by adding different products from different categories.
- Perform exploratory testing by adding different products from different views (table or grid).
- Test removing products from the basket and re-adding them to verify state retention.
Boundary Testing:
- Boundary test maximum and minimum product quantities (e.g., add 0 or the maximum allowed quantity)
Performance Testing:
- Measure load times when multiple products are added to the basket.
- Test basket page performance under varying network speeds.
- Test basket page when network is offline.
Security Testing:
- Test for vulnerabilities by attempting to alter product quantities through URL or UI Manipulation or API manipulation.
- Verify that products added to the basket with only secured authorised access.
Automation Testing:
- Automate adding products to the basket, verifying correct updates to the item count, and validating the total cost in the basket summary.
By following this structure, we can ensure Coverage of Functionality, Coverage of Quality and Coverage of Edge Cases.