O particionamento de equivalência em testes de software é uma técnica de teste de caixa preta que o ajuda a criar casos de teste eficientes sem comprometer a cobertura do teste.
Neste artigo, veremos o que é o particionamento de classe de equivalência, por que ele é útil e exploraremos alguns dos processos e abordagens que você pode usar para aproveitar os benefícios dessa técnica.
O que é particionamento de classe de equivalência?
em testes de software?
Todo software tem condições de entrada específicas. No contexto do teste de software, essas condições de entrada descrevem os valores ou dados que um testador deve usar para verificar a qualidade e a funcionalidade do software. Essas entradas podem ser algo tão simples como um clique do mouse, até texto e números.
Uma partição equivalente no teste de software explora as diferentes entradas necessárias para usar o software e as agrupa em classes de equivalência, ou seja, conjuntos de entradas que terão um efeito equivalente no comportamento do software.
Se você souber como cada grupo de entradas se comportará, não precisará testar cada representante do grupo. Dessa forma, o particionamento da classe de equivalência é uma ótima maneira de ajudar os testadores a reduzir a frequência de testes redundantes. Em um mundo hipercompetitivo de desenvolvimento de software com prazos cada vez mais apertados, economizar tempo e esforço no ciclo de vida de testes de software (STLC) é crucial.
Por fim, vale a pena observar que o teste de equivalência é uma técnica de teste de caixa preta. Em resumo, isso significa que os testadores não precisam conhecer o código interno ou o funcionamento interno do programa. Os testes são baseados em entradas, saídas e comportamentos externos. Dessa forma, esses testes são altamente focados no comportamento do usuário durante o uso do programa.
1. Particionamento de equivalência de teste de software em poucas palavras
O particionamento de equivalência divide os dados de entrada do teste de software em dois campos: entradas válidas e inválidas. Os valores em cada partição devem fazer com que o software exiba o mesmo comportamento. Por exemplo:
- Se a condição de um valor na Partição A for verdadeira, os outros valores na Partição A também deverão ser.
- Da mesma forma, se as condições de um valor na Partição A forem falsas, os outros valores na Partição A também deverão ser falsos.
Em um contexto de teste, cada partição deve ser coberta pelo menos uma vez. Logicamente, isso significa que, se uma entrada na Partição A falhar, todas as outras entradas também falharão. Esse processo deve economizar tempo porque, em vez de testar cada entrada que fica na Partição A, os testadores podem testar apenas uma e extrapolar o resultado com base em seus pontos em comum.
2. Por que o teste de classe de equivalência no teste de software é importante
Antes de abordarmos os benefícios diretos do teste de classe de equivalência no teste de software, precisamos definir por que a abordagem é importante.
Todos os testadores entendem que o teste de software exige compromissos. O tempo e os orçamentos são limitados, o que significa que os testadores precisam aproveitar ao máximo seus recursos. O particionamento de equivalência de testes de software ajuda as equipes a encontrar um equilíbrio entre eficiência e confiabilidade em seus testes, reduzindo o número de entradas.
Benefícios do particionamento de equivalência
em testes de software
Uma partição equivalente no teste de software é preferida pelas equipes de teste por vários motivos. Aqui estão alguns dos mais convincentes.
1. Eficiência
A grande vantagem do teste de partição de equivalência está em sua eficiência. Quando os testadores usam o particionamento de equivalência, eles podem reduzir o número de casos de teste necessários sem comprometer a cobertura do teste. Ao selecionar um caso de entrada de cada classe de equivalência, os testadores podem se sentir confiantes de que entendem como o software funciona com uma variedade de entradas.
2. Simplicidade
Outra grande vantagem do particionamento de equivalência de teste de software é a simplicidade. A divisão de um conjunto diversificado de entradas em dados válidos e inválidos significa que o planejamento de testes é muito mais simples. Testar cada entrada individualmente requer muita documentação e coordenação. Reduzir isso a um exemplo representativo simplifica o processo de teste.
Cobertura aprimorada
O uso de classes de equivalência nos testes também permite que você use o tempo de teste com mais eficiência. A redução das entradas de teste em classes significa que você pode testar cada classe de forma mais completa. Essa abordagem abrangente seria francamente impossível se você testasse cada entrada individualmente. O particionamento de equivalência permite que as equipes sejam minuciosas e testem dados válidos e inválidos, casos extremos, valores de limite e muito mais.
3. Reutilização
O tempo inicial que você investe para estabelecer cada classe de equivalência no teste de software compensa no futuro se você reutilizar essas classes para futuros testes de entrada. Embora nem todas as partições sejam relevantes para testes futuros, as que forem economizarão muito tempo em projetos futuros ou até mesmo em situações de teste de regressão.
Desvantagens do particionamento de equivalência
em testes de software
Embora o particionamento de equivalência ofereça alguns benefícios importantes, ele não é a solução ideal para todos os cenários. Vamos explorar algumas de suas limitações.
1. Ordem de entrada
Em determinadas situações, a ordem de entrada é uma parte essencial do teste da funcionalidade de um aplicativo. Isso não é algo que você possa realmente reduzir usando o particionamento de equivalência. Os testadores devem estar atentos a essas situações e usar técnicas alternativas para oferecer uma boa cobertura.
2. Dependências complexas de entrada
O software complexo com dependências de entrada complexas é outra área em que as limitações do particionamento de equivalência são expostas. Por exemplo, um software que produz cálculos com base em várias entradas. Nesse cenário, os testadores precisariam usar uma variedade de técnicas para reduzir a explosão combinatória e aumentar a probabilidade de isolar defeitos.
Abordagens alternativas para complementar o
limitações dos testes de equivalência
Embora o teste de partição de equivalência seja apropriado para muitos cenários de teste, o software altamente complexo com dependências intrincadas entre os valores de entrada pode exigir abordagens complementares adicionais.
Quando se trata de escrever casos de teste para software complexo, usar uma combinação dessas abordagens é uma ideia sólida.
1. Testes em pares
O teste em pares é uma técnica de teste de software que testa todas as combinações possíveis de cada par de parâmetros de entrada. Essa abordagem garante que cada par de parâmetros seja testado em conjunto pelo menos uma vez.
2. Teste de tabela de decisão
Uma tabela de decisões ajuda os testadores a mapear metodicamente as diferentes combinações de entrada. É uma boa maneira de garantir a cobertura sistemática quando existem dependências complexas.
3. Testes de transição do Estado
Esse tipo de teste mede como o software faz a transição entre diferentes estados em resposta a várias combinações de entrada.
4. Testes baseados em modelos
Essa abordagem requer a criação de um modelo com base na lógica interna do software e o uso de uma ferramenta de automação para criar casos de teste com base nesse modelo. Essa técnica é capaz de lidar com a complexidade e garantir a cobertura adequada.
Exemplos de testes de particionamento de classe de equivalência
A melhor maneira de entender o particionamento de equivalência é observar como e onde você pode usar uma classe de equivalência em testes de software. Aqui estão alguns exemplos para ajudá-lo a visualizar melhor o conceito.
1. Exemplo de teste de particionamento de classe de equivalência nº 1
Um formulário de pedido on-line é um bom exemplo de classe de equivalência em testes de software.
Digamos que você esteja criando um aplicativo para um varejista on-line de equipamentos estacionários. Há um formulário de pedido típico para fardos de papel A4. Veja como você pode usar classes de equivalência para testar essa forma.
Classes de equivalência:
As quantidades de papel A4 estão em um intervalo específico, por exemplo, de 1 a 100. Portanto, as três classes são:
- 1 a 100
- Números abaixo de 1
- Números acima de 100.
Casos de teste:
Três casos de teste devem ser executados, com os seguintes resultados esperados
- Qualquer número entre 1 e 100 = pedido processado
- Números abaixo de 1 = mensagem de erro
- Números acima de 100 = mensagem de erro
2. Exemplo de teste de particionamento de equivalência nº 2
Uma classe de equivalência em testes de software pode lidar com mais do que apenas números. Neste exemplo, exploraremos como você pode usar o mesmo princípio para verificar um portal de upload de arquivos. Digamos que você precise fazer um teste para um site que exige que os usuários façam upload de documentos de identidade, mas só pode aceitar formatos específicos.
Classes de equivalência:
- Os documentos compatíveis são PDF e JPEG.
- Documentos sem suporte são todos os outros formatos de documento
- Nenhum documento
Casos de teste:
- Teste fazendo o upload de PDF ou JPEG = upload bem-sucedido
- Teste ao fazer upload de formato não suportado = mensagem de erro
- Teste sem upload de arquivo = mensagem de erro
Como implementar um particionamento de equivalência
abordagem de teste de software
Se você quiser usar classes de equivalência em testes, precisará adotar uma abordagem estratégica. Aqui está um guia passo a passo útil para implementar o particionamento de equivalência em testes de software.
Etapa 1: Identificar variáveis de entrada
Cada software responde a uma variedade de variáveis de entrada. No caso de softwares complexos, essas variáveis podem ser enormes. Portanto, analise os requisitos e as especificações do software e identifique todas as variáveis que têm impacto sobre o comportamento do software.
Algumas das entradas mais óbvias incluem formulários de entrada do usuário. No entanto, você precisa considerar uma variedade maior de entradas para sua lista. Você também pode considerar variáveis ambientais, chamadas de API, cálculos internos e assim por diante.
Em seguida, você deve entender os diferentes tipos de dados variáveis. Você pode categorizar essas variáveis como inteiras, booleanas, strings, etc., para definir as partições apropriadas.
Por fim, você precisa explorar as restrições de entrada. Isso inclui coisas como quais caracteres são permitidos, formatos definidos e valores mínimos/máximos.
Etapa nº 2. Determinar partições válidas e inválidas
Observe cada variável de entrada e comece a dividi-las de acordo com os resultados válidos e inválidos. Essas serão suas classes de equivalência nos testes.
1. Partições válidas
As partições válidas podem ser divididas em duas classes.
Classes de equivalência positiva:
Valores que você espera que o software manipule com êxito. Por exemplo, para um software que registra notas percentuais, qualquer valor entre 0 e 100 é válido.
Classes de equivalência negativa:
Essa categoria será para valores que estão fora dos limites da entrada esperada, mas que seu software deve tratar com uma mensagem de erro. Por exemplo, a entrada é 110 para uma nota percentual, o que faz com que o software retorne uma mensagem de erro dizendo: “Todos os valores devem ser de 0 a 100”.
2. Partições inválidas
Essas classes de equivalência incluirão entradas que desencadearão erros ou comportamentos inesperados. Em nosso exemplo acima, isso poderia incluir tentativas de inserir A+ ou B ou entradas semelhantes na nota percentual. Embora essas entradas possam estar tecnicamente corretas, elas estão fora das expectativas numéricas.
#3. Escrever casos de teste eficazes
Em seguida, você precisa criar casos de teste que cubram cada partição de equivalência pelo menos uma vez. Conforme mencionado anteriormente no artigo, isso garante uma cobertura de teste adequada.
Em primeiro lugar, você deve selecionar valores representativos em cada partição de equivalência que possam abranger dados válidos e inválidos.
Dicas para escrever casos de teste sólidos
- Pense nos valores de limite: Certifique-se de testar os limites de suas partições. Mínimo, máximo, inclusivo, exclusivo, etc., pois essas áreas são fortes candidatas a bugs. Por exemplo, se suas expectativas de entrada estiverem entre 0 e 100, teste valores negativos, bem como números como 101.
- Considere cenários de teste positivos e negativos para seus casos de teste válidos e inválidos.
- O teste de combinação é uma boa ideia. Use algumas abordagens diferentes, conforme descrito em nossas abordagens alternativas, para complementar as limitações da seção de testes de equivalência acima.
- Documentar a lógica por trás do motivo pelo qual os valores de entrada foram divididos em partições específicas e descrever claramente o comportamento esperado de cada teste
- Sempre que possível, use ferramentas visuais para trazer um senso de clareza e objetividade aos seus casos de teste, usando diagramas ou tabelas para mapear suas partições.
#4. Programar e executar seus casos de teste
Priorize suas tarefas com base em fatores como:
- Quais áreas têm maior probabilidade de apresentar defeitos
- Quais cenários têm maior probabilidade de causar cenários graves, como travamentos ou congelamentos
Em seguida, execute os testes e registre os resultados e os erros que ocorrerem. Para programas complexos com muitas entradas, é possível usar ferramentas de RPA para imitar as ações do usuário.
#5. Analisar os resultados
Reúna os dados de teste coletados e analise os resultados. Alguns métodos que você precisa usar são
- Examine cada caso de teste e compare os resultados reais com os resultados esperados
- Encontre quaisquer discrepâncias, investigue e informe quaisquer erros e defeitos.
#6 Dicas adicionais
Embora essas dicas não se apliquem a todos os cenários, elas serão úteis para testes de software complexos.
- As tabelas de decisão são uma excelente maneira de visualizar suas partições de equivalência e as diferentes combinações de entrada que você pode querer usar
- Você pode mesclar classes de equivalência se elas apresentarem um comportamento quase idêntico, otimizando ainda mais o processo de teste
- Use o teste de valor de limite para melhorar a detecção de defeitos
- Sempre que possível, automatize seus casos de teste de particionamento de equivalência
Particionamento de equivalência e análise de valor de contorno
O particionamento de equivalência é baseado na suposição de que cada teste em uma partição produzirá o mesmo resultado. Embora isso seja verdade em muitas situações, nem sempre funciona. Por exemplo, qualquer entrada que tenha sido adicionada a uma partição por engano pode não ser verificada, levando à redução da cobertura e à possível instabilidade do software no futuro.
A solução para esse problema é o teste de valor limite. Ele permite que as equipes de teste de software se concentrem nas áreas com maior probabilidade de conter riscos e testem o software com base nisso. Em resumo, ele propõe que os riscos têm maior probabilidade de ocorrer nas bordas ou limites das partições de entrada. Portanto, os testadores podem escrever casos de teste nos limites superior e inferior das entradas, além dos outros casos de teste de classe de equivalência.
Particionamento de equivalência e automação com o ZAPTEST
As ferramentas de automação de teste de software, como o ZAPTEST, podem ajudar as equipes a automatizar o particionamento de equivalência durante a criação e a execução do teste.
Vamos explorar como o ZAPTEST pode ajudá-lo a desbloquear os benefícios dessa abordagem útil de teste de caixa preta.
1. Seleção de ferramentas
É importante selecionar a ferramenta certa para o trabalho. A maioria das ferramentas de automação de testes é especializada em testes na Web, em dispositivos móveis ou em desktops. O ZAPTEST é capaz de lidar com testes em diferentes plataformas e aplicativos, o que o torna uma opção sólida.
2. Escrever e executar casos de teste
O ZAPTEST 1Script permite que você examine a interface do usuário para criar automação de testes. Além disso, você também pode digitalizar modelos de aplicativos se estiver em um estágio inicial de desenvolvimento. Usando o recurso Scan GUI, o ZAPTEST examinará todos os objetos de teste e os adicionará à lista de objetos.
A partir daí, você pode adicionar objetos ao diagrama e criar as etapas de teste.
O ZAPTEST permite que você automatize a redação dos casos com uma interface simples de arrastar e soltar. Você não precisa de conhecimentos de codificação para criar casos de teste com o ZAPTEST. Portanto, a partir daqui, você pode selecionar a operação relevante em um método suspenso e criar um caso de teste com base nos valores de entrada necessários para a sua interface. Em seguida, você pode criar casos de teste para cada equivalência e executar seus casos de teste. Você pode até mesmo reutilizar casos de teste e editá-los no editor de etapas, economizando muito tempo.
3. Relatórios e gerenciamento de casos de teste
O ZAPTEST permite que você execute casos de teste em paralelo, economizando um tempo considerável. Isso pode ajudá-lo a executar um grande número de partições de equivalência diferentes de uma só vez ou a executar grupos específicos de testes.
Os resultados são fáceis de obter graças aos relatórios detalhados de falhas/passos, capturas de tela, registros de execução e métricas de desempenho relacionadas a cada caso de teste.
4. Manutenção de casos de teste
Também é possível rastrear e manter os casos de teste de forma simples, graças aos recursos de controle de versão de qualidade. Além disso, os usuários do ZAPTEST podem clonar e reutilizar testes para atingir um novo nível de eficiência.
O ZAPTEST oferece muito mais funcionalidades além da automação de casos de teste. Com um conjunto de ferramentas RPA, o ZAPTEST oferece funcionalidade 2 em 1, preenchendo a lacuna entre DevOps e BizOps em um futuro marcado pela hiperautomação, em que tudo o que pode ser automatizado será automatizado.
Considerações finais
O particionamento de equivalência é uma solução elegante para situações em que os testadores precisam encontrar um equilíbrio entre eficiência e precisão. Como alguns softwares permitem uma variedade quase infinita de entradas, o particionamento de classes de equivalência ajuda as equipes a dividir os dados de teste em partes gerenciáveis e pequenas, que podem ser testadas minuciosamente.