Monday, January 27, 2014

Test automation would be your system's knowledge source

Manual testing (whether it is developer/unit level testing, or acceptance testing or even system level integration testing) has one one major problem (though it has some advantages). Software testing involves gathering lot of knowledge about the system associated with on what the system should do and should not do. It involves domain knowledge, business processes, business logic, business rules, workflows etc.

Over the time of system's development life-cycle, this knowledge is elicited, gathered and acquired by the development team and used to build the system. On certain things, even business owners/stakeholders also gets enlightened over the time period during the course of system development which they forget why such a decision was made to build the way it is behaving today.

Using this system knowledge, the testing team constantly verifies and informs the developers and make sure the system is doing what it should be by testing the interdependent modules time-to-time. This knowledge of what the system should do and should not do (business processes/logic/rules etc.) will reside in developers' minds and majority would be in testers' mind. It spreads across the team members.

And the problem is "If they leave the organization, the knowledge walks out with them". It will take considerable amount of time to extract them from the code. There will be huge amount of effort goes in this task. Meanwhile if system maintenance would be jeopardized.

Over the time, as system getting growing and getting big, it would also very difficult to carry everything in mind!!!

It would be very difficult to document these and keep updated. They can any point of time go out of date. The most up to date document is source code. Referring outdated documents are even danger than no documents. It can put into wrong direction. Code comments are also the same.

With automation, the system can be documented and kept up to date all the time. We can easily identify the tests not in use and remove them. Any members who joined lately and testers can easily make changes to the system without any fear of breaking it. This way one can easily change the system over the time and kept it update. It would also very easy to read the tests and understand it.

So try automating the system testing as much as possible.

There are some caveats in automating everything that would be a topic of another post.

No comments:

Post a Comment