# Testing (And The Freedom To Choose Your Tests)

Like the [freedom of choice for technology for our teams](https://infobipengineering.gitbook.io/handbook/become-a-better-engineer/freedom-to-choose-your-engineering-hammer), the same applies for the types of tests used. Each team picks, defines, writes and conducts their own tests. E.g., a team developing an API backend can write in their programming language, framework and tooling, and write tests in that particular ecosystem.

Backends written in Java can use:

* AssertJ library for writing assertions;
* JUnit for unit tests;
* SpringBootTest framework and Mockito testing framework for mocks for integration tests;
* Test containers or any other tool of choice you have in your arsenal.

Other languages can use their specific testing libraries and frameworks.

However, you're not alone in all of this. Providing quality service to our customers is one of Infobip‘s top priorities. We've got you covered in two different ways, one where you can help yourself, and another where we help you even further:

1. **The CI/CD pipeline:** When you create a change in code that you covered with tests, new version of your service is built inside Jenkins only if your tests pass. And once you have a proper release version, it is deployed on our proprietary Deployment Manager tool. There your service will be deployed via Canary deployment procedure - only allowing partial traffic to flow into your new instance and reverting the deployment if it encounters errors. Deployment Manager can also run smoke tests and optional pre- or post- deployment hooks for any custom testing or service logic you require. All this exists to safeguard you from deploying a faulty service to our test environment, and after that, to production.
2. We went so far to even create a department called **Quality RA** (more on Requirement Areas on organizational structure part) which helps when things get hairy. Teams within Quality RA have specialized skill-set for quality control and test automation while also having vast knowledge about Infobip platform in general. They perform testing and write automated end to end tests to cover that the core product functionality works as intended on every change.

Having various test steps throughout your deployment flow shows how serious we are about quality. From static code analysis, unit and functional testing, through end-to-end and stress testing, all the way to disaster recovery testing - we do it all. And you are covered every step of the way.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://infobipengineering.gitbook.io/handbook/how-we-code-and-deploy/testing-and-the-freedom-to-choose-your-tests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
