
Aula de descontração, quebra gelo e de fazermos nossos combinados!
O Visual Studio Code é um editor de código altamente popular, desenvolvido pela Microsoft, que oferece uma experiência de desenvolvimento leve e poderosa. É uma escolha ideal para escrever e executar scripts de automação de testes, como os desenvolvidos com o Selenium em Python. Neste artigo, vamos guiá-lo através do processo de instalação do Visual Studio Code no site oficial, para que você possa começar a aproveitar seus recursos incríveis para a automação de testes.
https://code.visualstudio.com/
* - Python
* - Code Runner
* - Cucumber
* - Cucumber (Gherkin) Full Support
* - Snippets and Syntax Highlight for Gherkin (Cucumber)
* - Feature Syntax Highlight and Snippets (Cucumber/Gherkin)
* - Diff
* - isort
* - JSON formatter
* - Jupyter Cell Tags
* - Jupyter Keymap
* - Jupyter Slide Show
* - Microsoft Edge Tools for VS Code
* - Portuguese (Brazil) Language Pack for Visual Studio Code
* - Pylance
* - Om Theme (A Darker Dracula Theme)
Uma Automação de Testes é uma abordagem eficiente e sistemática para verificar a qualidade de um software de forma automatizada. Nesse processo, criamos scripts ou programas que realizam tarefas repetitivas de teste, normalmente executadas manualmente, para verificar se o software está funcionando corretamente e atende aos requisitos estabelecidos.
Esses scripts são desenvolvidos utilizando linguagens de programação e ferramentas específicas para automação de testes. Eles interagem com a interface do software, simulando ações que um usuário faria, como clicar em botões, inserir dados em campos, navegar por páginas e verificar os resultados obtidos.
A Automatização de Testes traz várias vantagens significativas para o processo de desenvolvimento de software:
Eficiência e Produtividade: A execução automatizada de testes é muito mais rápida do que a execução manual, permitindo que os testes sejam realizados de forma mais rápida e frequente.
Reprodutibilidade: Os testes automatizados garantem que as mesmas ações e cenários sejam executados sempre que necessário, garantindo consistência e reprodutibilidade nos resultados.
Cobertura Abrangente: A automação possibilita testar uma ampla variedade de cenários e casos de teste, o que pode ser difícil de ser alcançado manualmente.
Detecção Precoce de Defeitos: Ao integrar os testes automaticamente ao processo de desenvolvimento, é possível identificar e corrigir problemas mais cedo, o que reduz o custo e o impacto das correções.
Melhoria na Qualidade do Software: Com a execução frequente de testes automatizados, é possível detectar problemas antes que o software seja liberado para os usuários finais, garantindo uma maior qualidade do produto final.
Liberação Contínua: A automação é fundamental para implementar práticas de desenvolvimento ágil, como a Integração Contínua e Entrega Contínua, permitindo a liberação mais rápida e segura de novas versões do software.
Entretanto, é importante lembrar que a Automatização de Testes não substitui completamente os testes manuais, pois há cenários e aspectos que ainda requerem a análise humana. Por isso, é recomendado utilizar uma combinação de ambos os métodos para obter a melhor cobertura e garantir a qualidade do software.
Em resumo, a Automatização de Testes é uma estratégia poderosa que visa tornar o processo de teste mais eficiente, confiável e ágil, contribuindo significativamente para o desenvolvimento de software de alta qualidade.
O que é o Selenium? O Selenium é uma ferramenta de código aberto para automação de testes em aplicações web. Ele oferece uma estrutura poderosa para desenvolver scripts que interagem com navegadores de forma automatizada.
Principais Características:
Suporte a várias linguagens de programação: Você pode escrever seus testes em sua linguagem favorita, tornando-o mais acessível a diversos desenvolvedores.
Suporte a múltiplos navegadores: O Selenium pode ser usado para testar aplicativos em diferentes navegadores, como Google Chrome, Mozilla Firefox, Microsoft Edge, etc.
Compatibilidade com diferentes sistemas operacionais: Funciona em Windows, macOS e Linux.
Integração com frameworks de teste: É possível integrar o Selenium com frameworks de teste populares, como TestNG, JUnit ou NUnit.
Suporte a testes paralelos: Permite a execução de testes em paralelo, economizando tempo e acelerando o processo de testes.
Componentes do Selenium:
Selenium WebDriver: É a parte principal do Selenium que permite a interação com o navegador e a execução dos testes. Ele controla o navegador como um usuário real faria.
Selenium IDE: É uma extensão do navegador que permite gravar, editar e reproduzir ações do usuário para criar testes de forma mais rápida.
Selenium Grid: Permite a execução dos testes em vários navegadores e sistemas operacionais em paralelo, distribuindo a carga de testes.
Como o Selenium funciona: O Selenium WebDriver envia comandos ao navegador por meio da API do navegador específica para cada linguagem de programação. Esses comandos são utilizados para simular ações do usuário, como clicar em botões, preencher formulários e verificar elementos na página.
Cenários de Uso: O Selenium é amplamente usado para testar funcionalidades de um aplicativo web, como validar formulários, verificar redirecionamentos, testar fluxos de navegação e garantir que elementos da página estejam presentes e funcionem corretamente.
Com essa breve introdução ao Selenium, você poderá começar a explorar e utilizar essa ferramenta poderosa para automatizar testes em seus projetos web. Ele pode economizar tempo, melhorar a qualidade do software e permitir que você foque em desenvolver recursos mais importantes, sabendo que seus testes estão sendo executados de forma confiável.
O BDD, ou Desenvolvimento Orientado a Comportamento, é uma abordagem colaborativa que visa melhorar a comunicação e a compreensão entre desenvolvedores, analistas de negócio e stakeholders (partes interessadas) durante o processo de desenvolvimento de software.
Em vez de se concentrar apenas nos aspectos técnicos do desenvolvimento, o BDD enfatiza a criação de uma linguagem comum compreendida por todos os envolvidos no projeto. Essa linguagem comum é expressa em cenários de teste escritos em linguagem natural, que descrevem o comportamento esperado do software sob diferentes condições.
Os conceitos principais do BDD incluem:
Features Files: São descrições detalhadas em linguagem natural que descrevem o comportamento do sistema em termos de entrada, ação e saída esperada. Esses cenários são escritos em um formato compreensível por todos os membros da equipe.
Exemplos:
Se quisermos desenvolver um sistema de login, um exemplo de cenário poderia ser: "Dado que um usuário insere um nome de usuário e senha válidos, quando ele clica no botão de login, ele deve ser redirecionado para a página inicial".
Esse exemplo descreve a entrada (nome de usuário e senha válidos), a ação (clicar no botão de login) e a saída esperada (ser redirecionado para a página inicial).
Step Definitions (Definições de Passos):
Os cenários escritos em linguagem natural são traduzidos para passos de teste executáveis por meio de definições de passos em código.
Essas definições de passos conectam os cenários de teste às implementações reais do código do software.
Ferramentas de Execução:
Existem várias ferramentas de automação de testes e frameworks que suportam o BDD, como Cucumber, SpecFlow, Behave, entre outros.
Essas ferramentas executam os cenários de teste escritos em linguagem natural e verificam se o software se comporta conforme o esperado.
Colaboração:
O BDD incentiva a colaboração contínua entre os membros da equipe, pois todos participam na elaboração dos cenários de teste.
Através dessa colaboração, todos têm uma compreensão clara das funcionalidades do software e das expectativas de comportamento.
O BDD ajuda a evitar mal-entendidos e ambiguidades durante o desenvolvimento do software, garantindo que todos tenham uma visão compartilhada das funcionalidades e comportamentos esperados. Além disso, a abordagem BDD também promove a escrita de testes significativos, direcionando o desenvolvimento para entregar valor ao cliente e aos usuários finais.
Aqui vc irá aprender a importância de criar um arquivo Leia-me. Quando estamos no inicio de criação, não faz muito sentido pq são poucas coisas, mas quando vc estiver trabalhando com projetos grandes, onde existem varias pessoas trabalhando nele vc vai identificar a eficácia deste arquivo.
Acesse o requirements:
https://github.com/EuclidesTDias/Curso/blob/main/Aula8
Ter um ambiente virtual (ou ambiente .env) é essencial em projetos de desenvolvimento de software, incluindo automação com Selenium em Python usando o Behave, por várias razões teóricas, incluindo:
Isolamento de Dependências: Ambientes virtuais permitem que você isole as dependências do seu projeto. Isso significa que você pode ter diferentes versões de bibliotecas e pacotes instalados em diferentes projetos, sem conflitos. Isso é crucial quando diferentes projetos requerem versões diferentes de bibliotecas.
Evitar Conflitos de Versão: Em sistemas comuns, pode haver conflitos de versão quando vários projetos compartilham as mesmas bibliotecas. Um ambiente virtual resolve esse problema, pois cada projeto pode ter suas próprias versões específicas de bibliotecas.
Facilidade de Configuração e Compartilhamento: Com um ambiente virtual, você pode facilmente compartilhar um arquivo de requisitos que lista todas as dependências do projeto. Isso torna a configuração do ambiente de desenvolvimento consistente e facilita a colaboração com outros desenvolvedores.
Portabilidade: Ambientes virtuais são portáteis. Você pode criar um ambiente virtual em uma máquina e transferi-lo para outra sem problemas. Isso é útil ao trabalhar em equipes ou ao migrar projetos entre computadores.
Mantém o Ambiente Global Limpo: Usar um ambiente virtual mantém o ambiente global do sistema limpo e evita a poluição com dependências específicas do projeto. Isso é especialmente importante em sistemas compartilhados e evita conflitos inesperados.
Facilita a Atualização e Remoção de Dependências: Atualizar ou remover dependências específicas de um projeto é mais fácil em um ambiente virtual, pois não afeta o sistema global. Você pode fazê-lo de forma controlada, sem impactar outros projetos.
Melhora a Segurança: Isolar as dependências do seu projeto em um ambiente virtual pode melhorar a segurança, já que você pode ter controle sobre quais bibliotecas estão sendo usadas em seu código, reduzindo a superfície de ataque.
Em resumo, um ambiente virtual é uma prática recomendada na programação Python e é fundamental para manter a organização, a compatibilidade e a consistência em projetos de automação com Selenium e em qualquer desenvolvimento de software em Python. Isso ajuda a evitar problemas comuns relacionados a dependências e a tornar o desenvolvimento mais eficiente e seguro.
A estrutura de um projeto de automação usando o Behave como framework segue um padrão que se baseia nas melhores práticas de organização e separação de responsabilidades. Essa estrutura geralmente consiste em vários componentes interconectados, e aqui está uma explicação textual dos principais elementos que a compõem:
Feature Files:
Step Definitions:
Behave Runner:
Ambientes:
Gestão de Dependências:
Padrões de Projeto:
Estrutura de Diretórios:
No geral, a arquitetura de um projeto de automação usando o Behave como framework se baseia na clareza, na organização e na modularização. Ela permite que você escreva cenários de teste em linguagem natural, que podem ser executados repetidamente para verificar o comportamento do software, enquanto o código de automação subjacente é mantido de forma organizada e eficiente. Essa abordagem ajuda a garantir que as alterações no software possam ser facilmente validadas por meio da automação de testes.
Feature Files:
Os "Feature Files" são arquivos escritos em linguagem Gherkin que descrevem o comportamento do software de uma perspectiva do usuário. Eles contêm cenários de teste que definem a interação do usuário com o sistema. Cada cenário é composto por etapas (Given, When, Then) que descrevem o contexto, a ação e a verificação.
Step Definitions:
As "Step Definitions" são módulos de código Python que correspondem às etapas definidas nos arquivos de recursos (Feature Files). Cada etapa (Given, When, Then) é mapeada para uma função Python que contém a lógica de automação necessária para executar a etapa.
Behave Runner:
O "Behave Runner" é o componente que lê os arquivos de recursos e executa os cenários definidos neles. Ele corresponde os passos definidos nos recursos com as funções correspondentes nas Step Definitions e executa o código de automação.
Ambientes:
Você pode configurar diferentes ambientes para executar seus cenários, como ambiente de desenvolvimento, teste ou produção. Isso pode ser controlado por variáveis de ambiente ou configurações específicas.
Gestão de Dependências:
Um gerenciador de dependências, como o "pip" para Python, é usado para gerenciar bibliotecas e pacotes necessários para a automação, como o Selenium WebDriver para interações com navegadores. Nos definimos como 'Requiriments'.
Padrões de Projeto:
Padrões de projeto, como Page Object Model (POM), podem ser aplicados para melhorar a manutenção e reusabilidade do código de automação. POM envolve organizar elementos de interface do usuário e ações em objetos separados.
Estrutura de Diretórios:
Uma estrutura de diretórios bem organizada é importante para manter a clareza e a ordem no projeto. Isso pode incluir diretórios para arquivos de recursos, step definitions entre outros.
segue o link para conseguir baixaro msedge.exe direto da microsoft:
https://developer.microsoft.com/pt-br/microsoft-edge/tools/webdriver
se nao conseguir abrir o link, segue a forma de como pesquisar pra encontrar:
"onde baixar o msedge.exe"
Nesta pasta vamos criar, classe e métodos que vamos utilizar em nosso codigo.
Em seus projetos vc ira criar, métodos que atendam o que vc precisa para rodar ali.
Caso vc não se recorde vimos isso na aula 06, conceitos do BDD.
Ande colocamos nossa automação para rodar, e observamos ela executando exatamente como esperado
Fundamentos de Automação de Testes Web: O curso começa com uma introdução aos conceitos fundamentais de automação de testes web, adequados para iniciantes.
Selenium com Python: Os alunos aprenderão a usar o Selenium, uma poderosa ferramenta de automação de testes, em conjunto com a linguagem de programação Python. Isso inclui a configuração do ambiente e a escrita de scripts de automação.
Abordagem Orientada a Objetos: O curso demonstra como aplicar a orientação a objetos em automação de testes, o que ajuda a criar scripts mais organizados e manuteníveis.
Behave: A ferramenta Behave é explorada em detalhes, permitindo que os alunos adotem a metodologia BDD (Behavior-Driven Development) para escrever cenários de teste legíveis em linguagem natural.
Estrutura Arquitetônica de Mercado: Os alunos aprenderão sobre as melhores práticas em termos de estrutura arquitetônica para automação de testes, garantindo que seus testes sejam escaláveis e eficazes.
Experiência Prática: O curso enfatiza a aplicação prática desses conceitos com exercícios e projetos para garantir que os alunos ganhem experiência real.
No geral, o curso é voltado para iniciantes que desejam adquirir as habilidades necessárias para automatizar testes web usando Selenium em Python, com foco na estrutura Behave e na criação de uma base sólida em automação de testes de qualidade.