Desenvolvimento Orientado a Testes na Ciência de Dados

Compartilhe

Compartilhar no facebook
Compartilhar no google
Compartilhar no twitter
Compartilhar no linkedin

Test-Driven Development (TDD)

TDD é uma técnica de programação muito utilizada em desenvolvimento de software, onde cada recurso do software é testado antes de sua implementação. 

Unit Tests (UT) são trechos de código feitos com o objetivo de testar partes de um software. Os UT servem para garantir que cada trecho do software está funcionando de acordo com o objetivo esperado.

Normalmente adota-se a seguinte rotina:

Passo 1. escrita de um teste para um recurso do software;

Passo 2. execução e falha do teste, pois a funcionalidade testada ainda não foi implementada no sistema;

Passo 3. implementação da funcionalidade, da maneira mais simples possível, para fazer o teste passar;

Passo 4. depois que o teste passar, refatorar o código da funcionalidade, para ficar de acordo com o design/padrão adotado no projeto – e também elegante, afinal gostamos de códigos bonitos, correto?

Passo 5. retornar ao Passo 1 a cada novo recurso adicionado ao sistema.

Vantagens

Além de ajudar a garantir o funcionamento da aplicação, o uso de testes unitários colaboram com a adoção  de algumas boas práticas do desenvolvimento de software, como:

  • estruturação do código em funções e/ou métodos;
  • métodos/funções com objetivos melhor definidos;
  • práticas que facilitam na manutenção e interpretação;
  • ganho de tempo nas etapas finais de projetos, uma vez que problemas (bugs) se tornam menos recorrentes;

Quando o TDD pode ajudar um Cientista de dados?

O dia a dia na ciência de dados pode ser bem diverso e não precisamos (e nem devemos), aplicar o TDD em todas as situações.

Análise exploratória de dados (Exploratory Data Analysis – EDA): 

Normalmente realizadas quando queremos entender o comportamento dos dados, identificar padrões, levantar hipóteses, etc. Tudo a fim de nos guiar ao começar o desenvolvimento de um modelo de machine learning, por exemplo. 

As EDAs não precisam de uma estrutura muito robusta para serem feitas, sendo viáveis através de jupyter notebooks (ou similares), e também em scripts. Usam conjuntos de dados menores ou uma amostra, quando o volume de dados é grande. 

Como essa rotina é feita no início de um projeto ou apenas com o fim de conhecer melhor os dados, e o objetivo não é criar scripts e/ou um software que serão reusados, não é preciso, e nem vantajoso utilizar TDD.

Desenvolvimento de modelos de Inteligência Artificial

O desenvolvimento de modelos em ciência de dados é uma prática recorrente, e como um modelo nada mais é do que um software, podemos aplicar práticas e técnicas da área de desenvolvimento no dia a dia de cientistas. Para a aplicação do TDD vamos ponderar duas situações: 

  1. Um modelo pode ser criado tendo como objetivo apoiar alguma decisão, responder perguntas ou sustentar um planejamento estratégico para o período futuro, não tendo a necessidade de integração com outro sistema ou,  uso recorrente. Portanto, nesse caso, não aconselho a adoção de TDD, pois modelos desse tipo normalmente são feitos por uma pessoa, e não usam  estruturas robustas de arquitetura, além de não precisarem de manutenção, por só serem usados uma vez.
  2. O modelo será colocado em produção, – isto é, acoplado a outros sistemas e com todas as suas rotinas automatizadas, situação bem similar com a de um software “tradicional”.

Nesse contexto, temos:

  • disponibilização do software produzido para uso de outros sistemas e/ou plataformas;
  • pipeline e rotinas robustas e frágeis, no sentido de não muito tolerável a falhas e erros inesperados;
  • manutenção compartilhada ― projetos como esse são maiores e podem exigir mais de um par de mãos;

Esse caso é uma ótima oportunidade para aplicar o TDD, e levanto algumas razões para isso, como por exemplo: testar as etapas do pipeline, ter a certeza de que as funções estão realizando o que é preciso, e que isso se mantém após refatorações e mudanças no código, e verificar se todos os casos e condições satisfazem o esperado.

Te convido, então, a adotar práticas do desenvolvimento de software à rotina da ciência de dados e com isso ganhar muito mais qualidade do software produzido.

Deixe um comentário

Categorias

Posts relacionados

Siga-nos

Baixe nosso e-book!

%d blogueiros gostam disto: