Sheet 1
Heuristic Testing Strategy Model | http://www.satisfice.com/tools/htsm.pdf
  Project Environment
    Mission
      Who are the customers?
      What does the customers expect from the product?
        Are there conflicting expectations?
      What tests would matter most for the customers?
    Information
      Whom can we consult to learn about this project?
        People
        Documents
      Product history
        Old problems
        Pattern of customer complaints
      Is the information up-to-date?
      Are there comparable products from which you can extract relevant information?
    Developer Relations
      Hubris
        Is the development team overconfident about any aspect of the product?
      Defensiveness
        Is there any part of the product the developers seem strangely opposed to having tested?
      Rapport
        Have you developed a friendly working relationship with the programmers?
      Feedback
        What do the developers think of your testing strategy?
        Can you communicate quickly, on demand, with the programmers?
    Test Team
      Is the team capable of testing properly the product, both in technical ability and number of individuals?
        Is training need? Is training available?
        Are there people outside who can help?
      Are there a particular testing technique the team is skilled or motivated to use?
      Team members location and communication
    Equipment and Tools
      Hardware
        Is all necessary equipment set up and read to go?
      Probes
        Do we need any particular tool to aid observation of the product?
      Matrices and Checklists
        Are any documents needed to track or record the progress of testing?
    Schedule
      Testing
        How much time?
        Are some tests better designed/executed later rather than sooner?
      Development
        When will versions of the product be available to test?
      Documentation
        When will user documentation be available for review?
    Test Items
      Scope
      Availability
      Volatility
      Testability
      Changes
        Change log
        Future releases
          What tests need to be re-designed in order to apply to future releases?
    Deliberables
      Content
        Test reports
      Puporse
        Are the tests delivered as part of the product?
        Will someone else run your tests?
      Standards
        Is there a specific test documentation standard you should follow?
      Media
        How will you record and communicate the test reports?
  Product Elements
    Structure
      Code
      Hardware
      Non-executable files
      Collateral
        Any artefact besides hardware and software, such as documents, licenses, external links, etc
    Function
      Application
        Aspects which defines the product or fulfills a core requirement
      Calculation
        Arithmetic operations and functions embedded in other functions
      Time-related
        Settings
        Reports
        Jobs
        Time-zone
        Holidays
        Time-related functions and calculations
      Transformations
        Functions which transform something, such as fonts and CSS configurations
      Startup / Shutdown
        Methods and interfaces which initialize and exist the product
      Multimedia
        Sounds
        Videos
        Bitmaps
      Error Handling
      Interactions
        Functions which detect and recover from errors, include error messages
      Testability
        Functions which provide assistance to testing, such as log files, test menus, diagnosis tools
    Data
      Input
        External data processed by the product
      Output
        Results from processing by the product
      Preset
        Data built-in into the product, such as default values, initial state of databases, etc
      Persistent
        Data stored internally and expect to persist over multiple operations
          Settings
          View modes
          Documents
      Sequences / Combinations
        Ordering or permutation of data and tests
      Cardinality
        Number of objects
          Zero
          One
          Many
          Max / Min
        Uniqueness of objects
      Big / Little
        Variations in size and aggregation of data
      Noise
        Invalid and corrupted data provided from external sources
      Lifecycle
        Creation, edition, access and deletion of data
    Interfaces
      User Interfaces
        Elements which interact with an user (physical or virtual)
      System Interfaces
        Elements which interact with other systems, such as HD, network, etc.
        Import / Export
          Functions which package data for use in different products
        API / SDK
          Programmatic interfaces which allow extension of the product or development of new applications
    Operations
      Users
        Attribute of the various kinds of users
      Environment
        Physical environment into which the product will be used
      Usage
        Common Use
          Patterns and sequences that the product typically encounter
        Disfavored Use
          Patterns and sequences provided by ignorant, mistaken, careless or malicious users
        Extreme Use
          Challenging patterns and sequences which are consistent with the intended use of the product
    Time
      Input / Output
        Moments when input is provided, output is created and time relationships among them
      Fast / Slow
        Validations with fast and slow input patterns, including combinations
      Changing Rates
        Speeding up and slowing down processes (spikes, bottlenecks, interruptions)
      Concurrency
        More than one action influencing one or more objects
  Quality Criteria
    Capability
      Can it perform the required functions?
    Reliability
      Under reasonable conditions, the product continues to function over time without degradation
      Robustness
        Gracefully resist errors and recovers
      Error Handling
        The data is protected from corruption or loss
      Safety
        The product will not fail in such way to cause harm to life or property
    Usability
      Operability
        The operations can be rapidly mastered
      Learnability
        The operations require minimum effort
      Accessibility
        The product meets relevant accessibility standards and target user needs
    Charisma
      Aesthetics
        The product appeals to the senses
      Uniqueness
        The product is new or special in some way
      Necessity
        The product possesses the capabilities the users expected from it
      Usefulness
        The product solves the users problems, well
      Entrancement
        The users are engaged during product usage
      Image
        The product projects the impression of quality
    Security
      Authentication
        The ways in which the product verifies the user identity
      Authorization
        The ways the product grants access to users on different levels
      Security Holes
        The ways the product cannot enforce its security rules
          E.g., social engineering
    Scalability
      How well the product scale up and down according to its usage?
    Compatibility
      Application Compatibility
        The product works in conjunction with other products
      Operating System Compatibility
        The product works with a particular Operating System
      Hardware Compatibility
        The product works with particular hardware components and configurations
      Backward Compatibility
        The product works with previous versions of itself
      Resource Usage
        The product doesn't unnecessarily uses resources
    Performance
      The product meets speediness and responsivity expectations
    Installability
      System Requirement
        Does the product detects unmet necessary components and configuration for its installation?
      Configuration
        What parts (files and resources) of the system are affected by installation?
      Uninstallation
        Is the product uninstallation clean?
      Upgrades / Patches
        Can updates be easily applied?
      Administration
        Is installation handle by a special personnel, process or system?
    Development
      Supportability
        How economical will it be to provide support to users?
      Testability
        How effectively can the product be tested?
      Maintainability
        How economical is it to build, fix or enhance the product?
      Portability
        How economical will it be to port or reuse the technology elsewhere?
      Localizability
        How economical will it be to adapt the product for various places and cultures?
  Testing Techiniques
    Function Testing
      What can it do?
      How do I know it is doing?
      Test each function, one by one
        Do what it should do?
        Do not do what it should not do?
    Claims Testing
      Identify reference material
        Documents
        People
      Test veracity of the claims
        Explicit
        Implicity
        Latent
    Domain Testing
      Investigate data processed by the product
      Testing data
        Boundary values
        Typical values
        Invalid values
        Best representatives
        Combination of data
    User Testing
      Identify user categories and roles
      Use cases for each category and role
        What do they do?
        What do they value?
      Testing
        Get user data or real users
        Test variety of users categories and roles
    Stress Testing
      Identify sub-systems and functions vulnerable to overloading
      Identify data and resources related to these sub-systems and functions
      Create challenging data and resource constraints to these sub-systems
    Risk Testing
      Identify problems that the product could have
        Expert opinion
        Requirements
        Design documents
        Past bug reports
        Risk heuristics
      Focus on the most dangerous problems
        How would you detect them?
    Flow Testing
      Perform multiple activities without resetting the system
        Vary sequence
        Vary timing
    Automatic Checking
      Identify tools which can perform lots of actions and check lots of things
        Amplify test coverage
        Partially automate oracles
        Data generators
        Enhance human testing
    Scenario Testing
      Create a compelling story of how someone who matters might do something that matters with the product