CategoriesDev Blog,  Quality Assurance

Vou desenvolver um novo produto – quando devo envolver o QA?

Antes de mais nada, vamos elucidar o termo QA. QA é a abreviação de Quality Analyst, que é o profissional responsável por garantir a qualidade do produto final, mas também é o responsável por garantir a qualidade de todo o processo de desenvolvimento de software. É diferente do testador ou analista de testes (TA), que escreve os casos de testes e executa os testes manuais, mas não se envolve na qualidade do processo.

Agora vamos à resposta para a pergunta: Quando devo envolver o QA no desenvolvimento de um novo produto?

Independentemente do estágio do desenvolvimento, de o produto ser novo ou uma atualização em um já existente, a resposta é O quanto antes possível. Mas supondo que seja um produto novo, e que na sua equipe existam um ou mais QAs, esse envolvimento deve ser realmente ainda mais cedo, e vamos entender os motivos ao longo desse artigo. através de uma breve descrição da sua participação em cada fase da construção de um produto.

Na concepção do produto

Um QA pode ajudar no levantamento dos requisitos de DevOps, por exemplo, atuando na definição dos ambientes e das ferramentas necessárias para garantir a qualidade não apenas no nível funcional do software, mas em todo o processo de desenvolvimento. Um bom profissional irá ajudar na definição do fluxo de desenvolvimento, dos artefatos que devem ser gerados para a qualidade, como eles serão administrados, e em vários outros aspectos do desenvolvimento de software. A relação de responsabilidades e habilidades de um bom QA cabe facilmente em um outro artigo, mas muitos deles podem ser encontrados na literatura atual.

Ainda na fase de concepção do sistema, um QA experiente pode ajudar a equipe de análise de requisitos ou de UX (User eXperience) a definir os requisitos do produto e ajudar o cliente a entender quais suas reais necessidades, aproveitando sua vivência em diversos outros projetos /produtos em diferentes clientes.

Fase de análise

Depois, dentro de um contexto ágil, o QA pode (na verdade DEVE) ajudar o Product Owner a escrever os critérios de aceite das stories, e também a melhorar a qualidade dos artefatos, ajudando na tradução das necessidades dos clientes em uma visão facilmente compreendida por um desenvolvedor. A arte de converter requisitos em stories que o desenvolvedor compreenda de forma assertiva não é dominada tão facilmente, e devido ao fato do QA estar sempre próximo da equipe de desenvolvimento e do PO, muitas vezes consegue capturar as nuances que envolvem essa conversão melhor do que ninguém. Dessa forma, também é seu papel ajudar na qualidade dos artefatos gerados na fase de análise.

Desenvolvimento e testes

Nessa fase, o QA já deveria estar totalmente integrado ao time e ao produto, desempenhando, dentro do contexto ágil, suas atividades de analista de testes dentro das sprints: i) escrevendo os casos de testes; ii) executando os testes funcionais (e os outros que ele ache pertinentes); iii) coletando evidências; iv) relatando bugs; v) escrevendo os testes automatizados; e outros.

Caso esse não seja o cenário, e ele tenha sido envolvido no meio do desenvolvimento, terá que correr atrás do prejuízo durante as sprints. O primeiro passo será estudar as regras de negócio, executar testes exploratórios, escrever uma base de testes de regressão, executar os testes funcionais e abrir os muitos bugs que ele irá encontrar (seja em uma ferramenta ou em uma planilha, essa documentação é fundamental). Não menos importante, o QA precisa evangelizar o time nas práticas de qualidade, demonstrando o valor da qualidade a cada iteração.

Ao longo dos sprints, os bugs vão sendo priorizados e corrigidos, até que se chegue a uma estabilização do processo de desenvolvimento dentro da metodologia ágil.

Entrega e manutenção

Em muitas empresas, o QA é responsável por apresentar as entregas para os clientes, devido ao seu conhecimento das regras de negócio e a sua habilidade em manusear o sistema. Tem também a responsabilidade por manter a base de conhecimento não apenas dos produtos desenvolvidos, mas também toda a estrutura de documentação dos testes.

No entanto, se no desenvolvimento do seu novo produto, nenhum QA foi envolvido até agora, por favor não o coloque aqui nessa fase. Tenha compaixão.

Conclusão

Vimos nesse artigo a importância de envolver o QA (ou a equipe de QAs) no desenvolvimento de novos produtos, antes mesmo do início do desenvolvimento. Infelizmente a liderança de algumas empresas ou áreas tem a mentalidade de que o QA é apenas um bug finder, e que envolvê-lo próximo do marco de entrega, ao final de quase todo o ciclo de desenvolvimento do produto, é o suficiente para identificar os bugs e fechar o processo de validação.

A garantia da qualidade é obtida durante todo o ciclo de desenvolvimento, e é de responsabilidade de todo o time. Envolver um QA no final do processo é assumir um risco enorme de colocar no mercado um produto repleto de defeitos, que serão encontrados pelos usuários/clientes e terão de ser tratados pelo time de desenvolvimento ou pós-venda, de acordo com a cadência do time de desenvolvimento ou suporte.

Hoje em dia, em um mercado tão competitivo, é extremamente trabalhoso estabelecer uma relação de confiança entre cliente e fornecedor. Essa relação se inicia pela equipe comercial, passa por diversos níveis na empresa, e termina na manutenção pelo time de suporte do produto final que foi entregue. O vínculo criado durante todo esse processo pode até parecer ser o mais forte possível, mas se no final um produto cheio de defeitos for entregue, essa relação de parceria pode ser destruída em pouquíssimo tempo. Sendo assim, envolva o seu QA para ontem!

CategoriesDev Blog,  Quality Assurance

Cypress: o novo conceito em testes automatizados

Atualmente o trabalho de um bom QA (Analista de qualidade) é desafiador, devido ao cenário complexo em que os sistemas são desenvolvidos. Tendo como base esse cenário dentro de um contexto ágil, torna-se moroso o trabalho do QA quando necessita realizar a mesma bateria de testes mais de uma vez, para garantir assim a qualidade do software que será entregue. Diante disso, a importância da automatização de testes aumenta exponencialmente, pois facilita o trabalho desses profissionais, tornando a execução de testes de regressão mais simples, rápida e com resultados imediatos. A garantia da qualidade também é maior, pois um teste End-to-End (E2E) automatizado pode ser rodado após a entrega de um pacote e encontrar bugs(defeitos) em features anteriores, facilitando e agilizando o trabalho não só do QA como do desenvolvedor.

Existem no mercado muitas ferramentas que auxiliam e facilitam na automação de testes de software, cada uma com suas características, vantagens e desvantagens, e nesse artigo vamos conhecer uma delas: o Cypress.

Os testes automatizados basicamente permitem simular o comportamento do usuário no sistema via navegador. Hoje o mercado faz uso do framework Selenium para criação de testes automatizados E2E, este é bastante difundido no meio por ser uma ferramenta livre e gratuita, que permite a criação de scripts de testes pelas principais linguagens de programação como Java, Python, Ruby, C# e outras, mas conta com uma curva de aprendizado íngreme.

Uma alternativa recente é a ferramenta Cypress, um novo framework de testes também de código aberto e de fácil configuração, sem a necessidade de baixar inúmeras ferramentas e bibliotecas separadas para configurar seu conjunto de testes. Esse novo executor de testes auxilia e facilita muito a criação de testes automatizados E2E de forma simples, prática e rápida. Sua curva de aprendizado é bem menor e seus scripts são escritos via JavaScript. O Cypress veio para revolucionar e contribuir para um desenvolvimento de testes automatizados de maneira mais ágil.

O que é o Cypress?

Cypress é uma ferramenta poderosa de última geração desenvolvida especialmente para engenheiros de controle de qualidade (analistas QA) e desenvolvedores, que podem usá-la para os testes unitários. Totalmente baseado em uma nova arquitetura isenta do Selenium, apresenta o próprio painel exibindo exatamente o que está acontecendo durante a execução dos testes. À medida que o script é escrito é possível acompanhar como será a execução do teste através desse painel, auxiliando o técnico em quais partes precisam de ajustes no teste.

O Cypress utiliza o Node JS como servidor e interpretador de sua linguagem JavaScript. Trabalhando juntos, cypress e Node JS estão em constante sincronização e comunicação para execução de tarefas, tornando a experiência da escrita e execução dos testes muito mais ágil, já que o Cypress também opera na camada de rede, na leitura e alteração de tráfego na web em tempo real.

Cypress contém uma completa documentação disponível em cypress.io que facilita a escrita dos testes tornando-os mais confiáveis, com dicas e exemplos que podem ser aplicados sem haver necessidade de perder tempo na busca pela web já que todo conteúdo se encontra concentrado nesse site.

Por que utilizar o Cypress?

Seu principal foco é o teste E2E. Dentre uma gama extensa de ferramentas que utilizam o Selenium para automatização de testes, operando-os fora do navegador e executando os comandos remotamente pela rede, o Cypress surge para criar uma nova forma de automatizar os testes. Ele executa todos os testes no mesmo ciclo de execução do sistema que está sendo testado, sem usar o controle remoto que o Selenium utiliza para acesso ao sistema. Seu principal diferencial é ter sido desenvolvido para que os testes aconteçam simultaneamente ao desenvolvimento da aplicação. Claro que depende muito do processo utilizado no desenvolvimento, mas o Cypress sendo simples contribui com o aumento de produtividade no quesito de escrita de testes e aumenta a qualidade do sistema final.

Há possibilidade de criar testes apenas de front-end e back-end, não só testes E2E. Como ele tem o controle nativo da aplicação controlando-a de cima para baixo, além de operar dentro da camada de rede, lendo e alterando o tráfego da web em tempo real.

Os logs de comandos são gravados para revisitar posteriormente os resultados. Eles são exibidos em tempo de execução dos testes, à medida que os testes são escritos e salvos o Cypress já executa a automação para que o técnico possa verificar se o que foi codado está aderente ao teste, facilitando e muito no debug da automação.

Captura de tela para testes falhos e gravação de vídeos de toda execução dos testes, sem configurações extras uma vez que o Cypress tem acesso nativo ao SO uma vez que ele todo é instalado localmente na máquina, e não utilizado de forma remota, além de possibilitar criação de relatórios de testes de forma mais simples que o Selenium.

Cypress vs. Selenium

Cypress tem controle e acesso nativo a toda aplicação, e com esse recurso torna o teste muito mais rápido e confiável para quem está automatizando. Isso possibilita a criação dos casos de teste automatizados de forma simultânea com o próprio desenvolvimento da aplicação. O Cypress controla a aplicação de cima para baixo, onde assim interpreta o que ocorre fora e dentro do navegador que está sendo testado, fornece ndo resultados muito mais consistentes do que o Selenium, por conta de a ferramenta ser capaz de compreender os eventos assim que eles acontecem . Além de operar dentro da camada de rede, a ferramenta interpreta e altera o tráfego da web em tempo real.

Já o Selenium controla a aplicação de forma remota, é necessário um suporte diferente para cada tipo de navegador que será testado, e sua curva de aprendizado é bem ígreme, sendo necessária a instalação e configuração de inúmeras ferramentas e bibliotecas para que o conjunto do teste possa funcionar corretamente, uma vez que não são instalados localmente na máquina usando tais recursos de forma remota. O Selenium também necessita de várias ferramentas para auxiliar no controle dos navegadores, mas também é bem mais livre no quesito de linguagens de programação, pois tem suporte para a maioria das linguagens usadas atualmente.

Iniciantes em automação de teste? Use o Cypress!

Sem muito esforço para preparar a máquina para instalar essa super ferramenta. Instale:

  • IDE VSCode com suporte a linguagem de programação
  • JavaScript; Node.js
  • Cypress via npm no seu terminal
npm install cypress

Pronto! Para executar é só passar o comando abaixo via terminal.

./node_modules/.bin/cypress open

Uma GUI com vários exemplos de testes é aberta para poder acompanhar o quão rápido e fácil é utilizar os testes com Cypress.

A estrutura do teste já é construída assim que que a interface do Cypress é aberta, com as pastas Fixtures, Integration, Plugins e Support.

Todos os testes (Ex: seu_teste.spec.js) devem ficar na pasta Integration, essa é a pasta com todos os arquivos apresentados dentro da
Interface do Cypress. Já a pasta Fixtures contempla os arquivos .json que auxiliam inserção de massa de dados aos testes, assim o Cypress sozinho já sabe onde buscar os dados para rodar nos testes, basta chamar o arquivo com o .json correspondente em Fixtures. Dentro da pasta S upport pode-se inserir todos os arquivos .js de comandos que possam ser úteis nos testes, códigos que podem ser colocados em funções e chamados dentro dos testes, sem a necessidade de repetição de código. Por fim, na pasta Plugins há um arquivo (index.js) que contém todos os plugins adicionais que serão utilizados nos testes. O principal plugin instalado é o Xpath , que auxilia no mapeamento de elementos das aplicações, semelhantes as ferramentas listadas (https://www.w3schools.com/xml/xml_xpath.asp).

Após as devidas apresentações basta começar a codar os testes. Na interface do Cypress, além do log de comandos apresentado à esquerda, temos o app preview à direita, que auxilia e muito no mapeamento de elementos. Com a ferramenta playground, basta selecionar e clicar no elemento que deseja mapear e pronto, na parte superior do app preview você pode simplesmente “copiar” o comando do mapeamento do elemento, inserir no seu código de teste e fazer os Assertions.

Como vimos, em virtude de tudo que foi mencionado, o Cypress é uma ferramenta poderosa, completa e fácil de utilizar, e mesmo sendo iniciante você consegue criar um teste automatizado de forma simples sem precisar de tantas configurações para ter em mãos um teste robusto e monitorado. Claro que algumas dúvidas podem surgir, mas basta recorrer ao cypress.io para encontrar um exemplo que te ajude de forma concisa na vasta documentação disponível.

Proudly powered by Wpopal.com