2020-05-05
As a developer, our main task is to build and develop a software as the requirement list. In a perfect world, that code that we develop will be 100% bug free and working as expected. Sadly, in a real world, it will be very difficult if not impossible to develop a 100% bug free code. That is why we need testers in a software development process. A tester main task is to break the code and find as many bugs as possible.
During my experience as a developer, I quite enjoyed working along side with testers, in fact we had a good relationship. The more they did testings on my code, the more confident I am developing it.
Communication is essential in here. The tester need to understand the scope and limitation of the features that they are going to test, and what will be the expected behaviour of those features. And ideally the tester will also give as many detail as they can when reporting a bug or raising an issue during the testing process. It will be best if the tester can also give the steps to reproduce, so the developer can replicate the issue and investigate it further.
So when we are developing a feature, the more we go into 'test -> bug found -> bug fixed -> test' cycle, the more robust that feature will be.
In terms of testing, there are various method and levels. Mainly the methods are divided into two: manual and automatic. Manual means the tester will execute the testing process manually, for example: they click a specific button, input a certain value, etc. Automatic means the tester will write a script and then execute it and the script will do all the jobs for clicking buttons, entering values, etc. Where as for levels, usually developers will do the unit testings, and then testers will start from integration testings to test the interaction or integration between units, and then regression testings will be done after bug fixes or any changes made to the system.