Cookie Consent by Free Privacy Policy Generator website Como ter certeza que meu código esta bem testado Seite: 1 u

Portal Nachrichten


➠ Como ter certeza que meu código esta bem testado

Você testa bem seu código?

Geralmente, a métrica que utilizamos para cobertura de testes é o coverage, normalmente calculado como parte de automações através de serviços como codecov ou CircleCI, essa métrica se dá normalmente através de linhas de código executadas em algum arquivo de teste, ou seja, se o código foi executado em algum teste ele é contabilizado como "testado".

Para os mais entendidos, sabemos que execução puramente não nos trás segurança para dizer se algo está satisfatoriamente coberto ou não, existem diversos outros fatores que influenciam na qualidade dessa cobertura, entre eles podemos citar:

  • Tipos de testes. A famosa pirâmide de testes, unitários, integração, E2E...
  • Caminhos do código e valores de input/output. Condicionais, intervalos de valores, valores null, tipos, etc...
  • Estado dos componentes que envolvem o teste. Normalmente em testes de integração ou E2E, temos que ter muito cuidado para não gerarmos testes com falso positivo ou intermitentes (flaky, que passam arbitrariamente dependendo do estado, seja por não "limpar" o banco de dados, fila de mensagens, etc...)

Dito isso, hoje quero trazer um pouco de minha experiência falando de "caminhos de código, valores de input/output"

Apresentando o MC/DC

MC/DC ou "Modified Condition Decision Coverage" é uma técnica de cobertura de testes para condições lógicas, ou seja, A > 18 AND B < 60.

A vantagem do MC/DC é que ele consegue reduzir drasticamente o número de casos que vamos implementar em nosso código de teste, sendo a redução de 2^n casos para (n+1).

Vou tentar ilustrar a técnica com a seguinte condição lógica A AND (B OR C)
A, B ou C seriam condições booleanas quaisquer, do dia a dia do seu código, por exemplo:

A = FeatureFlag.on()
B = order.is_enterprise()
C = order.shipping <= SHIPPING_COST_LIMIT

Pela tabela verdade, teriámos 2^3 casos, ou seja, 8 combinações possivels. Porém conseguimos reduzir este número para 4 utilizando o MC/DC.

--+---+---+---+---+--
  | R | A | B | C |
--+---+---+---+---+--
  | 1 | 1 | 1 | 1 |     A - é relevante (1, 7)
--+---+---+---+---+--
  | 1 | 1 | 1 | 0 |     C - é relevante (1, 2)
--+---+---+---+---+--
  | 0 | 1 | 0 | 0 |     B - é relevante (2, 3)
--+---+---+---+---+--
  | 1 | 1 | 0 | 1 |
--+---+---+---+---+--
  | 0 | 0 | 0 | 0 |
--+---+---+---+---+--
  | 0 | 0 | 0 | 1 |
--+---+---+---+---+--
  | 0 | 0 | 1 | 1 |
--+---+---+---+---+--
  | 0 | 0 | 1 | 0 |
--+---+---+---+---+--

# R = Resultado da expression A AND (B OR C)

Resumidamente, com MC/DC precisamos achar os pares de expressão onde mantendo o resto constante e alterando somente a booleana analisada, alteramos o valor do resultado da expressão inteira.

Para exemplificar:
Vamos começar olhando pra booleana A.
Na linha 1, temos A = 1, B = 1 e C = 1.
Na linha 7, temos A - 0, B = 1 e C = 1.
Nesse exemplo, alteramos o valor de A mantendo B e C constante, logo, essa dupla de linhas é relevante para nosso caso.
Fazendo o mesmo raciocínio para o B e C, achamos os pares (1, 2) e (2, 3) respectivamente.
Dessa combinação, excluindo as linhas repetidas, ficamos com o resultado (1, 2, 3, 7).

Perceba como reduzimos o número de casos de teste de 2^n = 8 para (n+1) = 4.

Com esses casos em mãos podemos agora simplesmente implementá-los garantindo uma ótima cobertura sem de fato ter que implementar todos as possíveis combinações.

...


➦ Programmierung ☆ dev.to

➠ Komplette Nachricht lesen


Zur Startseite

➤ Ähnliche Beiträge für 'Como ter certeza que meu código esta bem testado'

⚔React vs. Vue.js: A Batalha dos Gigantes do Front-end

vom 3346.17 Punkte
Se você é um desenvolvedor iniciante ou alguém procurando mudar para um novo framework, esta batalha épica irá ajudá-lo a entender as semelhanças e diferenças entre React e Vue.js. Vamos explorar o que torna cada um deles especial, comparar se

Eu sou um falso Developer Advocate

vom 2325.34 Punkte
Sumário 1. Prólogo 2. Criador de Conteúdo por ACIDENTE 3. Apenas um Grupo de Amigos kkkk 4. Big Brother Brasil com JavaScript e PHP 5. Um novo grupo e "A Missão mais imporante" 6. Ações tem Consequências na vida de um "Dev de Palco" 6.1

Elevando o nível do terminal: customizando suas funcionalidades

vom 1970.29 Punkte
Índice Apresentação Introdução O que é terminal? Alguns tipos de shell Bash Zsh Fish Customizações para cada shell Arquivos de configuração Visual Bash e oh-my-bash Zsh e oh-my-zsh Fish, oh-my-fish, fisher e z Nerd Fonts Conclusão Apresentação Se

22 Extensões do Chrome focadas em produtividade para Desenvolvedores, Techs e Designers

vom 1785.18 Punkte
Extensões do Chrome O Google Chrome é o navegador mais utilizado por desenvolvedores web. A razão para isso é o acesso a um grande número de extensões e ferramentas do navegador, o que facilita muito o trabalho diário. Além disso, a

Compilado dicas de carreira - parte 2

vom 1714.91 Punkte
Olá pessoal, essa é a parte 2 das dicas de carreira. Pra quem caiu de paraquedas, as "dicas de carreira" são threads que eu escrevo no Twitter. À pedidos, eu estou compilando as dicas em formato de artigo pra ficar mais fácil a leitura e indexa

Primeros pasos en WordPress 2023

vom 1620.74 Punkte
Hola a todos! Esta es mi primera publicación en la plataforma DEV y la idea de este articulo es relatar de forma clara lo sencillo que puede ser crear tú propia página web sin grandes conocimientos en programación, gracias al CMS WordPress. Una vez insta

Formularios dinámicos con React Hook Form. 📝

vom 1618.35 Punkte
En esta ocasión, volveremos a crear formularios dinámicos pero ahora con ayuda de la librería de react-hook-form. Nota 📣: Necesitas tener conocimiento en Typescript para seguir este tutorial, así como de React JS. Tal vez te interese este a

Como Consegui uma Carreira em DevRel Ainda na Faculdade

vom 1514.08 Punkte
Sumário Intro Fazendo Umas Piadinhas O PODER do Networking Levando um Hobby a Sério MUITA Coisa pra Aprender Resumindo: Como Começar uma Comunidade Conclusão TL;DR Nesse blog vou compartilhar a minha história "acidental" como criadora de conteúdo, que me levou a conhecer pess

Cómo Wix mejoró el rendimiento de su sitio web mediante la evolución de su infraestructura

vom 1432.52 Punkte
Alon lidera el equipo central de backend en Wix. Gracias al aprovechamiento de los estándares de la industria, los proveedores de nube y las capacidades de CDN, combinado con una reescritura importante del tiempo de ejecución de nuestro sitio web, e

Python y Datos, Un viaje de ida

vom 1284.01 Punkte
Confieso que necesitaba escribir este artículo hace mucho tiempo, pero estudiar y trabajar todos los días apenas me estaba dejando un margen para ustedes, queridos lectores. Decidí detenerme al menos por unos minutos; un tiempo similar al que te ll

Documentação técnica para iniciantes, parte 1: criando um bom README para o seu projeto

vom 1213.41 Punkte
Ter uma boa documentação para o seu projeto, principalmente em se tratando de projetos de código aberto, é um diferenciador importante que pode influenciar positivamente na popularização da sua aplicação ou biblioteca. Infelizmente, a documen

Quero contratar uma pessoa DevRel, e agora?

vom 1190.23 Punkte
Por que estou escrevendo este artigo? Quem me acompanha há algum tempo, sabe que não sou recrutadora, apesar de já ter feito algumas entrevistas. Porém, quero aproveitar essa série que estamos construindo sobre DevRel e compartilhar algumas dic

Team Security Diskussion über Como ter certeza que meu código esta bem testado