What is a Test Matrix?
Matrices provide an easy structure for testing common issues. A common issue is an issue that repeats itself from project to project. Testing a common issue should be relevant to the project itself.
Examples for common issues are:
- Fields (integer, dates, time, etc)
- File names
- Printing
- Saving a file
- Deleting a file
- Sending a file
- Login process
- UI issues
- Other
Why is it important to learn "Test Matrix"?
There are several reasons why to learn and to do test matrices.
- It can reduce working time - once you have a matrix for a specific issue, it will take you less time to test it or to think how to test it.
- It is logical and testing challenging - It is a challenge to make your own matrix and to find common issues that are repeatable from project to project.
- In future projects it will save you time and it can give your more time to handle more complex issues.
- It’s fun (for those who have a testing mania like the writer).
The algorithm for creating a test matrix is:
- Find an issue that repeats itself from project to project
- Think of tests that you routinely perform on this issue
- Sort all the tests and put them in a matrix
Example
Let’s build a matrix for integer field. First, we will think and write all the tests that we can perform on an integer field:
- 0
- Valid value
- Lower boundary – 1
- Lower boundary
- Lower boundary + 1
- Upper boundary – 1
- Upper boundary
- Upper boundary + 1
- Nothing
- Negative value
- Special chars: < > ? , . / ; : ‘ “ [ ] { } \ | + = _ - ( ) * & ^ % $ # @ ! ~ `
- Uppercase chars
- Lowercase chars
- Spaces
- Leading spaces before the value
- Value follows with spaces
- Length lower boundary – 1
- Length lower boundary
- Length lower boundary + 1
- Length upper boundary – 1
- Length upper boundary
- Length upper boundary + 1
- Mix of digits, chars and spaces
- …
Now we will insert them into a generic matrix:
|
Integer field matrix
|
|
Field Name
|
|
|
|
Cases
|
|
|
|
0
|
|
|
|
Valid value
|
|
|
|
Lower boundary – 1
|
|
|
|
Lower boundary
|
|
|
|
Lower boundary + 1
|
|
|
|
Upper boundary – 1
|
|
|
|
Upper boundary
|
|
|
|
Upper boundary + 1
|
|
|
|
Nothing
|
|
|
|
Negative value
|
|
|
|
Special chars: < > ? , . / ; : ‘ “ [ ] { } \ | + = _ - ( ) * & ^ % $ # @ ! ~ `
|
|
|
|
Uppercase chars
|
|
|
|
Lowercase chars
|
|
|
|
Spaces
|
|
|
|
Leading spaces before the value
|
|
|
|
Value follows with spaces
|
|
|
|
Length lower boundary – 1
|
|
|
|
Length lower boundary
|
|
|
|
Length lower boundary + 1
|
|
|
|
Length upper boundary – 1
|
|
|
|
Length upper boundary
|
|
|
|
Length upper boundary + 1
|
|
|
|
Mixed of digits, chars and spaces
|
|
|
|
…
|
|
|
Now let use it for a project that contains 2 integer fields: “Age”, “Price”. For each field we will mark those cases we want to test.
|
Integer field matrix
|
|
Field Name
|
Age
|
Price
|
|
Cases
|
|
|
|
0
|
X
|
X
|
|
Valid value
|
X
|
|
|
Lower boundary – 1
|
X
|
|
|
Lower boundary
|
X
|
|
|
Lower boundary + 1
|
|
|
|
Upper boundary – 1
|
|
|
|
Upper boundary
|
X
|
|
|
Upper boundary + 1
|
X
|
|
|
Nothing
|
|
|
|
Negative value
|
X
|
|
|
Special chars: < > ? , . / ; : ‘ “ [ ] { } \ | + = _ - ( ) * & ^ % $ # @ ! ~ `
|
X
|
X
|
|
Uppercase chars
|
|
|
|
Lowercase chars
|
|
|
|
Spaces
|
X
|
|
|
Leading spaces before the value
|
|
|
|
Value follows with spaces
|
|
|
|
Length lower boundary – 1
|
X
|
|
|
Length lower boundary
|
X
|
|
|
Length lower boundary + 1
|
|
|
|
Length upper boundary – 1
|
X
|
X
|
|
Length upper boundary
|
X
|
|
|
Length upper boundary + 1
|
|
|
|
Mixed of digits, chars and spaces
|
X
|
|
|
…
|
|
|
This method gives you the power to change in each test cycle the cases that need to be tested for those fields, without investing many efforts on changing the STD document.
Practice 1
Create a matrix for saving a file. Try to solve it before continue reading.
Practice 1 - answer
- Save a new file
- Save a file with an existing file name
- Save in another format
- Save a file to a full disk
- Save a file to a write protected disk
- Save a file to a remote disk
- Save a large file and during the saving process print the file
- …
Practice 2
Create a matrix for a date field. Try to solve it before continue reading.
Practice 2 - answer
- Insert chars
- Insert numbers
- Insert day/month 0
- Insert day 32
- Insert month 13
- Insert year 90 (means 1990, 2090 ???)
- Insert other format of dates:
24/12/1978 and 12/24/1978
- Insert 16/9/2006 and 16.9.2006
- …
Practice 3
Create a matrix for login a system: username and password. Try to solve it before continue reading.
Practice 3 - answer
- Correct username and wrong password
- Wrong username and correct password
- Wrong username and wrong password
- Correct username and correct password
- Correct username and password like ‘select 1’
- Uppercase and lowercase
- …
Practice 4
Create a matrix for a char field with length x. Try to solve it before continue reading.
Practice 4 - answer
Practice 5
Create a matrix for deleting a file. Try to solve it before continue reading.
Practice 5 - answer
Practice 6
Create a matrix for testing an email field. Try to solve it before continue reading.
Practice 6 - answer
Practice 7
Create a matrix for testing a new screen that will be insert into the application. Try to solve it before continue reading.
Practice 7 - answer
- Test typo in screen title, buttons, fields and tables.
- Test that keyboard shortcuts work well when buttons are enable and lock when buttons are disabled.
- Check sorting at least 3 times on each column.
- If you have a search criteria, combine a search with several fields using a method named "all pairs".
- Create a test where the search is bring you one row, 2 rows, more then 2 rows and 0 rows.
- Create a test for clear the search (brings all rows).
- Create a search where in string/text field you are trying to insert a word contains the sign ' - if the programmer didn't handle it and you are working with XML files or with databases, you will get an error.
- If you can search by "starting with" or "contains with" test spaces and '.
- Test that each button is working as expected.
- Test the paging feature if you screen support in regular view and in searching results - sometimes there is a bug that paging in search result will bring the entire rows.
- Ttest the "yes", "no", "cancel" options in message box.
- Try to active/inactive a radio button and a check box field.
- Test that mandatory fields are really mandatory and that the message about it is correct.
- Test the close window button.