fbpx

O particionamento de equivalência no teste de software é uma técnica de teste de caixa preta que ajuda a construir casos de teste eficientes sem comprometer a cobertura do teste.

Neste artigo, veremos o que é o particionamento de classes de equivalência, por que razão é útil e exploraremos alguns dos processos e abordagens que pode utilizar para desbloquear as vantagens desta técnica.

 

O que é o particionamento de classes de equivalência?

em testes de software?

Teste de QA - O que é, tipos, processos, abordagens, ferramentas e muito mais!

Todos os programas informáticos têm condições de entrada específicas. No contexto dos testes de software, estas condições de entrada descrevem os valores ou dados que um testador deve utilizar para verificar a qualidade e a funcionalidade do seu software. Estas entradas podem ser algo tão simples como um clique do rato, até texto e números.

Uma partição equivalente no teste de software explora as diferentes entradas necessárias para utilizar o software e agrupa-as em classes de equivalência, ou seja, conjuntos de entradas que terão um efeito equivalente no comportamento do software.

Se souber como cada grupo de entradas se irá comportar, não precisa de testar cada representante do grupo. Como tal, o particionamento de classes de equivalência é uma óptima forma de ajudar os testadores a reduzir a frequência de testes redundantes. Num mundo hiper-competitivo de desenvolvimento de software com prazos cada vez mais apertados, é crucial poupar tempo e esforço no ciclo de vida dos testes de software (STLC).

Finalmente, vale a pena notar que o teste de equivalência é uma técnica de teste de caixa negra. Em suma, significa que os testadores não precisam de conhecer o código interno ou o funcionamento interno do programa. Os testes são baseados em entradas, saídas e comportamentos externos. Como tal, estes testes estão muito centrados no comportamento do utilizador durante a utilização do programa.

 

1. Particionamento de equivalência de testes de software em poucas palavras

O particionamento da equivalência divide os dados de entrada dos testes de software em dois campos: entradas válidas e inválidas. Os valores dentro de 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 devem 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 devem ser falsos.

Num contexto de teste, cada partição deve ser coberta pelo menos uma vez. Logicamente, isto significa que se uma entrada na Partição A falhar, então todas as outras entradas também falharão. Este processo deverá poupar tempo porque, em vez de testar cada entrada que se encontra na Partição A, os testadores podem testar apenas uma e extrapolar o resultado com base nos seus pontos comuns.

 

2. Porque é que o teste de classes de equivalência é importante no teste de software

Antes de entrarmos nos benefícios directos dos testes de classes de equivalência nos testes de software, temos de definir a razão pela qual a abordagem é importante.

Todos os testadores compreendem que os testes de software exigem compromissos. O tempo e os orçamentos são limitados, o que significa que os testadores precisam de tirar o máximo partido dos seus recursos. A partição de equivalência de testes de software ajuda as equipas a encontrar um equilíbrio entre eficiência e fiabilidade nos seus testes, reduzindo o número de entradas.

 

Vantagens do particionamento de equivalência

em testes de software

Casos de utilização da automatização de processos robóticos nos seguros e na contabilidade

Uma partição equivalente no teste de software é preferida pelas equipas de teste por uma série de razões. Aqui estão alguns dos mais interessantes.

1. Eficiência

A grande vantagem do teste de equivalência de partições reside na sua eficiência. Quando os testadores utilizam o particionamento de equivalência, 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 sentir-se confiantes de que compreendem como o seu software funciona com uma variedade de entradas.

2. Simplicidade

Outra grande vantagem do particionamento de equivalência de testes de software é a simplicidade. Dividir um conjunto diversificado de entradas em dados válidos e inválidos significa que o planeamento dos 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 melhorada

A utilização de classes de equivalência nos testes também permite utilizar o tempo de teste de forma mais eficiente. Reduzir as entradas de teste em classes significa que é possível testar cada classe de forma mais completa. Esta abordagem abrangente seria francamente impossível se testasse cada entrada individualmente. O particionamento de equivalência permite que as equipas sejam minuciosas e testem dados válidos e inválidos, casos extremos, valores-limite e muito mais.

3. Reutilização

O tempo inicial investido no estabelecimento de cada classe de equivalência nos testes de software compensa no futuro se estas classes forem reutilizadas em futuros testes de entrada. Embora nem todas as partições sejam relevantes para testes futuros, as que o forem poupar-lhe-ão muito tempo em projectos futuros ou mesmo em situações de testes de regressão.

 

Desvantagens do particionamento por equivalência

em testes de software

desafios dos ensaios de carga

Embora o particionamento de equivalência ofereça alguns benefícios importantes, não é a solução ideal para todos os cenários. Vamos explorar algumas das suas limitações.

1. Ordem de entrada

Em determinadas situações, a ordem de entrada é uma parte crítica do teste da funcionalidade de uma aplicação. Isso não é algo que se possa realmente reduzir utilizando o particionamento por equivalência. Os testadores devem estar atentos a estas situações e utilizar técnicas alternativas para proporcionar 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 efectua cálculos com base em vários dados. Neste cenário, os testadores teriam de utilizar uma variedade de técnicas para reduzir a explosão combinatória e aumentar a probabilidade de isolar os defeitos.

 

Abordagens alternativas para complementar a

limitações dos testes de equivalência

testes alfa vs testes beta

Embora o teste de partição de equivalência seja adequado para muitos cenários de teste, o software altamente complexo com dependências intrincadas entre valores de entrada pode exigir abordagens complementares adicionais.

Quando se trata de escrever casos de teste para software complexo, a utilização de uma combinação destas abordagens é uma ideia sólida.

1. Testes em pares

O teste por pares é uma técnica de teste de software que testa todas as combinações possíveis de cada par de parâmetros de entrada. Esta abordagem garante que cada par de parâmetros é testado em conjunto pelo menos uma vez.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

2. Teste da tabela de decisão

Uma tabela de decisão ajuda os testadores a mapear metodicamente as diferentes combinações de entrada. É uma boa maneira de garantir uma cobertura sistemática quando existem dependências complexas.

3. Testes de transição do Estado

Este tipo de teste mede a forma como o software transita entre diferentes estados em resposta a várias combinações de entrada.

4. Testes baseados em modelos

Esta abordagem requer a criação de um modelo baseado na lógica interna do software e a utilização de uma ferramenta de automatização para criar casos de teste com base nesse modelo. Esta técnica é capaz de lidar com a complexidade e garantir uma cobertura adequada.

 

Exemplos de testes de partição de classes de equivalência

Teste Beta - O que é, Tipos, Processos, Abordagens, Ferramentas, vs. Teste Alfa & Mais!

A melhor maneira de entender o particionamento de equivalência é ver como e onde se pode usar uma classe de equivalência em testes de software. Seguem-se alguns exemplos para o ajudar a visualizar melhor o conceito.

 

1. Exemplo de teste de partição de classe de equivalência #1

Um formulário de encomenda em linha é um bom exemplo de classe de equivalência em testes de software.

Digamos que está a criar uma aplicação para um retalhista de equipamento estacionário em linha. Existe um formulário de encomenda típico para fardos de papel A4. Eis como pode utilizar classes de equivalência para testar esta forma.

Classes de equivalência:

As quantidades de papel A4 estão dentro de um intervalo específico de, por exemplo, 1 a 100. Assim, as três classes são:

  • 1 a 100
  • Números inferiores a 1
  • Números superiores a 100.

 

Casos de teste:

Devem ser executados três casos de teste, com os seguintes resultados esperados

  • Qualquer número entre 1 e 100 = Ordem processada
  • Números inferiores a 1 = mensagem de erro
  • Números superiores a 100 = mensagem de erro

 

2. Exemplo de teste de partição de equivalência #2

Uma classe de equivalência em testes de software pode lidar com mais do que apenas números. Neste exemplo, vamos explorar a forma como pode utilizar o mesmo princípio para verificar um portal de carregamento de ficheiros. Digamos que precisa de testar um sítio que exige que os utilizadores carreguem documentos de identidade, mas só pode aceitar formatos específicos.

Classes de equivalência:

  • Os documentos suportados são PDF e JPEG.
  • Os documentos não suportados são todos os outros formatos de documento
  • Nenhum documento

 

Casos de teste:

  • Teste através do carregamento de PDF ou JPEG = carregamento bem sucedido
  • Teste ao carregar um formato não suportado = mensagem de erro
  • Teste sem carregamento de ficheiros = mensagem de erro

 

Como implementar um particionamento de equivalência

abordagem de teste de software

Automatização de testes ágeis de DevOps: Explicando a abordagem de automação baseada em mockups do ZAPTEST

Se pretender utilizar classes de equivalência em testes, é necessário adotar uma abordagem estratégica. Aqui está um guia passo-a-passo útil para implementar o particionamento de equivalência em testes de software.

 

Passo #1: Identificar as variáveis de entrada

 

Cada software responde a uma variedade de variáveis de entrada. No caso de software complexo, estas variáveis podem ser enormes. Assim, analise os requisitos e as especificações do software e identifique todas as variáveis que têm impacto no comportamento do software.

Algumas das entradas mais óbvias incluem formulários de entrada do utilizador. No entanto, é necessário considerar um leque mais alargado de entradas para a sua lista. Pode também considerar variáveis ambientais, chamadas API, cálculos internos, etc.

De seguida, deve compreender os diferentes tipos de dados variáveis. É possível classificar estas variáveis como inteiras, booleanas, de cadeia, etc., para definir as partições adequadas.

Por último, é necessário explorar as restrições de entrada. Trata-se de aspectos como os caracteres permitidos, os formatos definidos e os valores mínimos/máximos.

 

Passo #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. Estas serão as 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 positivas:

Valores que espera que o seu software trate com êxito. Por exemplo, para software que regista notas percentuais, qualquer valor entre 0 e 100 é válido.

Classes de equivalência negativas:

Esta categoria destina-se a valores que estão fora dos limites da entrada esperada, mas que o seu software deve tratar com uma mensagem de erro. Por exemplo, a entrada é 110 para uma nota percentual, o que leva o software a enviar uma mensagem de erro dizendo: “Todos os valores têm de ser de 0 a 100”.

 

2. Partições inválidas

Estas classes de equivalência incluirão entradas que provocarão erros ou comportamentos inesperados. No exemplo acima, isso poderia incluir tentativas de introduzir A+ ou B ou entradas semelhantes na nota percentual. Embora estes dados possam ser tecnicamente correctos, estão fora das expectativas numéricas.

 

#3. Escrever casos de teste eficazes

Em seguida, é necessário conceber casos de teste que cubram cada partição de equivalência pelo menos uma vez. Como mencionado anteriormente no artigo, isso garante uma cobertura de teste adequada.

Em primeiro lugar, é necessário selecionar valores representativos em cada partição de equivalência que possam abranger dados válidos e inválidos.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Dicas para escrever casos de teste sólidos

  • Pense nos valores dos limites: Certifique-se de que testa os limites das suas partições. Mínimo, máximo, inclusivo, exclusivo, etc., uma vez que estas áreas são fortes candidatas a erros. Por exemplo, se as suas expectativas de entrada estiverem entre 0 e 100, teste os valores negativos, bem como números como 101.
  • Considere cenários de teste positivos e negativos para os seus casos de teste válidos e inválidos.
  • Os testes combinados são uma boa ideia. Utilizar algumas abordagens diferentes, tal como descrito nas nossas abordagens alternativas, para complementar as limitações da secção de testes de equivalência acima.
  • Documentar a razão pela 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, utilize ferramentas visuais para dar uma sensação de clareza e objetividade aos seus casos de teste, utilizando diagramas ou tabelas para mapear as suas partições.

 

#4. Programar e executar os seus casos de teste

Dê prioridade às suas tarefas com base em factores como:

  • Que áreas são mais susceptíveis de apresentar defeitos
  • Que cenários são mais susceptíveis de causar cenários graves, como falhas ou congelamentos

Em seguida, execute os testes e registe os resultados e quaisquer erros que ocorram. Para programas complexos com muitas entradas, pode utilizar ferramentas de RPA para imitar as acções do utilizador.

 

#5. Analisar os resultados

Agrupar os dados de teste recolhidos e analisar os resultados. Alguns métodos que deve utilizar são

  • Examine cada caso de teste e compare os resultados reais com os resultados esperados
  • Detetar eventuais discrepâncias e investigar e comunicar eventuais erros e defeitos.

 

#6 Sugestões adicionais

Embora estas dicas não se apliquem a todos os cenários, revelar-se-ão úteis para testes de software complexos.

  • As tabelas de decisão são uma excelente forma de visualizar as suas partições de equivalência e as diferentes combinações de entrada que poderá querer utilizar
  • Pode fundir classes de equivalência se estas apresentarem um comportamento quase idêntico, optimizando ainda mais o processo de teste
  • Utilizar o teste de valor limite para melhorar a deteção de defeitos
  • Sempre que possível, automatize os seus casos de teste de particionamento de equivalência

 

Partição de equivalências e análise de valores de fronteira

esclarecer alguma confusão na automatização de testes de software

O particionamento por equivalência baseia-se no pressuposto de que cada teste dentro de uma partição produzirá o mesmo resultado. Embora isso seja verdade em muitas situações, nem sempre funciona. Por exemplo, quaisquer entradas que tenham sido adicionadas a uma partição por engano podem não ser verificadas, levando a uma cobertura reduzida e a uma potencial instabilidade do software.

A solução para este problema é o teste do valor limite. Permite que as equipas de teste de software se concentrem nas áreas com maior probabilidade de conter riscos e testem o software com base nisso. Em suma, propõe que os riscos são mais prováveis de ocorrer nas bordas ou limites das suas partições de entrada. Por conseguinte, os testadores podem escrever casos de teste nos limites superior e inferior das entradas, para além dos outros casos de teste da classe de equivalência.

 

Partição de equivalências e automatização com o ZAPTEST

melhores testes de software livre e empresarial + ferramentas de automatização RPA

As ferramentas de automatização de testes de software, como o ZAPTEST, podem ajudar as equipas a automatizar o particionamento da equivalência durante a criação e a execução dos testes.

Vamos explorar como o ZAPTEST pode ajudá-lo a desbloquear os benefícios desta 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 automatização de testes é especializada em testes na Web, em dispositivos móveis ou em computadores de secretária. O ZAPTEST é capaz de realizar testes em diferentes plataformas e aplicações, o que o torna uma escolha sólida.

 

2. Escrever e executar casos de teste

O ZAPTEST 1Script permite-lhe analisar a interface do utilizador para criar automação de testes. Além disso, também pode digitalizar maquetas de aplicações se estiver numa fase inicial de desenvolvimento. Utilizando a funcionalidade Scan GUI, o ZAPTEST irá analisar todos os objectos de teste e adicioná-los à lista de objectos.

A partir daqui, pode adicionar objectos ao diagrama e construir os passos de teste.

O ZAPTEST permite-lhe automatizar a redação dos casos com uma simples interface de arrastar e largar. Não é necessário ter conhecimentos de programação para criar casos de teste com o ZAPTEST. Assim, a partir daqui, pode selecionar a operação relevante a partir de um método pendente e construir um caso de teste com base nos valores de entrada necessários para a sua interface. Em seguida, pode criar casos de teste para cada equivalência e executá-los. Pode até reutilizar casos de teste e editá-los no editor de passos, poupando muito tempo.

 

3. Relatórios e gestão de casos de teste

O ZAPTEST permite-lhe executar casos de teste em paralelo, poupando tempo considerável. Isto pode ajudá-lo a executar um grande número de diferentes partições de equivalência de uma só vez ou a executar grupos específicos de testes.

Os resultados são fáceis de obter graças a relatórios detalhados de falhas/passos, capturas de ecrã, registos de execução e métricas de desempenho relacionadas com cada caso de teste.

 

4. Manutenção de casos de teste

Também pode simplesmente acompanhar e manter os seus casos de teste graças às capacidades de controlo de versões de qualidade. Além disso, os utilizadores do ZAPTEST podem clonar e reutilizar testes para atingir um novo nível de eficiência.

O ZAPTEST oferece muito mais funcionalidades para além da automatização de casos de teste. Com um conjunto de ferramentas RPA, o ZAPTEST oferece uma funcionalidade 2 em 1, colmatando a lacuna entre DevOps e BizOps num futuro marcado pela hiperautomatizaçã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 devem encontrar um equilíbrio entre eficiência e precisão. Com alguns softwares a permitirem uma gama quase infinita de entradas, o particionamento de classes de equivalência ajuda as equipas a dividir os dados de teste em partes geríveis e pequenas que podem ser testadas minuciosamente.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post

Virtual Expert

ZAPTEST

ZAPTEST Logo