Platform testing, a chain with many links
Systems Sciences Institute at IBM reports that the cost to fix a bug found during implementation is around six times higher than the one identified during design, and 15 times more costly than when found during testing stage. Can you imagine how much money can be saved with a proper testing process in place right from the initial development stages?
And it’s not just about finding bugs or code that does not work as intended by the developer. Testing is crucial to ensure systems’ performance and effectiveness, right from its functionalities and end-user usability up to how it meets final business requirements and goals. Whether it is an in-house project or a solution delivered by a partner, every software needs to be properly tested just like any new product is tried before being launched into the market.
What do you need before you can start with functional testing?
As a project manager, you need a detailed plan. You need to establish a clear timeline for all the stakeholders, define priority areas to be checked and have accurate testing guidelines. You also need to know who is going to do the tests, which roles they will be assigned to and when they need to be freed up for this task.
As a tester, your role is just as important if not more. Being a good tester is a role on its own and whether you are doing this as a business owner, content editor, or any other role, you need to know exactly when and how you will need to test it, and which areas should you be focused on. As a dedicated tester, you need to have a clear view on the solutions requirements, both functional and non-functional. You need to understand the needs of different platform users and instill their mindset within your testing process.
Imagine that something was delivered, what should be the next steps? Get your testing checklist:
- What was delivered and more importantly, what not.
- What are the requirements of what I am going to test
- How do I test and where: can I log into the system, can I test with different browsers…?
- How am I supposed to report bugs, changes or questions?
- Are there any guidelines available to support testers?
Wouldn’t it be nice if this testing checklist is delivered along with the message that something has been delivered? Ideally, it should.
Testing stages and the different roles: Who tests and why?
For any reasonable sized project you would expect the following test roles:
- What: testing their own work with unit tests, basic functional tests, peer review
- When: throughout development
- Functional analyst
- What: sanity check, functional tests, usability and consistency tests
- When: Before and after every release (also the releases to the internal dev environment)
- Content editor:
- What: usability tests and functional tests
- When: After every release to the editor environment
- Product owner:
- What: Sanity check, functional tests
- When: After every release to non-developer environments
It may seem redundant to have a functional tester testing everything after the technical lead has approved a specific feature or functionality, especially knowing that the developers have written unit tests and done a peer review for that particular feature or functionality. However, it is important to keep in mind that developers have a different goal while testing and reviewing. When reviewing, they will make sure the code is good (and we could have a single blog post just about how we can define good code) and does what it was meant to do. But this doesn’t always mean it does what was functionally required, that it is intuitive or works in the whole of the solution. Moreover, tests are done by humans, and humans can make mistakes. This is why it’s so important to make further quality assessments throughout the testing phases.
The same goes for the product owner who also needs to do a lot of testing at the end of the line. The functional analyst could have overlooked an issue, a requirement could have been missing or after taking a look at it a change might be required.
The chain of testing is long, but very important and should not be saved on. When not properly conducted, by not detecting issues timely and hence slowing down the development, the whole solution might be jeopardized.