state transition testing technique
Aprenda o que é teste de transição de estado e como usar o diagrama de transição de estado:
Em nosso último artigo, vimos o ‘ Gráfico de causa e efeito 'Técnica de escrita de casos de teste. Hoje vamos passar para o próximo método de escrita de caso de teste dinâmico - técnica de transição de estado.
Este documento explora a expansão deste conceito de teste para aplicativos maiores, que não são FSMs como um todo, mas alguns de seus componentes são, de modo a adotar seu recurso exclusivo de 'estado' e regras de transição, resultando em muitas vantagens.
Teste de transição de estado
O teste de transição de estado é um Técnica de teste de caixa preta , que pode ser aplicado para testar 'Máquinas de Estados Finitos'.
Uma ‘Máquina de Estado Finito (FSM)’ é um sistema que estará em diferentes estados discretos (como 'pronto', 'não pronto', 'aberto', 'fechado', ...) dependendo das entradas ou estímulos.
Os estados discretos com os quais o sistema termina dependem das regras de transição do sistema. Ou seja, se um sistema fornece uma saída diferente para a mesma entrada, dependendo de seu estado anterior, então é um sistema de estados finitos.
Além disso, se todas as transações são testadas no sistema, é chamada de cobertura “0-switch”. Se o teste cobrir 2 pares de transações válidas, então é uma cobertura de “1 switch” e assim por diante.
O que você aprenderá:
Qual é a técnica de teste de transição de estado?
A técnica de transição de estado é uma técnica de teste dinâmico, que é usada quando o sistema é definido em termos de um número finito de estados e as transições entre os estados são governadas pelas regras do sistema.
Ou em outras palavras, essa técnica é usada quando as características de um sistema são representadas como estados que se transformam uns nos outros. As transformações são determinadas pelas regras do software. A representação pictórica pode ser mostrada como:

Então, aqui vemos que uma entidade transições do estado 1 para o estado 2 por causa de alguns entrada condição, o que leva a um evento e resulta em açao e finalmente dá o resultado .
Para explicar com um exemplo:
Você visita um caixa eletrônico e retira $ 1000. Você pega seu dinheiro. Agora você fica sem saldo e faz exatamente a mesma solicitação de retirada de $ 1000. Desta vez, o ATM se recusa a lhe dar o dinheiro devido ao saldo insuficiente. Então, aqui o transição , o que causou o mudança de estado é a retirada anterior
Definição de teste de transição de estado
Tendo entendido o que é Transição de Estado, podemos agora chegar a uma definição mais significativa para o teste de Transição de Estado. Portanto, é um tipo de teste de caixa preta em que o testador deve examinar o comportamento do AUT (aplicativo em teste) em relação a várias condições de entrada fornecidas em uma sequência.
O comportamento do sistema é registrado para valores de teste positivos e negativos.
Quando usar o teste de transição de estado?
O teste de transição de estado pode ser empregado nas seguintes situações:
como abrir arquivo swf no cromo
- Quando o aplicativo em teste é um sistema em tempo real com diferentes estados e transições incluídos.
- Quando a aplicação depende do evento / valores / condições do passado.
- Quando a sequência de eventos precisa ser testada.
- Quando o aplicativo precisa ser testado em relação a um conjunto finito de valores de entrada.
Quando não usar o teste de transição de estado?
Você não deve confiar em testes de transição de estado nas seguintes situações:
- Quando o teste não é necessário para combinações de entrada sequenciais.
- Quando diferentes funcionalidades do aplicativo precisam ser testadas (mais como teste exploratório).
Exemplo de teste de transição de estado em teste de software
No cenário prático, os testadores normalmente recebem os diagramas de transição de estado e somos obrigados a interpretá-los.
Esses diagramas são fornecidos pelos Analistas de Negócios ou por uma parte interessada e usamos esses diagramas para determinar nossos casos de teste.
Vamos considerar a situação abaixo:
Nome do software - Manage_display_changes
Especificações - O software responde às solicitações de entrada para alterar o modo de exibição de um dispositivo de exibição de tempo.
O modo de exibição pode ser definido para um dos quatro valores:
- Dois correspondentes à exibição da hora ou da data.
- Os outros dois ao alterar a hora ou a data.
Os diferentes estados são os seguintes:
- Modo de mudança (CM): A ativação deste deve fazer com que o modo de exibição se mova entre “tempo de exibição (T)” e “data de exibição (D)”.
- Reiniciar (R): Se o modo de exibição for definido como T ou D, então um “reset” fará com que o modo de exibição seja definido para os modos “alter time (AT)” ou “alter date (AD)”.
- Time Set (TS): A ativação deste deve fazer com que o modo de exibição volte para T de AT.
- Conjunto de datas (DS): A ativação deste deve fazer com que o modo de exibição retorne a D do AD.
Diagrama de transição de estado

Agora, vamos interpretar:
Aqui:
# 1) Vários estados são:
- Tempo de exibição (S1),
- Mudar tempo (S3),
- Data de exibição (S2), e
- Alterar data (S4).
# 2) Várias entradas são:
- Modo de mudança (CM),
- Reiniciar (R),
- Time Set (TS),
- Conjunto de data (DS).
# 3) Várias saídas são:
- Alterar o tempo (AT),
- Tempo de exibição (T),
- Data de exibição (D),
- Data de alteração (AD).
# 4) Os estados alterados são:
- Tempo de exibição (S1),
- Mudar tempo (S3),
- Data de exibição (S2) e
- Alterar data (S4).
Passo 1: Escreva todos os estados iniciais. Para isso, tome um estado de cada vez e veja quantas flechas estão saindo dele.
- Para o estado S1, há duas setas saindo dele. Uma seta indicará S3 e outra seta indicará S2.
- Para o estado S2 - Existem 2 setas. Um vai para o Estado S1 e o outro vai para S4
- Para o estado S3 - apenas 1 seta está saindo dele, indo para o estado S1
- Para o estado S4 - apenas 1 seta está saindo dele, indo para o estado S2
Vamos colocar isso em nossa mesa:

Já que para os estados S1 e S2, há duas setas saindo, nós as escrevemos duas vezes.
Passo 2: Para cada estado, anote seus estados finais de transição.
- Para o estado S1 - Os estados finais são S2 e S3
- Para o estado S2 - os estados finais são S1 e S4
- Para o estado S3 - o estado final é S1
- Para o estado S4 - o estado final é S2
Coloque isso na mesa como um estado de Saída / Resultante.

Etapa 3: Para cada estado inicial e seu estado final correspondente, anote as condições de entrada e saída
- Para o estado S1 ir para o estado S2, a entrada é Change Mode (CM) e a saída é Display Date (D) mostrado abaixo:

De forma semelhante, anote as condições de entrada e sua saída para todos os estados da seguinte forma:

Passo 4:
Agora adicione o ID do caso de teste para cada teste mostrado abaixo:

Agora vamos convertê-lo em casos de teste formais:

Desta forma, todos os casos de teste restantes podem ser derivados. Eu suponho o outro atributos dos casos de teste como pré-condições, gravidade, prioridade, ambiente, construção, etc. também estão incluídos no caso de teste.
Resumindo as etapas mais uma vez:
- Identifique os estados iniciais e seus estados finais com base nas linhas / setas que estão saindo do estado inicial.
- Para cada estado inicial, descubra a condição de entrada e o resultado de saída
- Marque cada conjunto como um caso de teste separado.
Mais exemplos de técnica de transição de estado
Aqui está mais um exemplo da técnica de teste de transição de estado em aplicativos de software maiores.
Descrição:
' Teste funcional com estado ' A abordagem pode ser usada para testar peças ou componentes específicos da aplicação, com a característica de uma Máquina de Estados Finitos (FSM).

Etapas de implementação:
perguntas e respostas da entrevista .net
# 1) A primeira etapa na implementação do ‘Teste funcional com estado’ é identificar diferentes componentes / partes do aplicativo que podem ser categorizados como FSMs. As entradas, estados e saídas são cuidadosamente rastreados para cada um desses FSMs.
#dois) A próxima etapa seria desenvolver casos de teste para esses FSMs com base nas regras de transição, entradas, saídas e estados de transição.
# 3) A terceira etapa seria integrar o teste desses componentes com outros componentes de interface para validar o aplicativo de ponta a ponta.
Isso pode ser explicado por meio de um exemplo de um aplicativo denominado “Projeto de Casa”, que acompanha a construção de uma casa, com vários componentes de aplicação como aprovação da arquitetura da casa, registro do terreno e casa, seleção do empreiteiro , aprovação de empréstimo habitacional, etc.
Por exemplo,
Devemos considerar o teste de um componente FSM do aplicativo “Projeto da Casa”: Aprovação do Empréstimo de Habitação.
Solicitação de aprovação de empréstimo de habitação (HLA)
O aplicativo HLA será executado por um Usuário de Processamento de Empréstimo independente, que processa o aplicativo de empréstimo. As diferentes etapas do processamento do pedido são detalhadas a seguir:
1.1.1 Etapa 1: Coleta de Documentos
A primeira etapa é a coleta dos documentos relevantes para a solicitação do empréstimo, conforme mencionado na tabela abaixo. Eles são as 'condições' para uma aplicação bem-sucedida. O requerente recolhe os documentos exigidos e aplica-os ao empréstimo à habitação.
O Usuário de Processamento de Empréstimo reconhece o recebimento dos documentos e faz a transição do estado do Pedido de Empréstimo (ou seja, o estado do componente do Aplicativo HLA) para o estado “Aplicado”.

Tabela 1: Lista de Documentos
1.1.2 Etapa 2: Avaliação do empréstimo
Nesse estágio, o credor avalia o Pedido de Empréstimo para determinar se ele atende aos seus requisitos de crédito. Os documentos comprovativos são verificados neste momento.

Tabela 2: Criticidade dos documentos
Os documentos necessários para a avaliação, ou seja, as “condições” que devem ser validadas nesta fase, são validados. Cada condição tem uma criticidade associada a ela (mencionada como 'Y' na tabela acima). Assim que todas as condições críticas necessárias forem satisfeitas, o aplicativo passa para o estado “Confirmado” - ou seja, o componente do aplicativo HLA está no estado “Confirmado”.
Aponte para observar:
# 1) Este princípio traz uma estrutura e objetividade para as condições de teste e definições de 'estado' do sistema .
Além disso, nem todas as “condições” de validação do sistema são críticas para que ele alcance o estado “Confirmado”. Na tabela acima, 4 condições são marcadas como “Não Críticas” para que a aplicação alcance o estado “Confirmado”.
#dois) O número de validações pode ser reduzido de forma otimizada, dependendo do risco ou criticidade das regras exigidas para cada estado. Isso reduzirá significativamente o tempo necessário para a execução do teste e, ao mesmo tempo, não comprometerá a qualidade do teste.
# 3) Isso não é útil apenas para testar os componentes individuais, mas também para testar o sistema de ponta a ponta.
# 4) Além disso, é muito útil ao criar suítes de teste de regressão.
Portanto, neste estágio, é um tipo de teste de 0 switch. Mas os estágios posteriores de aprovação podem ser do tipo 1 ou 2 comutadores de validações para esse estágio.
Por exemplo, A “certidão de casamento” pode não ser muito relevante nesta fase, mas nos últimos estágios de aprovação, quando o risco do requerente de pagar o EMI estiver sendo considerado, a certidão de casamento pode se tornar relevante - isto é, se o cônjuge também estiver empregado , reduz o risco e, se não for utilizado, aumenta o risco.
# 5) O princípio acima pode ser usado para expandir as condições de teste, dependendo dos requisitos do componente naquele estágio.
1.1.3 Etapa 3: Aprovação Condicional
O estado atual do aplicativo é “Confirmado”. O credor daria 'Aprovação Condicional' para o processo de empréstimo avançar. Outras validações são necessárias para mover o aplicativo HLA para o estado “Aprovado”.
1.1.4 Etapa 4: Aprovação
As validações críticas são conduzidas nesta fase:
- Avaliação pela Lenders Mortgage Insurance (LMI): isso envolveria 2 interruptores ou mais validações para a autenticidade da propriedade.
- O Credor pode exigir informações que não foram fornecidas durante a fase de “Confirmação”.
Assim que as condições acima forem satisfeitas, o aplicativo passa para o estado “Aprovado”. A autoridade final do processo de aprovação pode verificar a credibilidade do solicitante do empréstimo, pedindo mais detalhes ou pode não perguntar se os outros documentos do solicitante são conclusivos. Ou seja, mais entradas de diferentes componentes da aplicação principal seriam necessárias para provar a validade .
# 6) Em outras palavras, mais validações podem ser necessárias (ou reduzidas) para a transição para um estado diferente, dependendo das condições de entrada para o componente de outros componentes do aplicativo.
O diagrama a seguir descreve o processo de aprovação.
Figura 1: Processo de aprovação de empréstimo
Riscos e desafios
- Para aplicativos grandes, um conhecimento profundo do aplicativo é essencial para dividir o aplicativo em diferentes componentes lógicos para permitir a categorização como FSMs e componentes regulares. Isso pode exigir um tempo dispendioso das PME.
- Nem todos os aplicativos teriam a viabilidade desse tipo de categorização de FSM.
- Como os componentes FSM interagem com componentes regulares no aplicativo, as entradas para FSMs de diferentes componentes exigem planejamento e execução cuidadosos.
Vantagens do teste de transição de estado
- Sob essa técnica, usando uma representação pictórica ou tabular do comportamento do sistema, o testador se familiariza com o design do aplicativo e se sente fácil de cobrir e projetar os testes de forma eficaz e eficiente.
- Os estados não planejados ou inválidos do sistema também são cobertos pelo uso dessa técnica.
- Usando o diagrama de transição de estado, é fácil verificar se todas as condições são cobertas.
Desvantagens do teste de transição de estado
- Esta técnica não pode ser usada para sistemas de estado não finito.
- Definir todos os estados possíveis para sistemas grandes e complexos é uma tarefa bastante complicada.
Conclusão
O teste de transição de estado é uma abordagem útil quando diferentes transições de sistema precisam ser testadas para sistemas de estado finito.
Testar um aplicativo com o conceito de “Stateful Functional Testing” pode dar às Organizações de Teste uma Abordagem de Teste exclusiva para testar aplicativos complexos, o que aumentaria a produtividade da execução do teste sem comprometer a cobertura do teste.
O teste de transição de estado é uma abordagem de teste exclusiva para testar aplicativos complexos, o que aumentaria a produtividade da execução do teste sem comprometer a cobertura do teste.
A limitação desta técnica é que ela não pode ser usada até e a menos que o sistema em teste tenha apenas estados finitos.
Leitura recomendada
- O que é técnica de teste baseada em defeitos?
- O que é técnica de teste de matriz ortogonal (OATS)?
- Teste Funcional Vs Teste Não Funcional
- O que é teste de comparação (aprenda com exemplos)
- O que é teste de mutação: tutorial com exemplos
- O que é Endurance Testing in Software Testing (exemplos)
- O que é teste de ponta a ponta: estrutura de teste E2E com exemplos
- Melhores ferramentas de teste de software 2021 (QA Test Automation Tools)