Por trás das páginas: JavaScript Assertivo

Posted by Gabriel Ramos on Oct 27, 2021 9:14:02 AM

Finalmente! Depois de mais de um ano de desenvolvimento, escrita e revisão, esse trabalho feito com tanto carinho saiu do forno.

Esse é, muito provavelmente, o meu maior projeto até hoje!

#Beleza... Mas do que você tá falando?

O JavaScript Assertivo é um livro sobre testes com JavaScript e a ideia, desde o início, era facilitar o entendimento sobre as fundamentos necessários pra qualquer pessoa poder escrever seus testes, além de trazer exemplos realmente práticos e que pudessem abordar os mais variados cenários.

Meu pensamento era que esse livro seja uma espécie de "manual" sobre o assunto, mas que ao mesmo tempo também ajude quem lê a ter uma base sólida sobre e saiba aplicar os conceitos e ferramentas de maneira confiante.

Dessa forma, ele pode ser consumido por diversos tipos de pessoa, independente de ter ou não experiência com testes. Seu único "pré-requisito" é o entendimento sobre JavaScript.

Todo o conteúdo é 100% prático, então ao longo do livro, diversos tipos de aplicações são testadas, onde você pode baixar, clonar os projetos e aplicar o conteúdo do livro enquanto acompanha com a leitura!

#Trilha e jornada na leitura

Como o intuito é ter uma base e compreender testes em diversas camadas da aplicação, o conhecimento vai sendo construído ao longo das partes do livro.

Cada parte contém seu próprio projeto com seus conceitos e diversos tipos de testes envolvidos

Ao total, o livro é dividido em 5 partes:

  • Fundamentos: começamos com todos os conceitos, teoria e diversos termos que envolvem testes, eles são comentados junto com analogias e exemplos de mercado pra que os projetos possam fazer sentido pra todo mundo. Nessa etapa entenderemos as diferenças dos tipos de teste e também a famosa "pirâmide de teste" e o que isso significa. É aqui que as bases do conteúdo são criadas;
  • CLI: após entender e ter uma base teórica mais forte, o primeiro projeto que começará recebendo teste unitário é um projeto de linha de comando. Nessa parte do livro, uma CLI (interface de linha de comando ou command-line interface) que realiza operações CRUD (cadastro, leitura, atualização e deleção) será testada;
  • Back-end: nessa terceira parte, um serviço que realiza as operações de CRUD da CLI anterior através de sua API é que será a estrela. Agora os testes serão um pouco mais completos, envolvendo os testes de unidade, integração e também de carga;
  • Front-end: após a finalização dos testes anteriores, precisamos entender como testar aplicações visuais. Essa terceira parte contém uma aplicação que será cliente da API testada anteriormente, e também serão aplicados diversos tipos de testes como de unidade, integração e também de regressão visual;
  • End-to-end: a trilha não estaria completa se não testássemos as aplicações de ponta-a-ponta. Nessa parte, os testes irão garantir cenários envolvendo todas as camadas das aplicações envolvidas.

Mas, tudo isso você pode ver no próprio site do livro, o que eu gostaria de comentar por aqui é sobre como foi todo o processo de escrita até então.

#De onde essa ideia surgiu?

Testes foi sempre um assunto que me interessou.

É bem comum entrar na área de tecnologia por diversos meios. Além disso, quando o assunto é programar, nem todo mundo se preocupa em aprender (ou ensinar) sobre testes.

Então, como uma boa parte da galera, testes era uma área cinzenta e meio complicada pra mim. Isso mudou no momento que eu decidi entrar de cabeça e entender o assunto pra não ficar só corrigindo teste através de tentativa e erro.

Naturalmente fui estudando, pesquisando, entrando mais afundo no assunto (inclusive um material que me ajudou muito foi o Testing JavaScript, do Kent C. Dodds) e a realidade é que testes, por si só, é um assunto bem extenso que precisa ser estudado com a mesma dedicação que outros diversos tópicos na área de tecnologia. Não é à toa que existem pessoas com profissão dedicada somente a qualidade de software, né?

E foi durante essas pesquisas que eu percebi que muitas das fontes de conteúdo sobre testes (e vários outros, né?) são de fora do Brasil.

Não me entenda errado, temos ótimos conteúdos de qualidade por aqui! Dois que eu sempre recomendo sempre são o JS com TDD na Prática (do Willian Justen) e Aprenda a testar Aplicações JavaScript (do Fábio Vedovelli). Mas ainda assim, se comparados com os conteúdos internacionais, com certeza estamos em menor número.

Isso fica ainda mais claro quando você pesquisa conteúdo para ler. Eu gosto bastante de leitura e, na época, não achei nenhum livro sobre testes em JavaScript que fosse escrito em português.

E foi aí que a primeira faísca aconteceu: por quê não ser o primeiro? Eu já adoro escrever aqui no Blog, seria um passo bem interessante e um desafio que me animou assim que me veio à cabeça!

Foi aí que eu comecei a montar e "desenhar" esse projeto.

#Como foi a definição do conteúdo?

Como comentei, a ideia sempre foi abordar os mais variados cenários de teste de forma que o livro pudesse ser um manual ou um guia sobre isso e também facilitar todas as bases teóricas necessárias. Mesmo assim, não adianta fazer um livro técnico, ainda mais sobre esse assunto, se não for possível ter exemplos práticos para quem acompanha a leitura, concorda?

Nesse ponto, eu percebi que esse desafio seria mais trabalhoso do que eu imaginei: se eu quisesse deixar os exemplos claros, eu precisaria ter projetos reais, usando tecnologias reais, pra que tudo pudesse ficar mais vívido. Foi aí que eu comecei a pensar nas aplicações e nos tipos de testes que poderiam ser aplicados em cada uma delas.

Com isso, comecei a dar os primeiros passos, escrever os primeiros capítulos mais introdutórios e a pensar mais afundo nos projetos. Foi enquanto esses pedaços iniciais foram sendo escritos que a própria robustez do projeto foi ficando clara pra mim. Eu não queria entregar um conteúdo falho ou que explicasse somente algo superficial, então o aviso já fica aqui: esse livro vai ser bem denso, ele vai te fazer pensar e colocar a mão na massa frequentemente.

Mas se você gosta do que eu escrevo por aqui, isso muito provavelmente não é nenhuma novidade pra você, não é mesmo? 🤣

#Como foi o processo de escrita?

Da mesma forma como quem lê tem a oportunidade de praticar, eu que escrevi o conteúdo preciso ter o material pronto, então todos os testes e projetos são acessíveis por qualquer pessoa que acesse o repositório. Então não foi questão de fazer apenas um ou dois projetos, mas sim 3 aplicações (CLI, Back-end e Front-end) pra que os exemplos ficassem claros e pudessem se encaixar nos cenários que eu queria.

Eu costumo ter um fluxo bem simples de escrita. Eu escrevo meus posts no Notion, exporto o conteúdo em markdown e crio o post aqui no blog, então foi bem fácil adaptar as coisas para o fluxo que a editora propõe.

Ao longo do desenvolvimento das aplicações, eu fui escrevendo os capítulos "lado a lado", escrevia uma camada ou parte da aplicação, escrevia alguns testes e elaborava os capítulos do livro.

Aqui já temos uma outra observação: não, eu não usei TDD (embora eu comente sobre ele no livro). Sendo bem sincero, em alguns cenários eu tenho muita dificuldade de aplicá-lo de uma forma efetiva e, como eu comentei, o livro foi feito pra que qualquer pessoa pudesse consumir com o mínimo de barreira possível. Então para quem quiser se aprofundar e começar a escrever código seguindo TDD, isso vai ser uma lição de casa após a leitura.

Não foi um trabalho fácil... Se "só" desenvolver e realizar testes em uma aplicação muitas vezes já dá trabalho, fazer um passo-a-passo escrito de maneira que facilitasse a compreensão de quem está lendo é algo bem desafiador.

Mas com certeza, valeu muito a pena!

#Um livro não é um livro se não tiver uma dedicatória

Quem me conhece sabe que eu sou uma manteiga derretida e eu não poderia ter um projeto desses sem a dedicatória adequada e nada mais justo do que agradecer as pessoas que me apoiam e sempre me apoiaram, seja profissional ou pessoalmente.

Me marcou muito esse momento já que foi como uma espécie de "encerramento" (embora ajustes sempre apareçam no conteúdo). Foi como desbloquear uma nova conquista onde a dedicatória fosse um marco talhado em pedra dizendo: eu consegui.

Posso dizer facilmente que foi a parte que mais encheu meu coração de felicidade ao escrever. Lembro claramente de escrever os agradecimentos com os olhos marejados pensando em cada uma das pessoas que caminharam e caminham comigo e que fizeram, com certeza, parte dessa realização.

#Hora do prefácio

Sempre achei muito bonito as introduções e prefácios de livros que li por aí e geralmente prefácios são escritos por pessoas que possuem certa autoridade no assunto que é abordado ao longo da leitura.

Foi aí que me veio à cabeça em conversar com o Willian e ver se ele topava escrever o prefácio e bom, preciso dizer que ficou sensacional.

Não vou dar mais nenhum spoiler, mas adianto que é uma introdução perfeita pra todo o conteúdo que você vai encontrar nas quase 400 páginas desse livro, dividido em 5 partes principais.

#JesTip

Conforme fomos chegando ao processo de finalização, eu já não me aguentava mais de ansiedade e tive uma outra ideia.

É muito comum (pelo menos na comunidade de tecnologia) se deparar com postagens que explicam pequenas doses de conteúdo de forma fácil e direta de ser aplicada. Algumas pessoas, inclusive, chamam isso de "pílulas" de conhecimento.

Com isso em mente que surgiu o JesTip (inclusive você pode encontrar essa "coleção" aqui no blog).

Preparei uma série de 10 pequenas dicas de testes que foram publicadas no twitter de forma rápida e que pudesse servir de apoio prático pra alguns assuntos e detalhes comuns que encontramos em aplicações que são testadas por aí.

#Revisões, apoio editorial, finalizações e claro, a capa!

Talvez não tenha ficado claro, mas eu prezo muito pela comunicação e aprendizagem de conteúdo de qualidade de forma acessível. Então com certeza eu precisava de uma editora que se alinhasse com esses valores pessoais.

Levando isso em consideração e, sendo bem sincero, minha opção de editora estava praticamente feita desde o início.

Por já ter lido alguns livros e, principalmente, saber que o conteúdo possui um preço mais acessível se comparado à outras editoras e com um bom nível de qualidade, minha escolha foi fácil e decidi entrar em contato com a Casa do Código.

A parceria iniciou antes de começar a parte mais extensa do projeto. Apresentei alguns capítulos introdutórios que já estavam prontos e tive a ótima resposta de que poderíamos seguir adiante com o conteúdo, então foi hora de arregaçar as mangas e começar a escrever (e desenvolver) pra valer.

Ao longo de todo o processo a editora sempre exerceu um papel fundamental me apoiando como autor e ajudando em praticamente toda a burocracia de contrato e ISBN (número de identificação do livro). Foram feitas pelo menos 3 revisões de todo o conteúdo que eu escrevi, sendo elas da parte didática e da parte gramática.

O contato com as pessoas responsáveis foi sempre simples e muito rápido. Em momento algum eu me senti pressionado à escrever, mesmo tendo terminado o conteúdo relativamente rápido, tudo fluiu muito, muito bem.

Pra você ter uma ideia, até os cupons do livro eu pude escolher! Já deixo aqui mais um spoiler: tem referências de teste até nos cupons que vou comentar logo logo (a surpresa vem aí).

Até a capa foi desenhada pela equipe da editora!

Quando chegamos nessa etapa de finalização, a equipe colheu algumas ideias que eu gostaria de trazer pra arte do livro e eu precisava de algo que retratasse as diversas "camadas" de aplicações e de testes que são abordadas no livro.

Pensando nisso, a primeira coisa que me veio à cabeça foi uma "matriosca" (ou matryoshka): aquela boneca russa que vai abrindo dando origem a outras bonecas menores no mesmo formato, onde você pode ir tirando uma de dentro da outra.

Acabou sendo uma ótima ligação, afinal, os projetos e testes do livro são construídos exatamente assim, em diversas camadas, da menor até a maior, todas interconectadas.

Do processo de escrita e criação, acho que é isso. Agora chega de enrolação...

Blogpost original

Topics: Talento tecnológico, Front end developer, Fullstack developer, Talento Tech

      Perfis

      O mais lido

      O que é Laboratória?

      Na Laboratória trabalhamos para construir uma economia digital mais diversa, inclusiva e competitiva, que possa criar oportunidades para que cada mulher desenvolva seu potencial.

      ➡️ Saber mais

      Assine a nossa newsletter