Teste de Transição de Estado — Os 7 passos implícitos no Syllabus (ISTQB)
O guia definitivo para você entender o que é e como aplicar
Por que ler esse artigo?
Esse artigo explicita de forma clara, objetiva e prática a técnica Teste de Transição de Estado, a qual é demonstrada a partir da aplicação em um serviço de varejo on-line, ou seja, num e-commerce. Logo, se você está buscando o entendimento definitivo dessa técnica para incorporá-la às suas estratégias de teste, ou para preparar-se para uma prova certificadora, você está no lugar certo.
1. Introdução
A área de Testes e Qualidade de Software é composta por uma série de técnicas, estratégias e métodos de teste, dentre as quais algumas são definidas em documentos elaborados por entidades de padronização e normatização, bem como em materiais oficiais de estudo de entidades certificadoras.
Porém, considerando que grande parte da literatura de Testes e Qualidade de Software é obtida a partir de arquivos traduzidos, sua linguagem tende a ser muito técnica e superficial, além de não possuir diagramação e metodologia de fácil compreensão para àqueles que estão adentrando à área de tecnologia.
Logo, o intuito desse artigo é tornar leve o entendimento da técnica de teste caixa-preta Teste de Transição de Estado, de modo a possibilitar que a incorpore às suas estratégias de teste, bem como facilitar seu estudo para provas certificadoras.
Técnicas de teste caixa-preta: também chamadas de técnicas comportamentais ou baseadas no comportamento, são fundamentadas em uma análise da base de teste apropriada, como documentos de requisitos formais, especificações, casos de uso, user stories ou processos de negócios. Logo, se concentram nas entradas e saídas do objeto de teste sem referência à sua estrutura interna.
Sendo assim, esse artigo é estruturado de forma a fornecer o melhor entendimento em torno da técnica Teste de Transição de Estado, tendo como tópicos: Definição, Metodologia e Aplicação Prática.
2. Definição
Considerando que componentes, sistemas ou registros podem responder de modo diferente a um evento devido à sua dependência de condições atuais ou do histórico, torna-se necessário aplicar o conceito de estado. Sendo assim, Testes de Transição de Estado possuem quatro componentes principais, sendo eles:
- Estado: situação na qual um componente, sistema ou registro se encontra;
- Transição: etapa não permanente entre dois estados, resultante de um evento;
- Evento: acontecimento programado dado um determinado valor de entrada que pode alterar o estado de um objeto;
- Ação: procedimento programado dado que um determinado evento ocorra.
Portanto, o Teste de Transição de Estado é utilizado para verificar a capacidade do objeto de teste em transitar entre os estados por meio de transições válidas, as quais são iniciadas por um evento, podendo assim fazer com que o objeto de teste execute uma ação.
Em outras palavras, dado que o usuário se encontre na tela de login, tem-se como estado “Não logado”. Assim, quando o usuário realiza o evento de logon com dados válidos, ocorre a transição de estado para “Logado”, tendo como ação navegar para a tela secreta.
Paralelamente, tal técnica também pode ser usada para testar a entrada em estados através de transições inválidas ou nulas, ou seja, quando o evento não tem efeito em um estado, como testar se o evento “Pagamento negado pela operadora” permite uma transição de modo a alterar o estado “Pedido em separação” para “Pedido separado”.
Sendo assim, existem duas maneiras de representar, isto é, projetar as transições de estado, sendo elas:
- Diagrama de Transição de Estado: elemento gráfico que mapeia a forma como os estados de um determinado componente, software ou registro se comportam, dado que determinados eventos venham a ocorrer, possibilitando assim a ocorrência de ações. Porém, normalmente é desenvolvido apenas com as transições válidas. Sendo assim, os estados são representados por caixas e as transições por flechas.
- Tabela de Transição de Estado: elemento que exibe todas as transições válidas e potencialmente inválidas entre estados, considerando todos os eventos definidos. E sua estrutura possui como linhas os estados e como colunas os eventos.
Vale salientar que durante a criação do modelo de transição de estado, defeitos podem ser encontrados no documento de especificação, como:
- Omissões;
- Contradições;
- Tipos ou valores de evento incorretos;
- Tipos ou valores de ação incorretos;
- Estado inicial incorreto;
- Incapacidade de alcançar alguns estados de saída;
- Incapacidade de entrar nos estados requeridos;
- Estados extras (desnecessários);
- Incapacidade de executar corretamente algumas transições válidas;
- Capacidade de executar transições inválidas;
- Condições de guarda erradas.
Condição de guarda: operação booleana de valores de atributo que possibilita que a transição aconteça apenas se a condição declarada pela expressão for verídica.
E baseando-se no Diagrama de Transição de Estado, deve-se desenvolver um conjunto de casos de teste que ao ser executado exercite todos os estados e todas as transições válidas com o menor número de testes possível, de modo a obter 100% em cada cobertura.
Em outras palavras, sua cobertura é geralmente definida como o número de estados identificados ou transições válidas testadas, dividido pelo número total de estados ou transições válidas identificadas no objeto de teste.
Sendo assim, os testes podem ser projetados para cobrir uma sequência típica de estados, para exercitar todos os estados, para exercitar cada transição ou para executar sequências específicas de transições, bem como para testar transições inválidas. E no contexto em que o intuito é testar transições inválidas, orienta-se utilizar a Tabela de Transição de Estado, pois torna-se mais fácil a identificação.
Logo, procedimentos manuais podem ser aplicados para identificar os itens a serem cobertos, como imprimir o Diagrama de Transição de Estado e a Tabela de Transição de Estado e marcar os itens cobertos até que a cobertura necessária seja concluída.
Porém, essa abordagem é muito demorada em contextos em que Diagramas de Transição de Estado e Tabelas de Transição de Estado sejam mais complexos. Portanto, uma ferramenta deve ser usada para otimizar esse processo, como a plataforma Lucidchart, a qual é uma aplicação de diagramação inteligente que pode ser utilizada para esse fim, ao adaptar suas funcionalidades.
E com relação a sua aplicabilidade, essa técnica é amplamente aplicada na indústria de software de prateleira (COTS), como o Pacote Office, bem como para modelar um cenário de negócios com estados específicos ou para testar a navegação na tela.
3. Metodologia
Passo 1: Identificar os estados
Inicialmente deve-se identificar todos os estados possíveis que um componente, sistema ou registro pode apresentar, e atribuir a eles um identificador único.
Passo 2: Categorizar os estados
Em seguida, deve-se categorizar os estados como sendo inicial, transitório ou final.
Passo 3: Identificar o estado subsequente
Posteriormente, deve-se identificar o estado subsequente a cada estado dado que um determinado evento ocorra, possibilitando assim que caso haja uma determinada ação, ela também aconteça. Assim, tanto o evento, quanto a ação, também devem ser identificados.
Obs: caso um estado tenha dois ou mais estados subsequentes, deve-se possuir uma linha para cada estado subsequente.
Passo 4: Elaborar o Diagrama de Transição de Estado
Em seguida, considerando a tabela elaborada no Passo 3, deve-se desenvolver o Diagrama de Transição de Estado informando os eventos que possibilitam a transição de um estado para o outro, bem como as ações resultantes das transições. Logo, os estados são representados por caixas e as transições por flechas.
Passo 5: Elaborar a estrutura da Tabela de Transição de Estado
O próximo passo é elaborar a estrutura da Tabela de Transição de Estado, a qual possui como linhas os estados e colunas os eventos.
Passo 6: Preencher a Tabela de Transição de Estado
Posteriormente, considerando o Diagrama de Transição de Estado elaborado no Passo 4, deve-se preencher a tabela com o id do estado subsequente resultante da interseção do estado n com o evento x. Em outras palavras, dado que esteja num estado n e ocorra o evento x, insere-se o id do estado seguinte ou deixa-se em branco caso não haja correspondência (transição inválida ou nula).
Passo 7: Definir um conjunto de casos de teste
Em seguida, baseado no Diagrama de Transição de Estado, deve-se definir um conjunto de casos de teste que ao ser executado exercite todos os estados e todas as transições válidas com o menor número de testes possível, de modo a obter 100% em cada cobertura.
Em outras palavras, deve-se analisar o diagrama para “desenhar” os caminhos existentes que possibilitam exercitar todos os estados e todas as transições válidas. Logo, dependendo do contexto é necessário mais de um caso de teste.
Assim, considerando a Cobertura de Transição, para o caso do diagrama de exemplo mostrado no Passo 4, tem-se dois casos de teste, o primeiro exercitando os caminhos que envolvem as transições entre o Estado 1, Estado 2, Estado 3 e Estado 5, e o segundo exercitando os caminhos que envolvem as transições entre o Estado 1, Estado 2, Estado 4, Estado 4 e Estado 5.
Obs: caso deseje testar transições inválidas, orienta-se utilizar a Tabela de Transição de Estado para definir os casos de teste.
E considerando a Cobertura de Estado, para o caso do diagrama de exemplo mostrado no Passo 4, tem-se dois casos de teste, o primeiro exercitando os caminhos que envolvem as transições entre o Estado 1, Estado 2, Estado 3 e Estado 5, e o segundo exercitando os caminhos que envolvem as transições entre o Estado 1, Estado 2, Estado 4 e Estado 5.
4. Aplicação Prática
Considerando a necessidade de fornecer um caso prático para elucidar a aplicação da técnica em questão, utilizou-se um exemplo resumido de um processo de compra em um e-commerce, ou seja, não contém todos os elementos existentes, como estados, transições, eventos e ações, pois o intuito é apenas exercitar a técnica.
Passo 1: Identificar os estados
Passo 2: Categorizar os estados
Passo 3: Identificar o estado subsequente
Passo 4: Elaborar o Diagrama de Transição de Estado
Passo 5: Elaborar a estrutura da Tabela de Transição de Estado
Passo 6: Preencher a Tabela de Transição de Estado
Passo 7: Definir um conjunto de casos de teste
5. Conclusão
Portanto, após a explicitação da técnica Teste de Transição de Estado, conclui-se que dependendo do contexto em que se está inserido, é uma excelente técnica para compor as estratégias de teste, bem como caso ao se deparar com algum questionamento referente à ela, será capaz de responder de forma assertiva e confiante.
6. Referências Bibliográficas
1 ISTQB, Syllabus: Certified Tester Foundation Level, versão 3.1, 2018.
2 ISTQB, Syllabus: Certified Tester Advanced Level, Test Analyst, versão 3.1.1, 2021.