# Testing Standards

Esta seção descreve a forma como os testes são realizados nos diferentes serviços e UIs através dos projetos Decentraland.

As palavras-chave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" e "OPTIONAL" neste documento devem ser interpretadas conforme descrito em [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119).

## Visão geral

Testes são uma parte crítica do nosso processo de desenvolvimento. Mantemos padrões elevados de cobertura e qualidade de testes em todos os nossos projetos. Esta documentação fornece diretrizes abrangentes para:

* [**Escrever Testes**](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/testing-standards/writing-tests) - Princípios e padrões gerais para escrever testes claros e fáceis de manter
* [**Testar UIs**](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/testing-standards/testing-uis) - Testar componentes React, sagas do Redux, reducers, selectors e action creators
* [**Testing Services (Well-Known-Component)**](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/testing-standards/testing-services-wkc) - Testar serviços modulares construídos com a arquitetura well-known-component
* [**Testar Serviços (Depreciado)**](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/testing-standards/testing-services-deprecated) - Abordagem legada para testar serviços (para referência)
* [**Testes End-to-End**](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/testing-standards/testing-e2e) - Testes E2E com Cypress (Trabalho em Andamento)

## Filosofia de Testes

Nossa abordagem de testes enfatiza:

* **Clareza** - Os testes devem ser autoexplicativos e fáceis de entender
* **Manutenibilidade** - Os testes devem ser fáceis de atualizar quando os requisitos mudarem
* **Isolamento** - Cada teste deve rodar de forma independente sem afetar os outros
* **Cobertura** - Todos os caminhos críticos e casos de borda devem ser testados
* **Valor** - Os testes devem proporcionar confiança de que o código funciona conforme esperado

## Links rápidos

* [Como descrever contextos com `describe`](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/writing-tests#describing-and-building-context)
* [Como escrever expectativas com `it`](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/writing-tests#describing-expectations-and-executing-code)
* [O que testar e quando](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/writing-tests#what-to-test)
* [Quando e como simular (mock)](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/writing-tests#when-to-mock)

## Related Standards

* [Gerenciamento de Dependências](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/dependency-management) - Gerenciando dependências npm e peerDependencies
* [Padrões de UI](https://github.com/decentraland/docs/blob/main/contributor/contributor-guides/ui-standards/README.md) - Padrões do Redux e RTK Query
* [Documentação da API](https://docs.decentraland.org/contributor/contributor-pt/guias-para-contribuidores/api-documentation) - Padrões de documentação OpenAPI
