
Sejam muito bem vindos, a essa imersão na qualidade de software.
Eu sou o Danilo e estarei aqui como o instrutor de vocês nesse primeiro curso sobre Automação de testes web com Cypress e Cucumber oferecido pela Garage Santty QA.
Primeiramente quero agradecer a todos por terem adquirido o curso, assim confiando no nosso trabalho e desejo que todo conteúdo atinja as expectativas de vocês.
Nesse curso teremos muitos assuntos interessantes, tanto para quem está iniciando na área, quanto para quem ja está na area e quer aprender algo novo seja para teu trabalho atual ou progredir na sua carreira.
O requisito principal desse curso é a vontade de realmente aprender algo novo. O foco do curso como já disse não é a parte de testes funcionais, mais teremos esse primeiro módulo sobre isso, para deixar todos mais tranquilo com os demais andamento do curso que será essencial, para entender pontos que trabalharemos nas automações.
No próximo video me apresentarei melhor para vocês, sobre quem eu sou, como iniciei na área, e minhas experiências nessa área tão incrível que é a Qualidade de Software, mas desde já deixo um canal aberto com todos vocês, com os meios disponíveis na plataforma e pelos grupos exclusivo de WhatsApp ou Telegram que estarei adicionando cada um de vocês, por isso é essencial deixar seu número de telefone e e-mail o mais atualizado possível, para que esse contato se torne mais efetivo.
Toda essa comunicação inclui dúvidas, criticas, sugestões de conteúdos ou qualquer outros assuntos que queiram falar sobre a área.
Espero que aproveitem demais todo conteúdo, assim como eu estou aproveitando para criar para vocês, da melhor maneira possível.
Abaixo deixo meu contato WhatsApp e Telegram:
Danilo Barbosa
Minhas redes sociais:
LinkedIn: https://www.linkedin.com/in/danilo-santana-barbosa/
LinkedIn Garage Santty QA: https://www.linkedin.com/company/santty-garage/
GitHub: https://github.com/dansantty/
Instagram: @dansantty
Discord: santtyd
YouTube: https://www.youtube.com/@santty.garage #emConstrução
Diante do grande crescimento da tecnologia no mundo, hoje temos uma gama enorme de produtos e serviços que dependem de um Sistema de informação. Esses sistemas mesmo sendo desenvolvidos por pessoas muito capacitadas tem a tendência a ter problemas, seja uma funcionalidade incorreta, uma falha de codificação, uma falha do servidor, uma regra de negócio não atendida etc...
Com esse cenário, surge uma profissão bem importante na área da tecnologia que é o Analista de Qualidade de Software, responsável por auxiliar, aplicar e evangelizar todo contexto de qualidade dentro de uma empresa ou projeto tecnológico
O que é qualidade de software?
ISO/IEC 9126
Segundo a norma ISO/IEC 9126 define qualidade de software como: A totalidade de características de um produto de software que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas.
Pressman(1994)
Por outro lado, segundo Pressman, "Qualidade de software é a conformidade de requisitos funcionais e de desempenho que foram explicitamente declarados, a padrões de desenvolvimento claramente documentados, e a características implícitas que são esperadas de todo software desenvolvido por profissionais".
Qualidade de software é a capacidade de um sistema de informação atender todas as necessidades e funcionalidades de um determinado produto solicitado por um cliente ou empresa, seguindo bons padrões de codificação e processos, antes, durante e após sua implementação para se ter o menor número de falhas possíveis.
O que é teste de software?
Todos os processos e passos de validações executadas, que ajudam a investigar se um determinado sistema de informação atinge seu objetivo de funcionalidade com base em sua especificação e que ajudam a prevenir e identificar defeitos
Não deixem de acessar o material complementar em materiais
Olá Galera, adicionei aqui um papo bem rápido para explicar para vocês sobre CTFL.
Vai estar disponível o link para download com o conteúdo de estudos imprescindível mesmo que não venham tirar a certificação.
1) O teste mostra a presença, não a ausência de defeitos. Os testes podem mostrar que os defeitos estão presentes no objeto de teste, mas não podem provar que não há defeitos (Buxton 1970). Os testes reduzem a probabilidade de defeitos não serem descobertos no objeto de teste, mas, mesmo que nenhum defeito seja encontrado, os testes não podem provar a corretude do objeto de teste.
2) Testes exaustivos são impossíveis. Testar tudo não é viável, exceto em casos triviais (Manna 1978). Em vez de tentar testar exaustivamente, as técnicas de teste (ver capítulo 4), a priorização de casos de teste (ver seção 5.1.5) e os testes baseados em riscos (ver seção 5.2) devem ser usados para concentrar os esforços de teste.
3) Testes antecipados economizam tempo e dinheiro. Os defeitos que são removidos no início do processo não causarão defeitos subsequentes nos produtos de trabalho derivados. O custo da qualidade será reduzido, pois menos falhas ocorrerão posteriormente no SDLC (Boehm, 1981). Para encontrar defeitos logo no início, os testes estáticos (ver capítulo 3) e os testes dinâmicos (ver capítulo 4) devem ser iniciados o mais cedo possível.
4) Os defeitos se agrupam. Um pequeno número de componentes do sistema geralmente contém a maioria dos defeitos descobertos ou é responsável pela maioria das falhas operacionais (Enders 1975). Esse fenômeno é uma ilustração do Princípio de Pareto. Os agrupamentos de defeitos previstos e os agrupamentos de defeitos reais observados durante o teste ou em operação são uma entrada importante para o teste baseado em risco (ver seção 5.2).
5) Os testes se degradam. Se os mesmos testes forem repetidos muitas vezes, eles se tornarão cada vez mais ineficazes na detecção de novos defeitos (Beizer 1990). Para superar esse efeito, talvez seja necessário modificar os testes e os dados de teste existentes, e talvez seja necessário escrever novos testes. Entretanto, em alguns casos, a repetição dos mesmos testes pode ter um resultado benéfico, por exemplo, em testes de regressão automatizados (ver seção 2.2.3).
6) Os testes dependem do contexto. Não existe uma única abordagem universalmente aplicável aos testes. Os testes são feitos de forma diferente em contextos diferentes (Kaner 2011).
7) Falácia da ausência de defeitos. É uma falácia (ou seja, uma concepção errônea) esperar que a verificação do software garanta o sucesso de um sistema. Testar exaustivamente todos os requisitos especificados e corrigir todos os defeitos encontrados ainda pode produzir um sistema que não atenda às necessidades e expectativas dos usuários, que não ajude a atingir os objetivos de negócio do cliente e que seja inferior a outros sistemas concorrentes. Além da verificação, a validação também deve ser realizada (Boehm, 1981).
Abaixo deixarei o link para download do documento do ISTQB para certificação CTFL
Sugiro que pesquisem mais informações sobre a certificação em fontes relacionadas na internet.
Artigo sobre iniciar em testes de software:
https://medium.com/@dansantty/testes-de-software-p...
Estruturas de um bom teste - Cenário de teste
Antes de iniciar a escrita de um caso de teste, precisamos identificar o cenário em que estamos, não é simplesmente olhar para um funcionalidade e sair escrevendo passo de execuções sem se ter uma estrutura lógica e organizada do teste proposto.
Ex. “Um sistema de cadastro de perfil de um usuário do Facebook”
- Cadastro do usuário
- Login ( Acesso a aplicação )
- Adicionando amigos
Estruturas de um bom teste - Caso de teste
O caso de teste pode ser definido como um sub-cenário de teste, numa estrutura hierárquica um Cenário de Teste pode possuir n’ casos de teste. Um caso de teste é uma instrução passo a passo de uma execução de teste, o mesmo deve ter uma descrição resumida(o que o caso realiza), passos de uma execução, parâmetros de uma execução, e os resultados esperados.
Quando pensamos em um caso de teste não só devemos pensar nos caminhos felizes de um fluxo, como também nos caminhos alternativos, afinal a maioria dos defeitos encontrados se dão nesses fluxos. As duas maneiras mais utilizadas para detalhes de uma execução são a Tradicional(step by step) e o famoso BDD.
Estruturas de um bom teste - Step by Step
Step by step ou passo-a-passo é um tipo de escrita tradicional para um caso de teste, nela é definida uma forma detalhada de cada passo da sua execução onde nos obriga a termos uma evidência de cada resultado obtido.
Ex. “Cenário: Login” - “Caso de teste: Login com sucesso no app”
Passo 1 - Digitar nome de usuário
Resultado: Usuário preenchido e visualizado com sucesso
Passo 2 - Digitar senha
Resultado: Senha preenchida e oculta no formato ‘****’
Passo 3 - Clicar no botão entrar
Resultado: Acesso efetuado com sucesso na Home do app
Estruturas de um bom teste - BDD
Behavior Driven Development ou Desenvolvimento guiado por comportamento, a princípio essa metodologia de escrita foi criada para auxiliar no desenvolvimento de uma aplicação onde os desenvolvedores antes de escrever qualquer código, escreviam o comportamento que aquela funcionalidade deveria ter, assim assumindo que as regras de negócios estariam sendo atendida bem como pessoas menos técnicas envolvidas no projeto poderiam entender do que se tratava cada implementação. Porém sua utilização não foi bem como esperado, com os desenvolvedores utilizando cada vez menos essa prática, os analista de automação foram absorvendo essa ideia e utilizando esse método para escrever seus códigos de automação, isso cada vez mais se aproximou da comunidade e hoje também utilizamos para escrever detalhes para testes funcionais.
No BDD a maneira de escrita é bem mais objetiva do que detalhada, pois nela escrevemos diretamente os passos que temos e suas entradas e ao final do fluxo definimos o resultado esperado, uma particularidade é que temos um padrão de escrita desse processo seguido pelos blocos DADO, QUANDO, ENTÃO e com exceções E.
Ex. “Cenário: Login” - “Caso de teste: Login com sucesso no app”
Dado que eu digite nome de usuário
E minha senha
Quando clicar no botão entrar
Então acesso com sucesso a Home do app
Vamos praticar?
Selecionando uma das funcionalidades abaixo com seus requisitos, vamos criar aqui cenários de testes seguindo qualquer um dos dois tipos de escritas mencionados.
Lembrando que podem pesquisar sobre as escritas em fontes externas e ao final, precisamos postar nossos casos de testes na comunidade, para validarmos juntos.
CADASTRO DE USUARIO
Sistema deve permitir somente um cadastro por email
Os campos de cadastro são e-mail, nome, telefone, senha e foto
Somente os campos e-mail, senha e nome são obrigatórios
A senha deve obrigatoriamente conter letra, número e caractere especial(min. 6, max. 10)
Deve haver a possibilidade do usuário criar seu cadastro a partir da sua conta gmail
ACESSO AO SISTEMA
Permitir que o usuário acesse o sistema
Necessário possibilidade de recuperação de senha
Existir validações para cenários adversos na tentativa de login com algum erro
POSTAGEM DE FEED
Possibilidade do usuário postar um feed com foto e comentário
Obrigatoriamente o usuário deve ao menos incluir uma foto na sua postagem
Comentário na postagem não é obrigatório
O usuário deve ter a possibilidade de apenas recortar sua foto antes da postagem
Quando houver comentário o sistema deve ter a capacidade de identificar palavras ofensivas e ocultar
O que é automação de testes?
De modo geral a automação de testes é o processo que consiste em codificar uma aplicação para que ela seja capaz de interagir com outra aplicação e realizar todas as tarefas que podem ser realizadas manualmente por uma pessoa de maneira totalmente autônoma. Seja essa aplicação mobile, web, desktop, microservices em uma API, etc.
Por que automatizar nossos testes?
Automatizamos nossos testes com intuito de ganhar mais valor e rapidez nos processos de execução de testes. Isso quer dizer que todo processo que de certa forma automatizamos nos pode economizar dinheiro e tempo, gerando assim mais assertividade nas validações e reports mais precisos nas execuções de determinadas tarefas.
Deixarei um conteúdo extra que ja li algumas vezes e tem sido de fácil entendimento para a comunidade, é um conteúdo público e não é de minha autoria.
As fontes de pesquisas estão em materiais.
Quando automatizar um teste?
Em muitos casos não teremos a possibilidade de automatizar um sistema completo, até mesmo podemos dizer que pequenos projetos podem não ter a necessidade de se criar uma automação. Dito isso a automação de uma aplicação precisa passar por alguns passos até se definir se ela deve ou não ser automatizada e até que ponto isso deve ocorrer.
Independente da plataforma que vamos utilizar devemos levar em consideração todo o contexto da aplicação em que pretendemos automatizar.
Quais dados trafegam por esse produto?
Quantidade de usuários que vão utilizar?
Se é uma aplicação estática.
Se teremos recursos em cloud para execução dessa automação. Entre outras informações relevantes.
Node.js é um runtime de JavaScript, criado por Ryan Dahl em 2009. Foi desenvolvido em cima do motor JavaScript V8 — engine criada pelo Google e utilizado no Chrome e Chromium — , que leva o processamento e renderização do JavaScript para o lado do servidor.
Node.js usa um modelo de I/O não bloqueante orientada a evento que o torna leve e eficiente, que possibilita criar aplicações rápidas, escaláveis e estáveis. Desde seu surgimento, vem ganhando crescente espaço entre profissionais de tecnologia do Brasil e do mundo.
Fonte: https://medium.com/@alexribeirodev/o-que-e-nodejs-...
O Visual Studio Code ou VS Code é uma IDE ou Editor de códigos criada pela microsoft a principio para ser utilizada para desenvolvedores na plataforma Windows, mais tarde sendo disponibilizado para os demais sistemas operacionais. O VS Code suporta a maioria das linguagens de programação utilizadas nos dias atuais, com seu suporte há diversos plugin, essa única ferramenta pode ser um ambiente robusto para se criar qualquer tipo de aplicação.
Javascript é uma linguagem de programação inicialmente projetada para interagir com elementos de páginas web. Nos navegadores web, o JavaScript consiste em 3 partes principais:
ECMAScript que fornece a funcionalidade principal.
O Document Object Model (DOM), que fornece interfaces para interagir com elementos em páginas web.
O Browser Object Model (BOM), que fornece API para interagir com navegadores de internet.
JavaScript permite adicionar interatividade em uma página web. É frequentemente usado com HTML e CSS para aprimorar a funcionalidade de uma página web, como validar formulários, criar mapas interativos e mostrar gráficos animados.
Quando uma página web é carregada, ou seja, depois do HTML e CSS terem sido baixados, o motor JavaScript do navegador executa o código JavaScript.
Então o código JavaScript modifica o HTML e o CSS para atualizar dinamicamente a interface do usuário.
Em materiais, deixarei disponível a vocês um curso externo no YouTube da RBTech se sentirem vontade de aprender conceitos básicos de JavaScript o qual não iremos falar nesse curso.
O intuito dessa aula é fazermos um simples código demonstrando qual a função do JavaScript em páginas web, espero que aproveitem e utilizem bastante do portal W3Schools que vou deixar como referência em material.
Todo código ou padrão que precisar fazer em JavaScript ou qualquer outra linguagem, podem encontrar tutoriais no próprio W3Schools.
Aula rápida para aprendermos instalar extensões ao nosso VSCode e instalaremos 3 extensões que precisaremos utilizar.
Cypress é um framework baseado em JavaScript para criação de automação de teste frontend para testes regressivos de aplicações web. Foi criado especialmente para equipe de engenheiros de qualidade em 2017 com intuito de ser um framework de fácil aprendizado e implementação e também independente, ou seja, não depender de outras ferramentas ou drivers externos para exercer sua função.
Não se é considerado boa prática mais com Cypress também é possível realizar testes de backend, como realizar requisições em determinada API.
Por todos esses recursos oferecidos, hoje é uma dos frameworks de automação mais utilizado no mercado, possibilitando a existência de muitas oportunidades para quem tenha o domínio em sua utilização.
Falando agora um pouquinho de como iniciar um projeto Cypress e um pouquinho sobre sua estrutura.
Não deixem de deixar comentários com suas dúvidas, sugestões para todo conteúdo.
O Page Objects Model (POM), é um modelo de desenvolvimento criado para estruturar melhor nossos projetos de automação e documentar aplicações de maneira mais organizada.
Bora aplicar nosso primeiro modelo POM aqui?
Nessa aula vou explicar alguns conceitos básicos e na prática faremos a aplicação de um PageObjects na estrutura que vamos utilizar no nosso projeto, há outras maneiras de se aplicar esse conceito, então estaremos seguindo em uma das mais usadas com a integração com a ferramenta Cucumber. Não deixem de praticar junto comigo :)
Não deixem de compartilhar as dúvidas que venham ter e sugestões para melhoria e melhor entendimento do nosso conteúdo.
Último aula do módulo 3 para avançarmos para nosso Hands on, espero que tenha absorvido o máximo de conhecimento para nossa prática ficar um pouco mais clara. De qualquer maneira podem sempre voltar aos módulos anteriores para consultas, ou ainda melhor, me contactar através dos nossos canais de comunicação.
Aguardo vocês lá galera.
Fala galera, nesse video explicarei os passo para o nosso desafio.
DESAFIO 1
1 - Acessar a home da aplicação PHP Travels: https://phptravels.com/demo/
2 - Preencher os dados de cadastro no formulario Instant demo request form
3 - Resolver a adição pegando os valores existente
4 - Clicar em Submit
DESAFIO 2
1 - Vamos acessar o modulo Admin: https://phptravels.net/admin
2 - Realizar o Login com o usuario e senha abaixo:
Nome de usuário: admin@phptravels.com
Senha: demoadmin
3 - Clicar em Users
4 - Clicar em Customers
5 - Clicar em Add
6 - Realizar preenchimento dos dados do usuário
7 - Clicar em Save
8 - Acessar todos Usuários "All Users"
9 - Validar que seu usuário está na lista, da maneira que achar melhor
Requisitos:
- Deve ser um novo projeto
- Como são dois testes, cada um deve ter sua própria feature
- Não esqueçam das regras de PageObjects, cada página deve possuir, seus próprios elementos, ações(pages) e steps
- O projeto pode ter duas baseUrl, estejam a vontade se quiserem o fazer.
Site teste: https://phptravels.com/demo/
Site utilizado nos testes: https://phptravels.net/admin
Nos recursos estarão disponíveis diversos sites públicos que podem utilizar nos testes de vocês.
Tudo que começa tem um fim e aqui estamos, primeiramente quero agradecer a cada um que escolheu esse treinamento, mesmo com todas as incertezas hoje que temos ao mercado, e em cima de diversos outros conteúdos que também temos disponíveis na web, para mim foi uma honra tirar um pouco do meu tempo e conhecimento para ajudar a quem busca crescimento nessa área da qualidade de software.
Espero mesmo que o conteúdo aqui tenha atingido as expectativas de vocês, e aos que não atenderam peço minha imensas desculpas e agradeceria o feedback para que eu possa me sair melhor na próxima vez.
Um abraço grande a todos, e nos vemos em breve nos próximos treinamento.
*Não se esqueçam de passarem no módulo 5 e darem um passo a mais em cima de todo esse conteúdo que aqui aprendemos.
Aula introdutória sobre Utilização do GIT, não esqueçam de acessar os recursos com complemento da aula
Vamos realizar nosso cadastro no portal GitHub que é o escolhido para armazenar nossos repositórios.
Olá galera, nessa pequena aula vamos cria nosso repositório GIT no portal GitHub.
Vamos instalar o GIT na nossa máquina para criarmos nossos repositórios locais, para conseguir lhe dar com os repositórios online da nossa conta GitHub
O curso Automação de testes Web com Cypress & Cucumber, visa o rápido entendimento e aprendizado sobre automação de testes com uma das ferramentas mais utilizada no mercado nos dias atuais, além de aprender conceitos básicos sobre automação também iremos falar sobre BDD e sua utilização dentro da qualidade de software com o framework Cucumber. Aprenderemos conceitos sobre Page Objects Model (POM) e como essa estrutura pode se comparar aos padrões de projetos atuais voltado a Automação de testes de software. Tudo isso iremos trabalhar aplicando todos esses aprendizados em um sistema de demonstração publicado na internet, simulando um ambiente totalmente real. Ao final do curso estarão aptos a desenvolver projetos web de pequena e média complexidade aplicando todos os conceitos aqui citados. Aproveito para destacar um Módulo Bonus Surpresa a todos novos alunos.
O curso tem duração de aproximadamente 6hrs e será composto por 4 módulos e 1 módulo bonus
1- Boas Vindas & Introdução Testes de Software
2- Introdução a Automação, Instalação das Ferramentas
3- Falando sobre a estrutura Cypress com Cucumber e PageObjects
4 - Hands On - Automatizando Website
5 - Módulo Bonus - GIT o básico para QA
Todos alunos terão aos acesso a um grupo fechado dentro da área de membros e grupo exclusivo WhatsApp para apoio e dúvidas.