I have been asked to describe the value we can get from functional tests automatisation.
Systems with feedback loop.
System with feedback loop usually adapts its behavior according to the outer conditions, for that system needs sensors to catch outside changes. The most trivial example can be the system of traffic light. The most simple traffic lights have certain interval for switching lights. They don't have feedback loop. Now imagine, that you are standing at such kind of light and waiting for 5 minutes, although it is late night and there is no cars on the crossing road :( To improve your customer experience ;) this system should be upgraded with sensors, which will check for cars on the road and switch lights according to that. Now it is the system with feedback loop, it changes its behavior according to traffic conditions.
Feedback loop is needed to be able to react to changes faster.
Tests are sensors of software development system.
Tests in general can be treated as sensors for software development system. As soon as tests find unexpected behavior, developers react and fix them or alter changes made to the system. Now it comes to reasons, why we have to automate tests.
Fast sensors
Everybody agrees, that we should find bugs as fast and early as possible. Ideally the next second after developer introduced a bug into software it should be found out. Unfortunately we don't live in that ideal world, but automatisation can bring us much closer to it. Having automated functional tests, we can use them to check, did developer changes affected existing functionality or not.
Continuous integration
Continuous integration is used for assuring, that developed system is constantly in a good shape, every peace of software written by different developers, pairs or teams integrates with each other successfully and behaves according to expectations. Currently our continuous integration process includes source code automatic analysis, software building, automated unit testing. Unfortunately it is not enough to assure, that accepted business functionality behaves the same way, as it has been behaving before changes. Those kind of tests currently is done manually only during final release test, which may happen even months after changes has been done. Our sensors are so sloooow.
Good system design
Good system design can be achieved only through constant process of design improvement. You can not make good design well once and then relax. Constant improvement of design means, that parts of the system, where some bad design smells are found, refactored to better structure. Refactoring means changes which does not affect behavior but improve internal structure of the system. Refactoring requires a lot of courage from developers: while changing structure it is always possible to break something. Automated tests give that courage to developers.
Our system
Our system is full of bad design smells. Developers afraid to change it, because something can broke. There are two options to improve situation:
1. We can start from scratch, but we will run into the same problems after some time without automated functional tests.
2. We can create automated functional tests for existing system and then start to refactor it, getting its design better and better.
In conclusion I can say, that need for functional tests automatisation is obvious, and I can not understand those people, who is still doubting in that.
Subscribe to:
Post Comments (Atom)
1 comment:
Thanks for sharing the post..Feedback from the end user matters a lot in case of testing. Really nice post shared.Thanks for sharing the post..
Automatisation Tests
Post a Comment