Quality Assurance: entenda o que é e como aplicar no seu projeto de desenvolvimento de software

Escrito por Cinthia Rodrigues Da Silva e Natania Pereira Inez

Quality Assurance (QA), que em português pode ser traduzido como “garantia de qualidade”, consiste em um processo de desenvolvimento e testes para garantir que o produto ou serviço a ser entregue aos clientes da empresa atenda aos padrões de qualidade pretendidos, tendo em conta a definição inicial da empresa e os desejos do cliente.

O objetivo desse processo é identificar desvios que possam afetar a qualidade final do projeto. Ao mesmo tempo, podendo identificar oportunidades de melhorias durante o processo.

Durante as reuniões destinadas a compreender o produto que atende às necessidades do cliente, nesse caso, o software, a equipe de desenvolvimento levanta muitos pontos.

É nesse contato inicial que a atuação do profissional de controle de qualidade (QA) já se torna evidente, visando compreender as necessidades do demandante e realizar testes e verificações com base nessas necessidades.

Com a participação dessa competência, as entregas ganham qualidade. Quando o produto é entregue, a expectativa é que a maioria dos bugs já tenham sido identificados e corrigidos. Além disso, a meta é garantir uma excelente experiência ao usuário.

Os processos relacionados à garantia de qualidade consistem essencialmente no monitoramento dos procedimentos para verificar se o que foi prometido está sendo cumprido com a qualidade desejada na entrega.

É por meio desses processos que a experiência do usuário é aprimorada, o que, por sua vez, ressalta a qualidade das entregas da empresa.

Entenda melhor como funciona o Quality Assurance neste artigo!

Qual é a importância do Quality Assurance?

O monitoramento da qualidade de um produto ou serviço é crucial para cultivar a fidelidade do cliente e destacar a empresa no mercado.

O controle de qualidade é uma forma de alinhar as entregas finais com as expectativas, assegurando que tudo esteja em conformidade com os padrões de qualidade.

Além disso, a implementação da garantia de qualidade traz consigo uma série de benefícios, tais como:

  • aumento da satisfação do cliente;
  • redução dos custos operacionais;
  • otimização das tarefas dos profissionais de TI;
  • minimização do retrabalho;
  • eliminação de gargalos;
  • aprimoramento da previsibilidade em projetos.

Qual o papel de um profissional de QA?

O profissional de QA tem a responsabilidade de conduzir as verificações e avaliações do produto com o propósito de identificar possíveis falhas.

De maneira sistemática, uma série de testes é executada no produto a fim de assegurar que ele atenda às especificações solicitadas, mantendo um alto padrão de qualidade e foco na experiência do usuário.

A missão primordial desse profissional é evitar que problemas cheguem ao usuário final. Além disso, é essencial manter uma visão abrangente dos potenciais problemas que podem surgir no futuro.

O ideal é mapear tais questões para prevenir contra prejuízos futuros. Por meio dos testes conduzidos pelo QA, obtém-se uma maior confiança de que o produto está alinhado com as expectativas do cliente e assegura-se um nível elevado de qualidade. 

Quality Assurance e desenvolvedores na pirâmide de testes

A principal função da pirâmide de testes é dar uma referência dos níveis e a quantidade ideal de testes que devem ser feitos a cada nível, isso para evitar retrabalho e, consequentemente, diminuir os custos de esforço e tempo no desenvolvimento de um software com manutenções futuras. 

Imagem: pirâmide de testes com o cenário ideal da quantidade de testes em cada nível.

Tipos de testes para melhorar a qualidade do software

Existem vários tipos de testes feitos para alcançar a qualidade do software que podem ser executados durante o processo de desenvolvimento.

Eles são executados com maior quantidade em determinados momentos no ciclo de vida do software. Seguem abaixo alguns dos principais tipos de testes:

Testes unitários 

Verificam ao nível de código se aquele método ou aquela classe executa conforme o esperado para as regras de negócio.

Por exemplo, é possível verificar se uma função que deveria retornar um tamanho máximo de produtos está realmente devolvendo o valor esperado. 

Testes de componentes

Limitam o escopo de uma parte do sistema que está sendo testada e validam as integrações com os módulos, programas, objetos, classes etc., que são testadas separadamente.

Tipicamente, os testes de componentes ocorrem com acesso ao código que está sendo testado e no ambiente de desenvolvimento.

Testes de integração

Visam avaliar a comunicação entre os módulos do sistema, e, para isso, é necessário verificar como essas unidades funcionam em conjunto.

Esses testes são muito importantes, pois evitam que os dados se percam e garantem que as diferentes partes da solução consigam trabalhar em conjunto, sem erros e de modo a assegurar a qualidade do produto final.  

Testes de API

Têm por objetivo validar um trecho de código disponibilizado por um webservice, API ou microserviços que pode ser acessado por uma URL, que também chamamos de endpoint. Os testes de API proporcionam vários benefícios para a aplicação, destacando-se:

  • Rapidez na verificação das funcionalidades, pois não há a necessidade de que a interface do usuário seja carregada, requerem menos códigos, e isso agiliza no momento da execução do teste;
  • Facilidade para encontrar os defeitos, pois os testes podem ser divididos em módulos, ou seja, todas as requisições que fazem parte daquele módulo poderão ser mapeadas e, caso surja algum erro, será possível detectar a qual módulo ele pertence;
  • Redução de custos e manutenção dos testes devido ao fato de que é possível executar os testes antes mesmo que a interface do usuário tenha sido criada.

Testes funcionais

Também conhecidos como testes de caixa-preta, os testes funcionais consistem em basicamente testar as funcionalidades conforme os Requisitos Funcionais (RF) do sistema.

Nesses testes, não há a necessidade de saber como foi escrito o código, qual a tecnologia que foi utilizada ou qual é a arquitetura do sistema. Para efetuar esse tipo de teste, basta saber o que é esperado de saída do sistema de acordo com as entradas feitas, como ilustrado na figura abaixo.

Imagem: testes funcionais.

Os testes de caixa-preta são mais viáveis do ponto de vista de precisar de menos artefatos para sua realização. Porém, são os testes mais demorados, haja vista a necessidade de uma análise minuciosa dos critérios de aceite, além da leitura e da interpretação dos requisitos do sistema.

Testes automatizados

São programas que executam determinadas rotinas para testar o sistema. Utiliza-se os testes automatizados principalmente com o intuito de agilizar os testes que muitas vezes são repetitivos.

Por exemplo, foi adicionado uma nova tela no sistema que precisa ser testada, porém, até o testador conseguir chegar naquela determinada tela ele precisa executar um fluxo grande, passando por várias telas que já foram testadas e validadas até chegar de fato na nova funcionalidade. 

Então, nesse cenário, é interessante a criação de um teste automatizado que verifica se o fluxo continua funcionando e se a nova funcionalidade criada foi implementada conforme o esperado.

Outra aplicação dos testes automatizados seria na verificação de todos os endpoints que existem no sistema de uma única vez.

Com a implementação dos testes automatizados, é possível executar o programa e fazer uma varredura para verificar se as rotas que foram implementadas sofreram algum impacto após a mudança de algum serviço ou inserção de novas funcionalidades no sistema. 

Ferramentas para efetuar testes automatizados:

  • Selenium;
  • Cypress;
  • Robotium.

O tempo de resposta desses testes é mais rápido, porém, vale ressaltar que isso não inibe a necessidade de implementação de testes manuais.

É importante destacar que testes manuais possibilitam encontrar bugs extras que testes automatizados talvez não conseguiriam detectar.

Recomenda-se principalmente a sua utilização para encontrar bugs de layout, tradução e de usabilidade, por simular a visão do usuário final.

QA na prática: como PTI-BR promove a garantia de qualidade dos projetos de software

O PTI-BR mantém uma equipe QA especializada no Centro de Tecnologias Aplicadas que já atuou em um grande projeto da Itaipu, o Sistema de Apoio à Manutenção (SAM).

Nós, do PTI-BR, identificamos diversos erros e melhorias no sistema que foram corrigidos ao longo do desenvolvimento do software. Visando à qualidade do produto que estava sendo entregue, a equipe de qualidade do PTI-BR fez o uso da metodologia de testes de caixa-preta para aplicar os testes nesse projeto.

Com base na leitura e na interpretação dos Requisitos Funcionais, na comunicação com a equipe do projeto durante todo o ciclo de desenvolvimento, na utilização de metodologias ágeis e no uso de ferramenta de gestão de conhecimento (Jira), foi possível compreender o que era esperado pelo usuário final de modo que o sistema atendesse às suas expectativas.

Utilização de diversos projetos

O PTI-BR aplicou testes em diversos projetos, alguns deles como o Monitoramento de Veículos Elétricos (MoVE), Patinete e Sistema Integrado de Monitoramento Ambiental (SIMA), a atuação foi feita por meio dos testes exploratórios, basicamente trata-se de uma investigação no sistema em busca de erros ou melhorias sem ter as histórias de usuário definidas.

Registros de teste

Para os registros dos testes foi feito o uso do Trello e do Planner. Nessas plataformas, eram documentados os casos de testes, mapeando os erros que podiam ser de layout, tradução ou funcionalidade.

A esses registros damos o nome de evidências dos testes, com elas podemos conversar com o desenvolvedor e demais integrantes da equipe e pontuar em qual versão do sistema foi encontrado o erro, em qual tela, em qual funcionalidade, isso com o intuito de facilitar o entendimento do problema. 

Abordagem Scrum

Para aprimorar a organização dos projetos, o PTI-BR implementa a abordagem Scrum, uma metodologia ágil que prioriza entregas incrementais, ou seja, as funcionalidades são desenvolvidas gradualmente antes da entrega final do projeto. 

Essas funcionalidades são denominadas histórias, e a função dos testes é garantir a qualidade dessas entregas. 

Normalmente, essas histórias são organizadas em cartões, e o fluxo Kanban é adotado para gerenciá-los.

Esse fluxo é representado por colunas, como “A fazer”, “Em andamento”, “Em desenvolvimento”, “Testes”, “Revisão” e “Concluído”, que indicam em que fase o cartão da funcionalidade se encontra. O QA desempenha um papel crucial quando uma história está na coluna “Em teste”.

Após a conclusão dos testes e a confirmação de que a funcionalidade atende aos requisitos, ela é encaminhada para a revisão.

Aprovação do usuário

Nesse ponto, a validação do usuário entra em jogo, com o usuário decidindo se considera a história como entregue, movendo-a para a coluna “Concluído”, ou se a história precisa retornar à coluna “A fazer”.

Essa estratégia representa a forma pela qual o PTI-BR assegura a participação ativa do cliente nas entregas, garantindo, desse modo, que tudo esteja alinhado com a satisfação do cliente. 

Para gerenciar essa organização das histórias, são utilizadas ferramentas de gerenciamento de projeto, como Jira e Trello. Essas ferramentas auxiliam na gestão de tarefas e no acompanhamento do progresso do projeto, facilitando a colaboração e a comunicação da equipe. É por meio dessas ferramentas que documentamos os casos de testes com textos, imagens e vídeos do sistema relatando erros e melhorias relacionadas à história, conforme exemplificado no teste feito no projeto Sistema de Monitoramento de Alerta (SMA). 

Legenda: exemplo de documentação do caso de teste utilizando o Trello no projeto SMA.

Legenda: exemplo da captura de tela e destaque das diferenças de horários reportados no Card-87.

Teste de caixa-preta

Um dos testes conduzidos pelo PTI é o teste de caixa-preta, que não requer um profundo conhecimento do código-fonte dos projetos.

Nesse contexto, o enfoque ideal está nos testes voltados para a experiência do usuário, visando identificar elementos que possam afetar a usabilidade do sistema. 

Isso abrange a otimização de aspectos de layout, como aqueles relacionados à experiência do usuário (UX), como cores, tipografia, imagens e espaçamento.

A equipe de qualidade do PTI é responsável por garantir que esses elementos estejam alinhados com os mockups aprovados pelo cliente e que não interfiram na usabilidade.

Testes de requisição

Uma outra maneira pela qual o PTI mantém a qualidade dos projetos é por meio dos testes de requisição, que englobam a avaliação dos endpoints do projeto, ou seja, os pontos de entrada ou saída de informações do sistema.

Esses testes são vitais para garantir que os endpoints estejam em conformidade com as especificações e os requisitos estabelecidos, possibilitando a identificação de eventuais problemas que possam surgir, especialmente após a implementação das interfaces de usuário.

Esse procedimento antecipa e atenua questões, reduzindo a ocorrência de futuras falhas, contribuindo, assim, para a estabilidade e a eficiência do sistema.

Para efetuar estes testes, é utilizada a ferramenta de testes Cypress, e para geração de relatório, utilizamos o framework mochawesome, que, como mostrado na imagem a seguir, tem um descritivo de cada teste que foi executado com êxito, sem falhas e quanto tempo levou para ser processado.

Legenda: relatório de testes com o framework mochawesome.

Oportunidade de soluções tecnológicas com qualidade

O PTI-BR aplica soluções com qualidade nos produtos que são desenvolvidos em seu ecossistema, de forma a atender às expectativas do cliente e gerando mais confiança aos produtos e serviços desenvolvidos.

Fale conosco pelo e-mail nit@pti.org.br

Gostou deste conteúdo? Leia outros como este em nosso blog:

Referências:

  • A famigerada pirâmide de testes e a abordagem honeycomb. VórtxLab, 30 ago. 2021. Disponível em: <https://lab.vortx.com.br/a-famigerada-piramide-de-testes/>. Acesso em: out. 2023.
  • Definition quality assurance (QA). Techtarget, jul. 2019. Disponível em:
  • <https://www.techtarget.com/searchsoftwarequality/definition/quality-assurance>. Acesso em: out. 2023.
  • Testes de API (Parte 1) — Entendendo e botando a mão na massa com Postman. Medium, 26 fev. 2019. Disponível em:
  • <https://medium.com/@thiagogrespi/testes-de-api-parte-1-entendendo-e-botando-a-m%C3%A3o-na-massa-com-postman-b365923b83e1>. Acesso em: out. 2023.
  • Tipos de testes de software. USP, maio 2014. Disponível em:   <https://edisciplinas.usp.br/pluginfile.php/384739/mod_resource/content/1/Aula%205_2014_Tipos-de-teste-software-v2.pdf>. Acesso em: out. 2023. 
  • Quality Assurance: entenda o que é e como aplicar na gestão de TI. Kalendae, 19 mar. 2019. Disponível em: 
  • <https://kalendae.com.br/blog/quality-assurance/>. Acesso em: out. 2023.
  • Quality Assurance (qa): o que é e qual a importância para o seu negócio? Tallos, 9 fev. 2019. Disponível em: 
  • <https://tallos.com.br/blog/quality-assurance-o-que-e-e-qual-a-importancia/>. Acesso em: out. 2023.
  • Quality Assurance: o que é e por que é tão importante? Zendesk, 17 mar. 2023.
  • Disponível em: <https://www.zendesk.com.br/blog/quality-assurance-o-que-e-e/>. Acesso em: out. 2023.