← Back to Blog

Different Testing Techniques as a developer

πŸ—“οΈ 20 July 2025 ⏱️ 5 min read ✍️ Ege Erdogan
⚠️ Note: Everything I share is based on my own experience and what I've learned. These are not guaranteed to be the only correct answersβ€”always think critically and consult other sources.

What are Unit Tests?πŸ”—

The first, powerful and most straightforward testing type can be unit-testing. However, I still see some misunderstandings on how to apply them. The main idea is to write tests inside your application while targeting small parts. Unit-tests live inside your project. The things that you need be careful:

What are Component Tests?πŸ”—

The second level of tests can be component tests. Component tests' scope is a single service itself not just a function of the application like unit tests. Thus, you actually need to deploy your service. However, mock everything outside of your service.

πŸ‘‰ Let's say you have a microservice A which interacts with microservice B, and if you want to write a component test for microservice A. Just deploy microservice A, and mock any expected response from microservice B.

What are System (Integration) Tests?πŸ”—

The third level and the one with the most coverage is system (integration) tests. In these tests, you need to deploy your product as a whole. i.e. Deploy all microservices, deploy any Identity and Access Management (IAM) component. The idea of integration tests are to test business cases. Show interactions across different services, and prove that you achieved expected results for your features.

πŸ‘‰ Let's say you were implementing a feature about "adding users". Your tests may show: But, do not try to cover all edge cases of "retrieving user API of microservice B" from system-tests. You should cover edge cases in your unit-tests and component-tests. Integration tests should show that interactions between different services work as expected, not a single service's feature works as expected.

What are Load Tests?πŸ”—

Load tests are used to check performance of the whole system under some expected load. Thus, you need to deploy everything in your product similar to integration tests.

πŸ‘‰ Let's say you expect around 10k users to call one of your APIs at the same time. Then, you need to call your API 10k times simultaneously, and note down your performance metrics such as response times, http codes, resource usages.
If you go further than your expected users load to the point of breaking your system, load tests become something called stress testing. In this case, the idea is to observe what happens when your system breakdowns, and how it recovers.

What are Fuzz (Fuzzy) Tests?πŸ”—

Although I did not write a fuzz test in my work environment, I worked with it during one of my master course. Thus, I can talk about it πŸ˜† Fuzzy testing is all about bombarding your system with unexpected, weird, broken, random inputs. The overall idea is to see behavior of your application under unexpected inputs.

An application should not crash, freeze or shout out different exceptions under weird inputs from user. Example input of such fuzz test can be: @@*?@###\x00\xFF
Fuzz tests usually use specific program to create large volumes of these weird inputs. Then, these tools record behavior of your application, alongside with their memory states to ensure there is no memory leaks too.

⚠️ Note: I know that there are more different testing techniques than these above ones. However, I did not need to touch other techniques as a backend developer, so I don't have experiences on them. That's why I did not talk about them. You can just google "software testing techniques", and see numerous techniques 😀

Some Personal Real Life PracticesπŸ”—