null++: بالعربي

Episode[14]: Unit Testing 101

Episode Summary

Welcome to the Fourteenth episode from null++ podcast. Today, we will be talking about a very important - underserved- topic which is unit testing. In this episode, we will walk through why unit testing is important, best practices when it comes to testing, the concepts of mocking and stubbing, and code coverage. We hope you enjoy this episode and don't forget to subscribe to the show, leave a review with your feedback and please do share the show if you find the content valuable.

Episode Notes

Because of the high complexity and depth of this episode, we will share with you the episode outline and the topics discussed here as a reference.

Episode Outline:

What is unit testing?

test for the smallest possible pieces of your program.

كل حاجة فيها سليمة بس لوحدها - سلطان السكري

Why Unit Testing

  1. Help the developer deeper understand the logic he/she is implementing.
  2. Help developer writes more modular, loosely coupled code.
  3. Make it faster to develop and debug. (You can fake all the possible scenarios and see how the test is responding to each)
  4. Find bugs early.
  5. Help with documenting the code you are doing.
  6. Help when it comes to refactoring.
  7. It helps to automate the development process and decrease deployment-related friction.

Unit Testing Best Practices

1- Identifying Units:

When it comes to the unit you are testing, you need to answer three questions.

a. What is the output of this unit?

b. What helper functions that this unit is using to achieve that output?

c. Are there any side effects resulting from this unit. (it modifies state variables outside its scope).

2- Naming & Description

Why? it makes the test easier to read and hence easier to figure out what went wrong.

Describe & It. (This thing / should or does something)

- The search function should return an array of strings matching the search keyword.

- The search function should return an empty array when a keyword is not matching any.

- throw an exception if the keyword is an empty string.

3- Mocking & Stubs

- The unit test is 50% mocking and 50% clean code.

Check the resources section.

 

References:

Episode Picks: