In computer software development, unit tests are special tests that are typically performed by developers. Each test is based on a modular unit of work. Automated unit testing refers to the processes in which test scripts are run against software code to validate the modular units. These unit tests are completed by the development team before the software code is integrated into the application.
Software developers should unit testing because it is accepted as a standard development best practice. Automating these unit tests provides better overall coverage of the application. This is because more time can be spent on writing automation scripts rather then performing manual testing tasks. A quality set of automated unit testing ensures a better quality product will be delivered to the consumer.
Typically in software development testing is the final phase before a system is ready for delivery. Many modern development techniques have moved this testing phase to the middle of the process. In this model, automated unit testing is coded prior to coding and business logic within the application.
Most agile development approaches require a process for writing and designing unit tests before coding. This ensures the developers write code for testing purposes. It also reinforces what the module is expected to do. The unit tests are essentially the scripts that will test the application modules. Automated unit testing is the chaining of these test scripts into one automated test.
A seasoned developer understands the importance of unit testing. These test scripts can be re-used for future releases as a form of regression testing. This special testing allows software to be re-tested with each new version of the software code. Automated regression testing includes a full cycle of automated unit testing processes.
Another benefit of automated testing is better reporting metrics for development managers. With automated unit testing a manager can see how well a development team is performing. These reports are typically available within the framework of an automated testing suite on a real-time basis.
There are many software applications that are specifically designed for automated unit testing. Junit is an example of an open-source version of testing software that is used for testing Java® software. This software can be easily imported into most integrated development environments (IDE) as a plug-in feature.
Commercial versions of testing software are also widely available. These software packages provide a suite of testing tools for software developers. Commercial testing products typically work with multiple development software packages, which makes them reusable.