Testing and verification of network management and design tools

Testing large-scale software applications has been an area of activity for a long time. Today several fields like design patterns advocate very good practices that aim to ease the burden of testing. However, in practice, testing is often done in an ad hoc manner. Large-scale software systems like network management systems are tested against very specific system requirements, which tend to be inadequate. Such large-scale systems, comprising concurrent multi-threaded processes interacting with each other, often need to be tested for long periods of time (sometimes longer than the time taken to develop the system) before they are suitable for deployment on a live network. Despite such stringent system requirements, testing often takes a back seat, and sophisticated software tools, though available, are very rarely employed in system testing. Here we describe an engineering approach for testing and verification of network management and design tools. We describe a set of handy principles, algorithms, and testing architectures that have worked very well in practice and have achieved remarkable results. The paper derives heavily from our experience; we have developed several products for Lucent Technologies' Optical Networks organization over the last three years. © 2003 Lucent Technologies Inc.