# Learn how Umbraco works

Developing an application requires knowledge about the tool you are working with. This section will give you an introduction to the underlying structure of Umbraco CMS.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Routing</strong></td><td>The process from front-end user requests to content delivery.</td><td><a href="default-routing">default-routing</a></td><td><a href="https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-19eda19e1880547dad43423b16572250bd3f12cb%2Frouting-image.png?alt=media">routing-image.png</a></td></tr><tr><td><strong>Custom routing</strong></td><td>Learn how to work with custom URLs and custom MVC routes.</td><td><a href="custom-routing">custom-routing</a></td><td><a href="https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-6ef562a21393890105db290d3b3ed1b689bec360%2Fc-routing-image.png?alt=media">c-routing-image.png</a></td></tr><tr><td><strong>Controllers</strong></td><td>Everything you need to know about the different types of controllers.</td><td><a href="controllers">controllers</a></td><td><a href="https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-18d83567ff44b9c7003e5bb45bec51fb8087c597%2Fcontrollers-image.png?alt=media">controllers-image.png</a></td></tr><tr><td><strong>Data persistence</strong></td><td>Learn how to create, read, update, and delete data in the Umbraco database.</td><td><a href="data-persistence">data-persistence</a></td><td><a href="https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-33c7e6e117c9d2e064925b3f85abd7d51c8a5f19%2Fdatap-image.png?alt=media">datap-image.png</a></td></tr><tr><td><strong>Composing</strong></td><td>Customize the behavior of an Umbraco application at 'start up'.</td><td><a href="composing">composing</a></td><td><a href="https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-84114e14334b77f533d97f61a7d2cda8dcc46b16%2Fcomposing-image.png?alt=media">composing-image.png</a></td></tr><tr><td><strong>Services and Helpers</strong></td><td>Learn how to use the core Services and Helpers when extending Umbraco.</td><td><a href="services">services</a></td><td><a href="https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-7a6268434f90cd2974a250f8c893ba87c20fd4d0%2Fservices-image.png?alt=media">services-image.png</a></td></tr></tbody></table>

## Test your application

This section also includes documentation on different ways to run tests on your code and implementations.

{% content-ref url="integration-testing" %}
[integration-testing](https://docs.umbraco.com/umbraco-cms/implementation/integration-testing)
{% endcontent-ref %}

{% content-ref url="unit-testing" %}
[unit-testing](https://docs.umbraco.com/umbraco-cms/implementation/unit-testing)
{% endcontent-ref %}
