Heuristic Test Strategy Model is designed by James Bach.
I am created a checklist reading and going through the document as per my understanding.
This checklist can be helpful while testing so that you do not miss on any important points.
-
General Test Techniques Checklist General Test Techniques Checklist
Function Testing : Test what it can do
- Test what it can doIdentify things that the product can do (functions and subfunctions).
- Determine function success criteriaDetermine how you’d know if a function was capable of working.
- Test each function individuallyTest each function, one at a time.
- Verify expected function behaviorSee that each function does what it’s supposed to do and not what it isn’t supposed to do.
Claims Testing : Challenge every claim
- Identify reference materials with claims
- Analyze and clarify claims
- Test each claim
- Ensure alignment with specifications
Domain Testing : Partition the data
- Identify processed data
- Select test data types
- Test data combinations
- Test data range
User Testing : Involve the users
- Identify user categories and roles
- Define user actions and values
- Gather real user data or simulate users
- Ensure diverse user testing
Stress Testing : Overwhelm the product
- Identify vulnerable subsystems
- Identify related data and resources
- Select challenging test conditions
Risk Testing : Imagine a problem, then look for it
- Identify potential product problems
- Focus on critical risks
- Plan detection methods
- Design tests for risk mitigation
- Consult experts and documentation
Flow Testing : Do one thing after another
- Perform connected activities
- Maintain system state
- Vary timing and sequencing
Tool-Supported Testing : Use tools to make testers more powerful
- Look for or develop testing tools
- Utilize tools for test coverage
- Employ tools for automated oracles
- Use automatic change detectors
- Apply automatic test data generators
Scenario Testing : Test to a compelling story
- Consider product context
- Design tests with complex interactions
- Create scenario-based tests
- Test what it can do
-
Project Environment Checklist Project Environment Checklist
Mission : Your purpose on this project, as understood by you and your customers.
- Define project purposeWhy are you testing? Are you motivated by a general concern about quality or specific and defined risks?
- Identify key stakeholdersDo you know who the customers of your work are? Whose opinions matter? Who benefits or suffers from the work you do?
- Understand customer needsMaybe the people you serve have strong ideas about what tests you should create and run. Find out.
- Negotiate project conditionsHave you negotiated project conditions that affect your ability to accept your mission?
Information : Information about the product or project that is needed for testing.
- Identify project resourcesWhom can we consult with to learn about this project?
- Gather engineering documentsAre there any engineering documents available? User manuals? Web-based materials? Specs? User stories?
- Review product historyDoes this product have a history? Old problems that were fixed or deferred? Pattern of customer complaints?
- Stay updated on project informationIs your information current? How are you apprised of new or changing information?
- Research comparable products/projectsAre there any comparable products or projects from which we can glean important information?
Developer Relations : How you get along with the programmers.
- Establish rapport with developersHave you developed a friendly working relationship with the programmers?
- Identify developer overconfidenceDoes the development team seem overconfident about any aspect of the product?
- Address developer defensivenessIs there any part of the product the developers seem strangely opposed to having tested?
- Maintain effective communicationCan you communicate quickly, on demand, with the programmers?
- Solicit feedback on test strategyWhat do the developers think of your test strategy?
Test Team : Anyone who will perform or support testing.
- Identify test team membersDo you know who will be testing? Do they have the knowledge and skills they need?
- Seek advice from expertsAre there people not on the “test team” that might be able to help? People who’ve tested similar products before and might have advice? Writers? Users? Programmers?
- Assess team skillsAre there particular test techniques that someone on the team has special skill or motivation to perform?
- Evaluate potential contributions from non-testersWho is co-located and who is elsewhere? Will time zones be a problem?
- Consider team location and time zonesAre there people not on the “test team” that might be able to help? People who’ve tested similar products before and might have advice? Writers? Users? Programmers?
Equipment & Tools : Hardware, software, or documents required to administer testing.
- Ensure availability of required hardwareDo you have all the physical or virtual hardware you need for testing? Do you control it or share it?
- Utilize automated checking toolsDo you have tools that allow you to control and observe product behavior automatically?
- Employ analytical toolsDo you have tools to create test data, design scenarios, or to analyze and track test results?
- Use matrices & checklists for trackingAre any documents needed to track or record the progress of testing?
- Access engineering dataDo you have access to engineering data coming back from the field?
Schedule : The sequence, duration, and synchronization of project events
- Allocate time for test designHow much time do you have? Are there tests better to create later than sooner?
- Plan test execution timingWhen will tests be performed? Are some tests performed repeatedly, say, for regression purposes?
- Coordinate with development milestonesWhen will builds be available for testing, features added, code frozen, etc.?
- Review documentation availabilityWhen will the user documentation be available for review?
Test Items : The product to be tested.
- Define scope of testingWhat parts of the product are and are not within the scope of your testing responsibility?
- Ensure availability of productDo you have the product to test? Do you have test platforms available? Will you test in production?
- Address interoperability needsAre any third-party services required for your product that must be mocked or made available?
- Stay updated on product changesIs the product constantly changing? How will you find out about changes?
- Assess product testabilityIs the product functional and reliable enough that you can effectively test it?
- Plan for future releases testingWhat part of your testing, if any, must be designed to apply to future releases of the product?
Deliverables : The observable products of the test project.
- Determine report contentWhat sort of reports will you have to make? Will you share your working notes, or just the end results?
- Clarify purpose of deliverablesAre your deliverables provided as part of the product? Does anyone else have to run your tests?
- Follow test documentation standardsIs there a particular test documentation standard you’re supposed to follow?
- Decide on report mediaHow will you record and communicate your reports?
- Define project purpose
-
Product Elements Checklist Product Elements Checklist
Structure : Everything that comprises the physical product.
- CodeThe code structures that comprise the product, from executables to individual routines.
- HardwareAny hardware component that is integral to the product.
- ServiceAny server or process running independently of others that may comprise the product.
- Non-executable filesAny files other than multimedia or programs, like text files, sample data, or help files.
- CollateralAnything beyond that is also part of the product, such as paper documents, web pages, packaging, license agreements, etc.
Function : Everything that the product does.
- Multi-user/SocialAny function designed to facilitate interaction among people or to allow concurrent access to the same resources.
- CalculationAny arithmetic function or arithmetic operations embedded in other functions.
- Time-relatedTime-out settings; periodic events; time zones; business holidays; terms and warranty periods; chronograph functions.
- Security-relatedRights of each class of user; protection of data; encryption; front end vs. back end protections; vulnerabilities in sub-systems.
- TransformationsFunctions that modify or transform something (e.g., setting fonts, inserting clip art, withdrawing money from account).
- Startup/ShutdownEach method and interface for invocation and initialization as well as exiting the product.
- MultimediaSounds, bitmaps, videos, or any graphical display embedded in the product.
- Error HandlingAny functions that detect and recover from errors, including all error messages.
- InteractionsAny interactions between functions within the product.
- TestabilityAny functions provided to help test the product, such as diagnostics, log files, asserts, test menus, etc.
Data : Everything that the product processes and produces.
- Input/OutputAny data that is processed by the product, and any data that results from that processing.
- PresetAny data that is supplied as part of the product, or otherwise built into it, such as prefabricated databases, default values, etc.
- PersistentAny data that is expected to persist over multiple operations. This includes modes or states of the product, such as options settings, view modes, contents of documents, etc.
- Interdependent/InteractingAny data that influences or is influenced by the state of other data; or jointly influences an output.
- Sequences/CombinationsAny ordering or permutation of data, e.g., word order, sorted vs. unsorted data, order of tests.
- CardinalityNumbers of objects or fields may vary (e.g., zero, one, many, max, open limit). Some may have to be unique (e.g., database keys).
- Big/LittleVariations in the size and aggregation of data.
- Invalid/NoiseAny data or state that is invalid, corrupted, or produced in an uncontrolled or incorrect fashion.
- LifecycleTransformations over the lifetime of a data entity as it is created, accessed, modified, and deleted.
Interface : Every conduit by which the product is accessed or expressed.
- User InterfacesAny element that mediates the exchange of data with the user (e.g., displays, buttons, fields, whether physical or virtual).
- System InterfacesAny interface with something other than a user, such as engineering logs, other programs, hard disk, network, etc.
- API/SDKAny programmatic interfaces or tools intended to allow the development of new applications using this product.
- Import/exportAny functions that package data for use by a different product, or interpret data from a different product.
Platform : Everything on which the product depends (and that is outside your project).
- External HardwareHardware components and configurations that are not part of the shipping product, but are required (or optional) for the product to work: systems, servers, memory, keyboards, the Cloud.
- External SoftwareSoftware components and configurations that are not a part of the shipping product, but are required (or optional) for the product to work: operating systems, concurrently executing applications, drivers, fonts, etc.
- Embedded ComponentsLibraries and other components that are embedded in your product but are produced outside your project.
- Product FootprintThe resources in the environment that are used, reserved, or consumed by the product (memory, filehandles, etc.).
Operations : How the product will be used.
- UsersThe attributes of the various kinds of users.
- EnvironmentThe physical environment in which the product operates, including such elements as noise, light, and distractions.
- Common UsePatterns and sequences of input that the product will typically encounter. This varies by user.
- Disfavored UsePatterns of input produced by ignorant, mistaken, careless, or malicious use.
- Extreme UseChallenging patterns and sequences of input that are consistent with the intended use of the product.
Time : Any relationship between the product and time.
- Input/OutputWhen input is provided, when output created, and any timing relationships (delays, intervals, etc.) among them.
- Fast/SlowTesting with “fast” or “slow” input; fastest and slowest; combinations of fast and slow.
- Changing RatesSpeeding up and slowing down (spikes, bursts, hangs, bottlenecks, interruptions).
- ConcurrencyMore than one thing happening at once (multi-user, time-sharing, threads, and semaphores, shared data).
- Code
-
Quality Criteria Categories Checklist Quality Criteria Categories Checklist
Capability : Can it perform the required functions?
- SufficiencyThe product possesses all the capabilities necessary to serve its purpose.
- CorrectnessIt is possible for the product to function as intended and produce acceptable output.
Reliability : Will it work well and resist failure in all required situations?
- RobustnessThe product continues to function over time without degradation, under reasonable conditions.
- Error handlingThe product resists failure in the case of bad data, is graceful when it fails, and recovers readily.
- Data IntegrityThe data in the system is protected from loss or corruption.
- SafetyThe product will not fail in such a way as to harm life or property.
Usability : How easy is it for a real user to use the product?
- LearnabilityThe operation of the product can be rapidly mastered by the intended user.
- OperabilityThe product can be operated with minimum effort and fuss.
- AccessibilityThe product meets relevant accessibility standards and works with O/S accessibility features.
Charisma : How appealing is the product?
- AestheticsThe product appeals to the senses.
- UniquenessThe product is new or special in some way.
- EntrancementUsers get hooked, have fun, are fully engaged when using the product.
- ImageThe product projects the desired impression of quality.
Security : How well is the product protected against unauthorized use or intrusion?
- AuthenticationThe ways in which the system verifies that a user is who he says he is.
- AuthorizationThe rights that are granted to authenticated users at varying privilege levels.
- PrivacyThe ways in which customer or employee data is protected from unauthorized people.
- Security holesThe ways in which the system cannot enforce security (e.g., social engineering vulnerabilities).
Scalability : How well does the deployment of the product scale up or down?
- DeploymentHow well does the deployment of the product scale up or down?
Compatibility : How well does it work with external components & configurations?
- Application CompatibilityThe product works in conjunction with other software products.
- Operating System CompatibilityThe product works with a particular operating system.
- Hardware CompatibilityThe product works with particular hardware components and configurations.
- Backward CompatibilityThe products works with earlier versions of itself.
- Product FootprintThe product doesn’t unnecessarily hog memory, storage, or other system resources.
Performance : How speedy and responsive is it?
- Speed and ResponsivenessHow speedy and responsive is it?
Installability : How easily can it be installed onto its target platform(s)?
- System RequirementsDoes the product recognize if some necessary component is missing or insufficient?
- ConfigurationWhat parts of the system are affected by installation? Where are files and resources stored?
- UninstallationWhen the product is uninstalled, is it removed cleanly?
- Upgrades/patchesCan new modules or versions be added easily? Do they respect the existing configuration?
- AdministrationIs installation a process that is handled by special personnel, or on a special schedule?
Development : How well can we create, test, and modify it?
- SupportabilityHow economical will it be to provide support to users of the product?
- TestabilityHow effectively can the product be tested?
- MaintainabilityHow economical is it to build, fix or enhance the product?
- PortabilityHow economical will it be to port or reuse the technology elsewhere?
- LocalizabilityHow economical will it be to adapt the product for other places?
- Sufficiency
Thanks for going through the list.
Do share comments if you have any ideas and help me improve in the same.