Quando iniciamos um novo projeto precisamos pensar em todos os cenários possíveis de seu desenvolvimento. Por isso, é plausível que uma dessas etapas seja o teste na aplicação, ou seja, o teste de software. Nele teremos o auxílio para verificar se o sistema está condizente com as regras de negócio explícitas.

A principal consequência de não testar um software desenvolvido é a iminência de bugs desconhecidos. Dependendo do tamanho do aplicativo, podemos ter vários caminhos que o usuário pode prosseguir, com isso não é possível ter previsibilidade total quanto às possíveis falhas de nosso sistema.

Porém, ao seguirmos um fluxo de desenvolvimento como o TDD no qual é realizado os testes unitários e automatizados em nossa aplicação, diminuímos o risco de erros e aumentamos a confiança de nossas entregas. Neste artigo entenderemos um pouco mais sobre o mundo de testes de software, continue com a gente!

O que é teste de software?

O teste de software é um método para checar se a aplicação desenvolvida atende aos requisitos esperados e para garantir que o programa não tenha nenhum defeito.

Nesse fluxo, temos a execução de componentes de software e sistema usando algumas ferramentas manuais ou automatizadas para avaliar uma ou mais propriedades de interesse.

O objetivo do teste de software é identificar erros, lacunas ou requisitos ausentes em comparação com os requisitos reais.

Outra definição bastante comum é que o teste de software é a junção dos testes de caixa branca e caixa preta, que vamos falar mais a frente.

Desde quando um software é testado? Sim, desde o pós 2ª Guerra Mundial

Os testes de software chegaram junto com o desenvolvimento de software, que teve seu início logo após a segunda guerra mundial. O cientista da computação Tom Kilburn é o responsável por escrever o primeiro software, que estreou em 21 de junho de 1948 na Universidade de Manchester, na Inglaterra.

A depuração era o principal método de teste na época e assim permaneceu nas duas décadas seguintes. Já na década de 1980, as equipes de desenvolvimento passaram a olhar além de isolar e corrigir bugs de software e a testar aplicativos em configurações do mundo real. Isso preparou o terreno para uma visão mais ampla dos testes, que englobava um processo de garantia de qualidade que começou a fazer parte do ciclo de vida no desenvolvimento de software.

O que é e o que faz um testador de software?

Uma pessoa testadora de software é alguém que testa uma aplicação em busca de bugs, erros, defeitos ou qualquer problema que possa afetar o desempenho do software no computador ou no celular.

Pessoas que ocupam cargos de testadores de software fazem parte de uma equipe de desenvolvimento de software e realizam os testes funcionais e não funcionais da aplicação utilizando técnicas manuais e automatizadas.

Elas executam principalmente procedimentos de teste de qualidade de software no programa. São pessoas que, geralmente, têm um forte domínio sobre ferramentas e técnicas de teste de qualidade de software, junto com algum nível de conhecimento ou experiência em desenvolvimento de software. Assim, testadores de software garantem que a aplicação opere conforme o esperado, nos requisitos funcionais quanto nos não funcionais.

Algumas das técnicas com as quais pessoas testadoras de software devem ter alguma experiência ou conhecimento são:

  • Teste unitário;
  • Teste de sistema;
  • Teste da caixa preta;
  • Teste de carga;
  • Teste de aceitação do usuário (em inglês: user acceptance testing — UAT);
  • Teste de escalabilidade.

Quais as diferenças entre teste, validação e verificação de software?

O teste no software em si é o momento em que o programa é executado para que o time de engenharia possa avaliar como será a interação do programa com clientes finais.

Já a verificação de software é um processo que determina a qualidade do programa. A verificação inclui todas as atividades associadas à produção de software de alta qualidade, ou seja: teste, inspeção, análise de projeto, análise de especificações e assim por diante. A verificação é um processo relativamente objetivo, ou seja: se os vários processos e documentos são expressos com precisão suficiente, nenhum julgamento subjetivo deve ser necessário para verificar o sistema.

A validação, por outro lado, é um processo no qual os requisitos do cliente são realmente atendidos pelas funcionalidades do programa. A validação é feita no final do processo de desenvolvimento e ocorre após a conclusão das verificações.


A validação é um processo no qual os requisitos de clientes são realmente atendidos pela funcionalidade do software. A validação é feita no final do processo de desenvolvimento e ocorre após a conclusão das verificações.

Quais são as fases do desenvolvimento de software?

Existem três fases de teste de software — alfa, beta e gama. Elas são executadas uma após a outra e, juntas, garantem que o programa tenha uma ótima qualidade.

Alpha

O teste alfa é uma verificação feita pela equipe de desenvolvimento interno ou pela equipe de controle de qualidade, raramente por clientes. Seu principal objetivo é descobrir bugs de software que não foram encontrados antes e problemas perdidos na fase de coleta de requisitos. No estágio de teste alfa, o componente do software é verificado em condições da vida real, imitando as ações dos usuários finais.

A fase alfa pode incluir os seguintes tipos de teste: fumaça, sanidade, integração, sistemas, usabilidade, IU (interface do usuário), aceitação, regressão e teste funcional. Se um erro for detectado, ele é imediatamente encaminhado para a equipe de desenvolvimento. A próxima etapa é a beta.

Beta

O teste beta pode ser chamado de teste de pré-lançamento. Ele pode ser conduzido por um número limitado de pessoas usuárias finais chamadas de testadores beta antes da entrega oficial do produto. O principal objetivo do teste beta é verificar a compatibilidade do programa com diferentes configurações de software e hardware, tipos de conexão de rede e obter feedback sobre a usabilidade e funcionalidade do sistema.

Existem dois tipos de teste beta:

  • Beta aberto: disponível para um grande grupo de pessoas usuárias finais ou interessadas.
  • Beta Fechado: disponível apenas para um número limitado de pessoas usuárias selecionadas especialmente para o teste beta.

Ao decorrer do teste beta, as pessoas usuárias finais detectam e relatam os bugs que encontraram. Todas as atividades de teste são realizadas fora da organização que desenvolveu o produto. Após a fase beta, vem o teste gama.

Gama

O teste gama é a parte final do processo de teste conduzido antes do lançamento de um software. Nele temos a garantia de que o produto está pronto para o lançamento no mercado de acordo com todos os requisitos especificados. O teste de gama concentra-se na segurança e funcionalidade do software, mas não inclui nenhuma atividade interna de controle de qualidade. 

Durante o teste gama, o software não sofre nenhuma modificação, a menos que o bug detectado seja de alta prioridade e gravidade. Mesmo porque a verificação inclui a checagem de certas especificações apenas e não de todo o sistema. 

Apenas um número limitado de pessoas usuárias realiza o teste gama e, geralmente, pessoas testadoras não participam. Já o feedback recebido após o teste gama é considerado como atualização para as próximas versões de software. Devido a um ciclo de desenvolvimento limitado, o teste gama geralmente é ignorado.

Quais as 3 formas de testar um software?

Existem 3 formas de fazer testes.

  • Teste manual: é o tipo de teste mais prático e é empregado por todas as equipes em algum momento. Claro, no ciclo de vida do desenvolvimento do sistema acelerado de hoje, o teste manual é difícil de escalar.
  • Teste automatizado: usa scripts de teste e ferramentas especializadas para automatizar o processo de teste de software.
  • Teste contínuo: vai ainda mais longe, aplicando os princípios do teste automatizado de maneira escalonada e contínua para obter a cobertura de teste mais confiável para o cliente. 

Quais são os tipos de teste de software? 

Como existem muitos tipos de teste, aqui está uma tabela com os mais comuns:

Tipo de testeDescrição
Teste de acessibilidadePrática de garantir que seus aplicativos móveis e da web estejam funcionando e sejam utilizáveis ​​por pessoas sem e com deficiências, como deficiência visual, auditiva e outras condições físicas ou cognitivas.
Teste de aceitaçãoGarante que a pessoa usuária final (cliente) possa atingir os objetivos definidos nos requisitos de negócio, que determinam se o software é aceitável para entrega ou não. Também é conhecido como teste de aceitação do usuário(a).
Teste de caixa pretaTeste em um sistema onde o código e os caminhos são imprevisíveis.
Teste de ponta a pontaTécnica que testa o fluxo de trabalho do aplicativo do início ao fim para garantir que tudo funcione conforme o esperado.
Teste funcionalVerifica se o aplicativo, site ou sistema estão fazendo exatamente o que deveriam.
Teste interativoTambém conhecido como teste manual, o teste interativo permite que testadores criem e utilizem testes manuais para aqueles que não usam automação e coletem resultados de testes externos.
Teste de integraçãoGarante que um sistema completo e integrado atenda a um conjunto de requisitos. É executado em um ambiente de hardware e software integrado para garantir que todo o sistema funcione corretamente.
Teste de cargaÉ um tipo de processo de teste de software não funcional que determina como o aplicativo se comporta ao ser acessado por várias pessoas simultaneamente.
Teste não funcionalVerifica a prontidão de um sistema de acordo com parâmetros não funcionais (desempenho, acessibilidade, UX, etc) que nunca são tratados pelo teste funcional.
Teste de performanceExamina a velocidade, estabilidade, confiabilidade, escalabilidade e uso de recursos de um aplicativo de software sob uma carga de trabalho especificada.
Teste de regressãoÉ executado para determinar se as modificações no código interrompem um aplicativo ou consomem recursos.
Teste de sanidadeRealizado após a correção de bugs, o teste de sanidade determina que os bugs foram corrigidos e que nenhum outro problema foi introduzido nessas mudanças.
Teste de segurançaRevelam as vulnerabilidades do sistema para garantir que o software esteja livre de quaisquer ameaças ou riscos. Esses testes visam encontrar quaisquer falhas e fraquezas potenciais no sistema de software que podem levar a uma perda de dados, receita ou reputação.
Teste de desempenho de usuário únicoVerifica se o aplicativo em teste tem um bom desempenho de acordo com o limite especificado, sem qualquer carga do sistema. Este benchmark pode ser usado para definir um limite realista quando o sistema está sob carga.
Teste de fumaçaValida a estabilidade de um aplicativo de software e é executado na construção inicial do software para garantir que as funções críticas do programa estão funcionando.
Teste de estresseÉ uma atividade de teste de software que testa a aplicação com uma carga além da capacidade operacional normal para validar os resultados obtidos.
Teste unitárioProcesso de verificação de pequenos trechos de código para garantir que as partes individuais de um programa funcionem adequadamente por conta própria, acelerando as estratégias de teste e reduzindo o desperdício.
Teste da caixa brancaEnvolve o teste da estrutura, arquitetura e código subjacentes do produto para validar o fluxo de entrada e saída e aprimorar o design, a usabilidade e a segurança.

Qual a importância e quais os benefícios de testar um software?

Como vimos, o teste de software envolve várias etapas, mas também traz muitos benefícios, como:

  • Custo-benefício: é uma das vantagens importantes dos testes de software. Testar qualquer projeto de TI a tempo ajuda a economizar dinheiro a longo prazo. No caso de os bugs serem detectados na fase anterior ao teste de software, custa menos para consertá-los.
  • Segurança: é o benefício mais vulnerável e sensível dos testes de software, já que as pessoas procuram por produtos confiáveis no mercado. Por isso, realizar o teste de software ajuda a remover riscos e problemas mais cedo.
  • Qualidade do produto: é um requisito essencial de qualquer produto de software e, com os testes, a equipe de desenvolvimento garante que um produto de qualidade seja entregue aos clientes.
  • Satisfação do cliente: o principal objetivo de qualquer produto é a satisfação do cliente. Nesse sentido, os testes de UI/UX garantem a melhor experiência das pessoas usuárias.

Quais atributos precisam ser testados em um teste de software?

A ISO e a IEC desenvolveram alguns padrões específicos para a modelagem de softwares, como a ISO/IEC 9126, um padrão internacional proposto para garantir a “qualidade de todos os produtos de software intensivo”, que inclui sistemas, como os de segurança crítica.

Nele, temos a estrutura do modelo de qualidade, que explica as relações entre as diferentes abordagens da qualidade e também identifica as características e subcaracterísticas de qualidade dos produtos de software. Assim, podemos ter um parâmetro de quais atributos precisam ser testados com mais prioridade em um teste de software. Vamos ver os principais a seguir.

Funcionalidade

Funcionalidades que vão satisfazer as necessidades implícitas da aplicação.

Confiabilidade

Um conjunto de atributos que afetam a capacidade do software de manter o nível de desempenho.

Usabilidade

Um conjunto de atributos que influenciam o esforço necessário para uso por um conjunto implícito de usuários.

Eficiência

Um conjunto de atributos que influenciam a relação entre o nível de desempenho do software nas condições estabelecidas.

Capacidade de manutenção

O esforço necessário para corrigir falhas e promover atualizações.

Portabilidade

A capacidade do software de ser transferido de um ambiente para outro.

Entenda o que é um plano de teste de software!

Um plano de teste é um documento detalhado que descreve a estratégia, objetivos, cronograma, estimativa, entregas e os recursos necessários para realizar o teste de um produto de software. O plano de teste nos ajuda a determinar o esforço necessário para validar a qualidade do aplicativo em teste.

Por isso, o plano de teste serve como um modelo para conduzir as atividades de teste de software como um processo definido, que é monitorado e controlado minuciosamente pelo gerente de teste.

Conheça o processo de Teste de Software e suas etapas!

Existem 11 passos no processo de teste de software. Vamos ver quais são elas:

  • Passo 1: avalie o plano de desenvolvimento e o status:
    Essa iniciativa pode ser um pré-requisito para reunir verificação, validação e plano de teste para avaliar a solução de software implementada. Durante esta etapa, pessoas testadoras desafiam a integridade e exatidão do plano de eventos. Com base na extensão e integridade do plano de projeto, testadores podem estimar a quantidade de recursos que vão obter para testar a solução de software implementada.
  • Passo 2: desenvolva o plano de teste:
    O plano de teste seguirá um padrão equivalente a qualquer processo de planejamento de software. A estrutura de todos os planos deve ser equivalente, mas o conteúdo variará com a percepção das pessoas testadoras de risco, que vão atribuir ao software um grau de risco relacionado a ele.
  • Passo 3: requisitos de software de teste:
    Requisitos incompletos, imprecisos ou inconsistentes causam a maioria das falhas de software. A incapacidade de acertar os requisitos durante a fase de coleta de requisitos também pode aumentar significativamente o custo de implementação. Por meio da verificação, pessoas testadoras devem determinar se os requisitos são precisos, completos e que não conflitam uns com os outros.
  • Passo 4: design de software de teste:
    Essa etapa testa o design externo e interno principalmente por meio de técnicas de verificação. A meta é que o planejamento atinja os objetivos desejados, também porque o design é eficaz e eficiente no hardware designado.
  • Passo 5: teste da fase de construção:
    O método escolhido para construir o software a partir do documento de design interno determinará o tipo e a extensão dos testes necessários. À medida que a construção se torna mais automatizada, menos testes serão necessários durante a construção. No entanto, se o software for feito usando o processo em cascata, ele está sujeito a erros e deverá ser verificado. A experiência mostra que é significativamente mais barato detectar defeitos durante a fase de desenvolvimento do que por meio de testes dinâmicos durante a etapa de execução do teste.
  • Passo 6: executar e registrar o resultado:
    A abordagem, os métodos e as ferramentas apresentados no plano de teste serão usados para validar se o código executável realmente atende aos requisitos de software declarados e, portanto, às especificações estruturais do projeto.
  • Passo 7: teste de aceitação:
    O teste de aceitação permite que as pessoas usuárias avaliem a aplicabilidade e a utilidade do software na execução de suas funções de trabalho do dia-a-dia. Assim, é testado aquilo que as pessoas usuárias acreditam que o software deve executar, em comparação com o que o software de estado de requisitos documentados deve executar.
  • Passo 8: relatório de resultados de teste:
    O relatório de teste é um processo contínuo. Pode ser oral e escrito. É importante que defeitos e preocupações sejam relatados às partes apropriadas o mais cedo possível para que as correções possam ser feitas com o menor custo possível.
  • Passo 9: instalação do software:
    Depois que a equipe de teste tiver confirmado que o software está preparado para uso em produção, a capacidade de se executar esse software no ambiente de produção em si deve ser testada. Com isso, testa-se a interface do software operacional, software relacionado e procedimentos operacionais.
  • Passo 10: teste de mudanças de software:
    Embora seja frequentemente mostrado como passo 10, aparecendo depois que o software é implementado, o conceito é adicionalmente aplicável a mudanças em todo o processo de implementação. Sempre que os requisitos mudam, o plano de teste deve mudar e o impacto dessa mudança nos sistemas de software deve ser testado e avaliado.
  • Passo 11: avaliação da eficácia do teste:
    A melhoria do teste pode ser melhor alcançada avaliando a eficácia do teste no topo de cada atribuição. Embora essa avaliação seja realizada principalmente por testadores, ela deve envolver pessoas desenvolvedoras, usuárias de software e profissionais de garantia de qualidade, se houver função na organização de TI.

Quais as principais ferramentas de teste de software?

Ferramentas de teste em teste de software podem ser definidas como produtos que suportam várias atividades de teste, começando com planejamento, coleta de requisitos, criação de build, execução de teste, registro de defeitos e análise de teste. Essas ferramentas de teste são usadas principalmente para testar a firmeza, eficácia e outros parâmetros de desempenho do software.

Existem várias ferramentas de teste de software disponíveis no mercado, o que pode dificultar na escolha para o seu projeto. Por isso, vamos categorizar e classificar três diferentes ferramentas. 

TestRail

Exemplo da interface da ferramenta TestRail, na qual é possível ver um gráfico com a porcentagem de pré-requisitos contemplados no teste e várias opções de automação.

TestRail é uma ferramenta escalonável, personalizável e baseada na web, usada para gerenciamento de casos de teste. Os seus principais benefícios são:

  • Gerencia com eficiência casos de teste, planos e execuções manuais e automatizados.
  • Entrega insights em tempo real sobre o progresso do teste com painéis informativos, métricas e relatórios de atividades.
  • Melhora a eficiência da equipe com marcos, listas pessoais de tarefas e notificações por e-mail.
  • Permite documentar os casos de teste com capturas de tela e os resultados esperados, além de disponibilizar modelos integrados flexíveis e opções para que a equipe crie seus próprios modelos personalizados.
  • Permite integração com ferramentas do pipeline de CI / CD / DevOps, incluindo JIRA, Bugzilla, Jenkins, TFS e muito mais.
  • Tem uma edição empresarial projetada para grandes equipes e projetos de missão crítica.
  • Oferece suporte para containers Docker.

Testpad

Exemplo de interface da ferramenta Testpad, na qual é possível ver uma tela de teste em execução com o status de cada requisito.

Testpad é uma ferramenta de teste manual mais simples e acessível que prioriza o pragmatismo sobre o processo. Em vez de gerenciar um caso de cada vez, ele usa planos de teste inspirados em listas de verificação que podem ser adaptados a uma ampla gama de estilos, incluindo testes exploratórios, o lado manual do Agile, BDD destacado por sintaxe e até mesmo o gerenciamento tradicional de casos de teste.

Algumas características principais:

  • Pessoas testadoras podem ser convidadas por e-mail sem precisar criar uma conta.
  • É simples o suficiente para ser usada por pessoas não testadoras, viabilizando que todas as pessoas possam ajudar na hora do lançamento do software.
  • É responsiva, com editor controlado por teclado com uma IU com tecnologia javascript.
  • Tem função “adicionar novos testes” durante o teste.
  • Sua integração com rastreadores de problemas é leve, incluindo JIRA.

Xray

Exemplo de interface da ferramenta Xray, na qual é possível ver um código sendo executado para rodar testes automatizados em uma aplicação.

Xray é um aplicativo de gerenciamento de teste manual e automatizado para controle de qualidade. É uma ferramenta completa que fica dentro e se integra perfeitamente ao JIRA. Seu objetivo é ajudar as empresas a melhorar a qualidade de seus produtos por meio de testes eficazes e eficientes.

Algumas características importantes:

  • Rastreabilidade entre requisitos, testes, defeitos, execuções.
  • Define pré-condições reutilizáveis e associa aos testes.
  • Organiza testes em pastas e conjuntos de teste.
  • Disponibiliza planos de teste para monitorar o progresso.
  • Entrega ambientes de teste.
  • Integra-se com estruturas de automação de teste (como Selenium, JUnit, Nunit e Robot).
  • Possui API REST integrada.
  • Permite integrações de CI (como Bamboo e Jenkins).
  • Possui relatórios integrados.

Quais as principais técnicas usadas nos testes de software?

As Técnicas de Teste de Software podem ser definidas como as diferentes maneiras e métodos de testar os programas e instruções, dessa forma garantimos que estejam funcionando bem e realizando as tarefas especificadas para as quais foram projetados.

Teste de Regressão

Alterações e atualizações são feitas no software continuamente. Por isso, o teste de regressão garante que novas versões ou atualizações não tenham criado problemas para outras áreas que funcionavam bem. O teste é realizado usando casos de teste anteriores e os novos resultados comparados com os resultados anteriores.

Teste de caixa preta

Esse é o teste feito em todo o sistema por pessoas que não têm nenhuma idéia sobre o design, estrutura e implementação do software. Ele é testado para erros na interface, desempenho, comportamento, estruturas de dados, funções, etc.

Teste de caixa branca

Semelhante ao teste de caixa preta, exceto que o design, a estrutura e a implementação do software são conhecidos pela pessoa testadora.

Teste de caixa cinza

Um teste que compreende os dois ideais do teste da caixa preta e da caixa branca: algumas partes do design, estrutura e implementação do item são conhecidas da pessoa testadora e outras não.

O que são testes de software automatizados

Testes automatizados, ou teste de automação, é uma técnica de teste de software executada usando ferramentas para executar um conjunto de casos de teste. Ao contrário, o teste manual é realizado por um ser humano sentado na frente de um computador, executando cuidadosamente as etapas do teste.

O software de teste de automação também pode inserir dados do teste no sistema, comparar os resultados esperados com os reais e gerar relatórios de teste detalhados. Porém, cabe dizer que a automação de testes de software exige investimentos consideráveis de dinheiro e recursos.

Quais os benefícios de automatizar os testes de software?

Os principais benefícios da automação de testes são:

  • Obter resultados até 70% mais rapidamente do que com o teste manual;
  • Cobertura de teste mais ampla de recursos do aplicativo;
  • Resultados mais confiáveis;
  • Garantia de consistência;
  • Economia de tempo e custos;
  • Melhora a precisão;
  • A intervenção humana não é necessária durante a execução;
  • Aumenta a eficiência;
  • Maior velocidade na execução de testes;
  • Scripts de teste reutilizáveis;
  • Teste com frequência e exaustivamente;
  • Mais ciclo de execução pode ser alcançado por meio da automação;
  • O software pode entrar no mercado mais cedo.

Como fazer um teste de software? O passo a passo completo!

Podemos testar vários tipos de software e de várias maneiras. O teste de aplicativos da web é ligeiramente diferente do teste de software tradicional porque os sites requerem uma conexão com a internet para funcionar. Além disso, os aplicativos da web são acessados através de diferentes dispositivos e navegadores.

Para testar todos os cenários possíveis e dadas as várias maneiras diferentes em que os usuários podem acessar o site, estratégias de teste adequadas precisam ser empregadas.

Neste tutorial, vamos nos concentrar no teste de sites e ver alguns tipos de teste de aplicativos da web com um checklist de coisas para fazermos.

O que é teste de site?

O teste de site ou teste de aplicativo da web visa validar os requisitos funcionais e não funcionais de um site.

Checklist do teste funcional do site

Para testes funcionais, verifique se:

  • Os links estão funcionando da maneira desejada.
  • Os botões estão funcionando da maneira desejada.
  • As validações dos campos, incluindo verificação obrigatória, verificação de caracteres aceitos, verificação de limite de caracteres, mensagens de erro, etc.
  • No momento do envio do formulário, os dados estão armazenados corretamente no banco de dados.
  • Os campos do formulário estão preenchendo os valores padrão.
  • A integração entre os diferentes módulos do sistema.

Testando a usabilidade do site

O foco do teste de usabilidade é verificar a interface do usuário, como o texto do site, as mensagens que aparecem no site, as fontes e as cores usadas no site, etc.

Checklist do teste de usabilidade do site

Para testes de usabilidade, verifique se:

  • O conteúdo exibido para os usuários no aplicativo está gramaticalmente correto.
  • As mensagens de erro têm uma linguagem uniforme e gramaticalmente correta.
  • Os botões e campos têm nomes uniformes e significativos.
  • O tamanho da fonte é o desejado em todo o aplicativo.
  • A combinação de cores usada em todo o site é consistente.
  • As ações que precisam ser executadas pelos usuários são autoexplicativas.
  • Os campos têm dicas de ferramentas e marcadores adequados e fáceis de entender.
  • Os campos desabilitados e obrigatórios são exibidos da maneira esperada.
  • Os itens do campo suspenso são exibidos corretamente.

Teste de performance

No teste de desempenho o sistema é testado sob condições específicas para vários critérios, como tempo de resposta, escalabilidade e interoperabilidade.

Checklist de teste de desempenho do site

Para esse tipo de teste, verifique o desempenho do site quando:

  • Várias pessoas usuárias estiverem usando o aplicativo simultaneamente.
  • Várias pessoas usuárias estiverem usando uma única funcionalidade ao mesmo tempo.
  • A conexão com a Internet for alternada entre duas ou mais redes.

Além disso, verifique:

  • O tempo de resposta do site com diferentes velocidades de conexão à Internet.
  • O mecanismo de recuperação do site após uma falha do sistema, ou seja, o aplicativo pode salvar dados no caso de uma falha do sistema.

Teste de compatibilidade

Neste teste, o site é testado em várias combinações de hardware e software para validar se o mesmo funciona da maneira desejada.

Checklist de teste de compatibilidade do site

Para testes de compatibilidade, verifique:

  • O aplicativo nos vários sistemas operacionais e navegadores, como Chrome, Mozilla, Safari.
  • As fontes: tamanho da fonte, família da fonte, o espaçamento entre as palavras, etc.
  • O posicionamento dos campos e do texto na tela.
  • As mensagens de erro, dicas de ferramentas e espaços reservados.

Teste de segurança

Nos testes de segurança de aplicativos da web, a prontidão do aplicativo para lutar contra ataques indesejados é testada.

Checklist de teste de segurança do site

Para testes de segurança, verifique se o aplicativo:

  • Permite que apenas pessoas autorizadas acessem as funções restritas do sistema.
  • Usa protocolo seguro, por exemplo, HTTPS (especialmente nas páginas de pagamento, login e registro).
  • Pode armazenar dados confidenciais, como senhas, informações de pagamento da pessoa usuária em um formato criptografado.
  • Usa políticas de senha forte.
  • Permite que pessoas usuárias desativadas na plataforma tenham permissão para acessar o site.
  • É contra injeções de SQL e ataques de força bruta.
  • Os cookies não armazenam senhas.
  • A sessão é encerrada quando o usuário limpa o cache.
  • A pessoa usuária será desconectada do aplicativo assim que a sessão encerrar.
  • Solicita um novo login quando a sessão expirar.

O teste de site é uma das tarefas mais comuns que vêm sob as funções e responsabilidades das pessoas testadoras de software. A partir desse tutorial sobre teste de aplicativos da web, você conseguirá entender os possíveis fluxos que devem ser testados e também identificar quaisquer problemas no aplicativo da web antes de disponibilizá-lo para o mercado.

Qual a relação entre TDD e custo de correção de erros/bugs?

TDD é o processo de escrever testes automatizados para garantir que o código funcione antes de escrever a implementação: você escreve um teste, olha ele falhar, escreve a implementação, observa a aprovação do teste e refatora, se necessário. A partir disso, você repete o ciclo e constrói o sistema.

O processo foi estudado em profundidade e tem se mostrado muito útil para aumentar a qualidade do software. Mas você sabia que isso também economiza muito tempo e dinheiro para as empresas?

Um dos principais motivos que os gerentes citam para esperar tanto tempo para implementar o TDD é o custo, já que é comum que a construção inicial do projeto demore até 30% mais tempo com o TDD.

Porém o TDD reduz a densidade de bugs de produção de 40% até 80% e isso faz toda a diferença. Mais bugs na produção levam a um aumento drástico nos custos de manutenção.

Devido ao aumento exponencial dos custos de retrabalho, meta-trabalho (trabalho sobre o trabalho), transferências de responsabilidade, interrupções e, eventualmente, suporte ao cliente, triagem de bug e manutenção, consertar um bug de produção pode custar 100 vezes mais do que consertar um bug em tempo de design e mais de 15 vezes mais do que corrigir um bug no momento da implementação.

Como calcular o ROI (Retorno do investimento) em testes de software?

O retorno do investimento (ROI) é uma medida financeira para calcular a lucratividade do investimento. A fórmula é a seguinte:

Fórmula para cálculo do ROI, onde se lê que o ROI é igual ao valor da renda menos investimentos, divido pelo valor dos investimentos, vezes cem por cento.

O ROI pode ser calculado para toda a duração da atividade empresarial ou para apenas uma etapa específica. A partir disso podemos pensar em um exemplo:

Neste mês você gastou R$1000,00 no anúncio da sua loja online em algumas redes sociais. No mesmo mês, você ganhou 200 novos clientes que realizaram compras no valor total de R$2500,00. A partir desses números, podemos estimar o ROI. Primeiro, retiramos o custo do anúncio da receita e, em seguida, dividimos o valor resultante pelo número de custos da publicidade:

Exemplo de fórmula do ROI com números, na qual temos que a renda foi de 2500 e os investimentos de 1000 reais. Assim, o ROI é igual a 2500 menos 1000, dividido por 100, que é igual a 150%.

Como resultado, você obtém um retorno de 150% sobre os investimentos por um período de um mês.

ROI em testes automatizados

Estamos entrando na era da automação dos testes. Dessa maneira, a maioria dos projetos de teste está tentando transformar seus casos de teste manuais em casos automatizados para melhorar a produtividade e a cobertura dos testes.

Em muitos casos, o ROI em testes automatizados é calculado para 5 anos, por isso nossa tabela seguirá esse padrão, mas ele não é obrigatório. Veja só:

Atributos1 Ano2 Ano3 Ano4 Ano5 Ano
Número total de casos de teste300250200150100
Número total de casos de teste automatizados050100150200
Número total de círculos de testes no ano2525252525
Tempo necessário para executar os casos de teste (Tempo necessário para executar 1 caso de teste)11111
Tempo necessário para criar os casos de teste automatizados (horas por caso de teste)08888
Tempo necessário para manter o caso de teste funcionando (caso de teste único)02222
Custo de 1 hora (em R$)3030303030
Custo total das ferramentas (incluindo a licença)010,00010,00010,00010,000
Esforço total para criação dos testes manuais (em horas)75006250500037502500
Esforço total para criação dos testes automatizados (em horas)0400500600700
Custo total dos testes (em R$)300,000276,000230,000184,000138,000
Economia cumulativa (em R$)024,00070,000116,000162,000
Investimento através da automação (em R$)026,00030,00034,00038,000
ROI092%233%341%426%

Conseguimos ter um ROI maior que 100% em apenas 3 anos e, com 5 anos, já contamos com 426%, uma porcentagem realmente impressionante.

5 boas práticas para aplicar ao fazer um teste de software!

Crie equipes separadas para testar a segurança e o desempenho

Para conseguirmos testar a segurança e o desempenho de um aplicativo precisamos de dois conjuntos distintos de habilidades, especialmente à medida que novas ameaças à segurança e novas tecnologias de aplicativo evoluem. Tentar manter o controle de ambas as áreas diminuirá o desempenho dos membros individuais de sua equipe.

Fale com os usuários finais e simule seu ambiente

É uma boa ideia que as pessoas testadoras se reúnam diretamente com as pessoas usuárias finais, sejam elas internas da empresa ou clientes externas. Descubra os problemas que elas enfrentam ao usar o software e os recursos que gostariam de ver adicionados. Isso ajudará a equipe a realizar os testes da perspectiva de quem usa o aplicativo e isso é o que mais conta. 

Imitar o ambiente do desenvolvedor

Para evitar que desenvolvedores e equipes de controle de qualidade experimentem resultados de desempenho de aplicativos diferentes, certifique-se de que o ambiente de controle de qualidade está exatamente igual ao ambiente de desenvolvimento. Em seguida, conforme as compilações avançam pelo pipeline de desenvolvimento, teste o código em condições de produção que simulam os ambientes de clientes.

Use uma abordagem de automação de teste de duas camadas

Primeiro, execute verificações rápidas de integridade em cada confirmação do código-fonte para validar as alterações rapidamente. Depois, você pode executar testes de regressão mais extensos à noite. Dessa forma, é possível fornecer feedback imediato às pessoas desenvolvedoras enquanto elas ainda estão focados nessa parte do código.

Execute um ciclo de regressão

Execute um ciclo de regressão na fase final de estabilização para acionar a luz verde para mover o aplicativo para produção. Uma vez que muito poucas mudanças no desenvolvimento neste ponto, você também pode validar o aplicativo inteiro

Quando falamos de teste, pensamos logo em bugs e de qual maneira eles podem afetar o rendimento de nossas aplicações. Isso é, ao decorrer do nosso texto vimos que os gastos que temos no desenvolvimento de um software podem chegar até 100 vezes mais no ambiente de produção do que no de teste. Esse é um fato super importante para o planejamento de um projeto.

Entendemos as diferentes maneiras de testar a aplicação e também as possíveis fases e etapas que conseguimos criar para gerenciar melhor o nosso tempo e fluxo de trabalho. 

Por isso, o papel da pessoa testadora é muito importante nos dias atuais. Inclusive, em muitos casos é recomendada a criação de equipes com várias pessoas testadoras que vão utilizar as diversas técnicas de testes manuais e automatizados para encontrar qualquer tipo de falha ou bug. Sendo assim, se você gosta de tecnologia e não quer criar sites ou aplicativos, pode estudar como fazer os testes para essas aplicações!

Gostou do artigo e gostaria de ler mais testes de software? Então veja este artigo sobre a ferramenta JMeter e os testes de performance!

Você também pode gostar