Fazendo a coisa certa
O desenvolvimento moderno não pode existir sem testes automatizados. Os testes podem ser escritos muito rapidamente, mesmo por leigos. Assim, temos testes, tudo é como se fosse bom. Podemos confiar nesses testes? Qual é a qualidade de nossas ferramentas de controle de qualidade? Vejamos os testes Specflow que podem ser escritos em linguagem humana.
Feature: SpecFlowFeature In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 120 on the screen
Este teste consiste em três partes padrão chamadas configuração, ação e verificação. Tudo parece bom. Mas o que acontece quando alguém adiciona uma etapa extra a esse teste?
Feature: SpecFlowFeature In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add And I press memorize Then the result should be 120 on the screen
A memorização é uma operação comum na calculadora para gravar o número atual na memória. Se executarmos este teste, ele ainda estará verde. Este não é um bom teste agora, porque ninguém verifica como uma nova etapa do teste afeta todo o sistema.
Esse tipo de teste pode aparecer como resultado de muitas refatorações ou alterações significativas nos termos de referência. Isso significa que teremos todos os testes em verde, mas eles não verificam muito bem o desempenho do sistema. O teste indicado acima pode ser corrigido de duas maneiras: exclua esta etapa adicional “E eu pressiono memorizar” ou adicione mais uma etapa no final do teste para verificar o status da memória “Então o valor armazenado na memória é 120”.
Plug-in SpecFlowMaster
Este plugin para Specflow permite encontrar esses testes e linhas de teste suspeitas. Como isso funciona? Para cada linha do recurso Specflow, ele gera um teste especial que executa o mesmo teste, mas sem essa linha. Se a execução do teste levar a um erro, esse é o comportamento esperado e tudo está bem aqui. Se esse teste for bem-sucedido, algo está errado com a linha de teste neste teste e o sistema determina essa linha como suspeita. I.e. o novo teste gerado será vermelho.
Casos mais complexos para etapas ou cenários em segundo plano com vários conjuntos de dados também são verificados. Para etapas de pré-condição, o plug-in realiza todos os testes do arquivo, mas sem a linha de teste. Para testes com conjuntos de dados, o plug-in gera execução de teste para todos os conjuntos de dados.
Notas técnicas- C #, VB
- SpecFlow 3.0 ou superior
- .NET Framework 4.7.1 ou posterior, .NET Core 2.0 ou posterior
O que está planejado para ser feito no futuro?- Suporte para atributos Antes e Depois
- Plugins semelhantes para Java e Node.js
Referências- O plugin pode ser encontrado no github
- Envie qualquer comentário para arskiev@gmail.com