Testing plays a critical role in the software development process. You would never buy a car that hasn’t passed its emission or crash tests, so don’t work with a developer doesn't conduct proper testing.
If you don’t test your software as you build it, you face potentially waiting too long to discover bugs or flaws in logic that can render hours of work useless. There are many different types of testing, and each type of test serves a different purpose. Let’s take a look at unit testing, a type of functional test.
What is Unit Testing?
Unit testing is when specific parts or components of the software are being tested. You are breaking down the program into units, and testing them independently. It's important to know that unit testing is NOT the same as QA testing or end user testing. Check out our discussion on QA testing here. You aren't testing user scenarios or interacting with your product from the UI.
Unit testing is using code to test other parts of the code and logic. For example, if part of your software project requires you to pull a list of all users and perform some operations on the users, your unit test might validate that you are indeed pulling the users and look at the users before and after you perform the operation to make sure the expected result is achieved.
Unit testing is typically the first type of testing that is conducted. Ready to start unit testing? First, build your plan. Look at the different parts of your project that might be performing complex logic and establish the expected outcomes. Once you set your plan, get ready to prepare your cases or scripts. Prepare a list of inputs for each unit test with a list of expected outcomes, and make sure you're testing every edge case you can think of. Review the work you’ve put together and make sure the scripts you’ve written are only testing individual units, and not testing a lot of things at once.
Pros
- Your code is more reliable since you've tested for edge cases.
- Unit tests make it easier to catch bugs. If your scripts are running tests on each new unit, it is less time consuming to identify the bug and consequently debug it. Read up on bugs and bug testing here!
- Maintaining and changing code is easier when you have written new code. Since unit tests are running successfully for the existing code, we can more quickly identify specific areas that are causing issues.
Cons
- It is time consuming as writing individual tests is not a simple task.
- You cannot identify every bug through unit testing.
- It doesn’t guarantee quality. Even if the individual units are passing, if the tests weren't written in a way that encompasses all major units of your code, it won't guarantee your entire codebase is solid.
Ultimately, conducting unit testing allows the developer confirm the accuracy of each individual unit within the software. Does it take time? Yes. Does it find every issue? No. Is it worth it? Based on the pros, we’d say so.
Have any further questions about unit testing? Reach out to us at [email protected]!