The value of automated tests are no more evident than when one realizes that as the software keeps changing, things which were fixed previously remain fixed.
It is important to test individual features as part of development. One can use tools to find out code coverage to ensure that the tests cover as much of the code as possible. Also, all the condition/decision branches need to be covered.
Along with this, as bugs are discovered in the system, it pays to add automated tests to test the fixes for these bugs.
These days, it is common to see software development and operations being combined into one practice. This has come to be known as DevOps. This is an interesting phenomenon that has come about as the business and engineering models of software has undergone changes over the years. Software has gone from having release cycles of 1-3 years to release cycles of less than 3 months.
One of the strengths of software has traditionally been that, because of iterative development and testing, software keeps getting better over time. Some of the older, entrenched softwares (such as GNU/Linux etc) are today of excellent quality because of having had thousand of people look at the code, modify it, test it and fix bugs. This aspect of iteratively improving software has not changed.
However, the mentality of having longer development cycles has given way to having short cycles. With all these changes happening, it seems natural that a new type of software practice – DevOps – has come about. This combines the duties of software development, automated testing and release.
The end result seems to be that customers can now rapidly receive new releases. It remains to be seen if the industry will become better off over the next few decades because of rapid development cycles. Now, bugs can be fixed and software delivered on time to customers quickly. But, in the long run, it seems that software will continue to take as long as before reaching solid quality.
Good and great software documentation is written from the perspective of the user. It includes all the necessary API documentation, lots of examples and a lot of guides explaining various common use cases.
One of the key principles of software engineering which I have picked up over the years is the importance of testing your code. This is why I really like test-driven development. I have found that writing tests right at the beginning of your development is crucial. No matter whether you are updating some existing code in an old codebase or you are writing fresh code in a new codebase, I think testing your code from the beginning is a really helpful technique.
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test…
Network automation is one of the most important things to be achieved in the next few years. This will help with improved experiences for customers of network vendors. It will, in the long run, turn out to be beneficial to the end user, who will experience better quality of service at reduced price. This is also an exciting opportunity to contribute towards this goal!