What is Unit Testing? 

Unit Testing

Is a type of software testing where individual units or components of a software are tested. The purpose is to validate that each unit of the software code performs as expected. Unit Testing is done during the development (coding phase) of an application by the developers. Unit Tests isolate a section of code and verify its correctness. A unit may be an individual function, method, procedure, module, or object. 

In SDLC, STLC, V Model, Unit testing is first level of testing done before integration testing. Unit testing is a Whitebox testing technique that is usually performed by the developer. Though, in a practical world due to time crunch or reluctance of developers to tests, QA engineers also do unit testing. 

Why perform Unit Testing? 

Unit Testing

is important because software developers sometimes try saving time doing minimal unit testing and this is myth because inappropriate unit testing leads to high-cost Defect fixing during System Testing, Integration Testing and even Beta Testing after application is built. If proper unit testing is done in early development, then it saves time and money in the end. 

Here, are the key reasons to perform unit testing in software engineering: 

  1. Unit tests help to fix bugs early in the development cycle and save costs. 
  1. It helps the developers to understand the testing code base and enables them to make changes quickly 
  1. Good unit tests serve as project documentation 
  1. Unit tests help with code re-use. Migrate both your code and your tests to your new project. Tweak the code until the tests run again. 

Unit Testing Advantage 

  • Developers looking to learn what functionality is provided by a unit and how to use it can look at the unit tests to gain a basic understanding of the unit API. 
  • Unit testing allows the programmer to refactor code at a later date, and make sure the module still works correctly (i.e. Regression testing). The procedure is to write test cases for all functions and methods so that whenever a change causes a fault, it can be quickly identified and fixed. 
  • Due to the modular nature of the unit testing, we can test parts of the project without waiting for others to be completed. 

Unit Testing Disadvantages 

  • Unit testing can’t be expected to catch every error in a program. It is not possible to evaluate all execution paths even in the most trivial programs 
  • Unit testing by its very nature focuses on a unit of code. Hence it can’t catch integration errors or broad system level errors. 

Unit Testing Best Practices 

  • Unit Test cases should be independent. In case of any enhancements or change in requirements, unit test cases should not be affected. 
  • Test only one code at a time. 
  • Follow clear and consistent naming conventions for your unit tests 
  • In case of a change in code in any module, ensure there is a corresponding unit Test Case for the module, and the module passes the tests before changing the implementation 
  • Bugs identified during unit testing must be fixed before proceeding to the next phase in SDLC 
  • Adopt a “test as your code” approach. The more code you write without testing, the more paths you have to check for errors.