8. Programação JavaScript e Cypress Cross-platform Automation

Programação para QA: Dominando a Sintaxe, Lógica e Automação de Testes

No cenário atual de desenvolvimento de software, a linha entre desenvolvedores e profissionais de QA está cada vez mais sutil, especialmente com o crescimento da automação de testes. Para o Engenheiro de Qualidade moderno, compreender programação, lógica e práticas orientadas a testes deixou de ser diferencial: tornou-se necessidade.

Neste módulo, vamos explorar como a programação potencializa o QA, permitindo que ele contribua em todas as etapas do ciclo de vida do software — da concepção ao deploy — aplicando técnicas, criando cenários mais robustos e automatizando testes para diferentes plataformas e APIs.


Sintaxe e Lógica: A Base do Pensamento Programático

Antes de mergulhar em frameworks e automação, é fundamental construir uma base sólida de sintaxe e lógica de programação. Isso envolve compreender:

  • Tipos de dados: números, textos, booleanos.
  • Variáveis e constantes: como armazenar e manipular informações.
  • Estruturas de controle: condicionais (if/else), laços de repetição (for, while).
  • Funções e métodos: organização do código em blocos reutilizáveis.
  • Estruturas de dados: listas, arrays, dicionários para organizar coleções.

Dominar esses conceitos em linguagens como Python, JavaScript, Java ou C# é o primeiro passo para escrever scripts de teste eficientes, analisar cenários e resolver problemas de forma algorítmica.


Desenvolvimento Orientado a Testes (TDD): Qualidade desde a Concepção

O Test-Driven Development (TDD) é uma metodologia onde os testes são escritos antes do código de produção. Seu ciclo é simples:

  1. Escreva um teste que falhe → descreve uma funcionalidade ainda não implementada.
  2. Faça o teste passar → escreva o código mínimo necessário.
  3. Refatore → otimize e limpe o código, mantendo os testes verdes.

Embora seja uma prática voltada a desenvolvedores, para o QA o TDD é estratégico:

  • Promove código mais testável e confiável.
  • Garante que os requisitos sejam considerados desde o início.
  • Permite ao QA contribuir com cenários de teste que guiarão o desenvolvimento.

Testes de Back-end e Unidade de Front-end

A programação expande o papel do QA para além da interface, alcançando camadas críticas do sistema:

  • Testes de Back-end: validados diretamente na lógica de negócios, banco de dados e APIs.
    • Ferramentas: requests (Python), axios (JavaScript), Rest-Assured (Java).
  • Testes de Unidade de Front-end: verificam componentes isolados de interfaces modernas.
    • Frameworks: Jest e React Testing Library (React), Karma/Jasmine (Angular).

Com isso, o QA (ou o dev com mentalidade de QA) consegue antecipar falhas antes mesmo da integração.


Testes de Unidade Mobile

Para mobile, dominar linguagens nativas amplia ainda mais o alcance:

  • Kotlin (Android): testes com JUnit e Mockito, validando lógica e classes Android.
  • Swift (iOS): testes com XCTest (Xcode), garantindo o comportamento correto de funções e classes.

Um QA com esse conhecimento colabora melhor com a equipe mobile, revisa e até cria seus próprios testes unitários.


Testes de API e Automação: Onde a Programação Brilha

É na automação que a programação mostra todo seu impacto no QA. Com o domínio de código, o profissional consegue:

  • Criar testes de API robustos.
  • Automatizar fluxos end-to-end em aplicações web e mobile.
  • Integrar testes a pipelines de CI/CD, tornando o processo de qualidade contínuo.

Além de Cypress, Selenium, Postman e Appium, o mercado oferece outras ferramentas poderosas — que serão exploradas neste módulo — para expandir o arsenal de um QA moderno.


👉 Pergunta para reflexão:
Qual desses blocos (sintaxe, TDD, testes de back-end, mobile ou automação) você considera sua maior prioridade de aprendizado neste momento?

📘 Plano Prático de Estudos: Programação para QA

1. Fundamentos de Programação (Sintaxe e Lógica)

🎯 Objetivo: dominar o essencial para escrever scripts de teste.

Atividades:

  • Variáveis e tipos de dados: números, strings, booleanos.
  • Estruturas de decisão: if/else.
  • Laços: for, while.
  • Listas e dicionários (coleções comuns em testes).
  • Funções: criar e chamar funções.

✅ Exercício prático:

  • Criar um script que receba uma lista de produtos e simule adicionar/remover do “carrinho” (armazenado em uma lista).

2. Estruturas de Dados + Manipulação

🎯 Objetivo: organizar e validar informações.

Atividades:

  • Manipular listas (adicionar, remover, filtrar).
  • Dicionários (armazenar dados de usuários ou produtos).
  • Trabalhar com JSON (muito usado em APIs).

✅ Exercício prático:

  • Criar um script que leia um JSON simulando uma resposta de API (ex: lista de produtos) e valide se todos os preços são maiores que zero.

3. Desenvolvimento Orientado a Testes (TDD)

🎯 Objetivo: entender o ciclo de escrever testes antes do código.

Atividades:

  • Usar pytest no Python.
  • Escrever um teste que falha.
  • Criar a função que faz o teste passar.
  • Refatorar.

✅ Exercício prático:

  • Escrever um teste para validar a função soma(x, y).
  • Expandir para validar uma função calcular_preco_com_desconto(preco, desconto).

4. Testes de Back-end (APIs)

🎯 Objetivo: automatizar chamadas a APIs.

Atividades:

  • Usar a biblioteca requests.
  • Fazer GET/POST/PUT/DELETE em uma API pública (ex.: https://reqres.in).
  • Validar status code e resposta JSON.

✅ Exercício prático:

  • Criar um script que faça login em uma API fake (reqres) e valide se o token foi retornado.

5. Automação de Testes Web (UI)

🎯 Objetivo: interagir com navegadores.

Atividades:

  • Instalar e usar Selenium ou Playwright com Python.
  • Abrir navegador, acessar um site, preencher formulário, clicar em botões.
  • Validar textos e mensagens.

✅ Exercício prático:

  • Criar um teste que acesse um site de e-commerce demo (ex.: https://www.saucedemo.com), faça login e valide se a lista de produtos aparece.

6. Automação de Testes de Performance

🎯 Objetivo: introdução a performance.

Atividades:

  • Criar scripts simples no JMeter.
  • Simular usuários acessando endpoints de API.
  • Analisar tempo de resposta.

✅ Exercício prático:

  • Simular 10 usuários fazendo login e buscar produtos.

7. Integração e Portfólio (GitHub)

🎯 Objetivo: consolidar aprendizado em um repositório.

Atividades:

  • Subir todos os scripts para o GitHub.
  • Organizar em pastas (fundamentos, APIs, UI, performance).
  • Criar um README.md explicando os exercícios.

✅ Exercício prático:

  • Montar um mini portfólio com 3 camadas: APIs, UI e performance.

👉 Sugestão de ordem semanal (se estudar 1h por dia):

  • Semana 1 → Fundamentos + Estruturas de Dados
  • Semana 2 → TDD com pytest
  • Semana 3 → Testes de API com requests
  • Semana 4 → Selenium/Playwright (UI)
  • Semana 5 → JMeter (Performance)
  • Semana 6 → GitHub + Portfólio