The majority of my placement year has been spent working on a testing environment mainly creating end-to-end behaviour driven development tests. Although I much prefer development this has been an interesting experience working on a different aspect of software development. So I wanted to share a few thoughts on what I have learned testing software.
A LOT of domain knowledge….
Coming in to a company as a tester can be difficult as it requires a lot of domain knowledge and experience with the current systems. Something which sadly you can’t google. You may be tasked (like myself) with sharing information throughout the whole system which comprises of A LOT of systems. You are reliant on documentation and learning from your co-workers. It is important to keep good notes on the system you are using so you have something to fall back to. Creating personal troubleshooting guides was a way I was able to keep note of common problems.
The most difficult aspect of this I found was having a dependency upon co-workers for information if I was unsure of how to navigate a problem which required domain experience to find a solution. Sometimes co-workers aren’t available so prepare for this and use your initiative to find other pieces of work.
A great piece I found on the internet describes it as
“As a tester, it is important to understand individual components of the system and how they interact with each other under given circumstances. The presence of multiple stakeholders in modern businesses makes it tough to understand the complete working of these systems. This needs focussed attention on individual components.”
Be flexible, be agile
In line with your projects software development process you need to be flexible. Often a release is needed to be made to your customer regularly. So the testing requirements frequently change dependent on what has been developed for that release. Therefore as a tester you need to be flexible to switch and adjust. This also may require re-prioritising your sprint tasks and managing time efficiently so that testing can be completed in line with the customers’ expectations. Moreover new builds of the software can be released daily so bugs may need retested continuously.
Following on from and in connection with being flexible, as a by-product requires being organised. Keeping up to date with the work you are currently on, making notes and reports about bugs. Bug reports require clear reproduction steps and information so that developers can recreate the issue.
Often you have a huge amount of information to deal with about multiple systems. This information can be displayed in different ways and mediums i.e spreadsheets, word documents and online wiki’s. The ability to organise and manage this information in a relevant way is important to be an efficient tester. I often managed the information from different sources by collating the data and creating my own resource which was more relevant to the task at hand.
Finally the last skill I learned was the importance of communicating with others. It is likely different aspects of the system have been created by different developers. Communicating with the developers of the team to clarify and raise queries over code is a daily occurrence.
Being able to concisely explain the problem in either written or verbal communication allows for a quicker resolution of the issue. This is especially true if you are working with a big team who are busy working towards sprint deadlines. Therefore it is important to be a friendly, open communicator to enable testing to be carried out more efficiently.
To summarise testing has been an eye-opening experience in many ways. It has helped me understand the importance of testing and the importance of good programming concepts as it is often the testers who are trying to decipher code. This will hopefully make me a better programmer in the future.