This model aims at creating tests keeping in mind what pattern needs to be followed for such tests.
It is intended for use by professional testers for the purpose of self learning. A typical heuristic model includes a project environment under which there are testing techniques which aims to predict the quality criteria and product elements.
Hence the key areas of this model are -
Project Environment - It includes the resources and constraints associated with the project that may impact our testing.
Product Elements -These are the elements/areas that one intends to test. The objective is to cover all relevant and crucial areas that needs attention.
Quality Criteria -It defines the rules, values and sources that helps a tester to identify if a product has got some problems or not.
Test Techniques -This helps in creating tests. Every technique involves analysis of project environment, product elements and quality criteria.
Perceived Quality -It is the result of testing. By applying various testing methods, we can reach at a conclusion about the quality of the software application.
A heuristic is an observation based model which involves learning and evolving. Apart from heuristic we have few techniques that are applicable everywhere, that is , they are universally applicable everywhere.
They can be explained as follows :
Function Testing -This is about being able to identify the functions a product can perform. Determine what each function is capable of doing and thus test each component and validate the functions and its related sub functions.
Domain Testing -The test data is separated , pertaining to different functions. A tester decides which data needs to be tested with. Aspects like boundary values, typical values, convenient values, invalid values etc. Should be taken into consideration along with various combinations of data.
Stress Testing -This is the verification of the extent of sustenance of load by the system. Identify those sub-systems and functions, and their related data and resources. The aim is to select necessary constraints or stress conditions to test the system under a real scenario. The constraint could be - large or complex data structure, high loads, long test runs, low memory conditions.
Flow Testing -Flow testing aims to check the flow or sequence of a program. It is an end to end connection of activities. For instance, a program is expected to execute the loop portion on evaluating a certain condition to be true.
Scenario Testing -This is simply taking into account the various facts that revolve around a product. Hence design the tests that consists of a complex but meaningful interaction with the product. This indeed brings out the core meaning of the system/product in response to a given situation.
Claims Testing -Take into account various claims about the product under test. Identify the resources that include claim about the product like magazines, advertisements, specifications etc. One may consider applying those specifications that are external to the product by verifying the accuracy of the product.
User Testing -User testing aims at identifying the roles of users at different points. This is usually done by preparing test cases and determining how user interacts with the system. The idea is to bring in real users at one place and apply the real user data. User testing primarily aims at getting into a real user's shoes and be able to analyse and apply the test data through a user's perspective.
Risk Testing -Think of a real world problem in natural circumstances, and try to look out for a possible solution. Being able to foresee the probability of occurrence of a certain kind of problem, the impact it is going to have on the product etc, is what risk testing is about. Prepare a list of all the issues and try to figure out a solution by designing appropriate test cases to reveal such occurrences. One may seek help from past bug reports, design documentation or simply apply risk heuristics.
Automatic Checking -This talks about automation testing of the product. A wise selection of an automation tool can make much difference. Consider tools that may use a technique of partially automating test coverage, use of automatic test data generators etc.
Adopting a heuristic model can prove to be an advantage. So while applying heuristic in the selection of a project environment, a tester shall keep in mind few key factors :
The purpose of the project under consideration must be clear, from the point of view of a customer as well as the tester.
Details about the project should be concise, that is, what, when and how about the project should be understood well.
Define and analyse tester-developer relationship. Determine the degree of knowledge a developer possesses about the product, how comfortable are they with the test coverage criteria etc.
Well versed with the kind of tools - hardware/software to be used in the process of product testing.
While selecting product elements, one has to picture the following facts :
Every aspect that forms the structure of a product.
Every function that a product performs.
The data to be used in the process of project's testing, in terms of its persistence, combination with other data, interactions etc.
Defining the interfaces which is used to access the product/system. Interfaces include the display, buttons, hard disk, network etc.
Identifying the way a product is to be used.
Defining quality criteria is important in the context of determining how the product shall be, actually. Quality criteria involves consideration of factors like - capability, reliability, usability, security, scalability, compatibility, performance etc.
Testing has its own challenges. Over the years there have been several strategies devised to deal with the difficulties involved in testing. A heuristic model is such a representation. Based on past experiences , gathering past data helps to resolve testing, to a great extent.