Adicione um teste de unidade para cada novo bug

35

No meu trabalho, todos os desenvolvedores que resolvem um erro precisam adicionar um novo teste de unidade que avisa sobre esse tipo de erro (no caso em que ocorra novamente). Se um teste de unidade não for possível (por exemplo, um problema de design de página da web), o departamento de controle de qualidade precisará criar um caso de teste para verificá-lo manualmente.

A idéia por trás disso é que, se um defeito não foi detectado antes do lançamento do produto, é porque não há um teste de unidade apropriado para detectá-lo. Então o desenvolvedor precisa adicioná-lo.

A questão é: isso é comum em alguma metodologia de desenvolvimento de software? Essa técnica tem um nome? Gostaria de aprender mais sobre isso, mas preciso de algumas informações para começar.

Ivan
fonte
6
É chamado teste de regressão e é bastante comum. Só posso vincular um artigo da Wikipedia, mas está longe de ser perfeito.
Devmiles.com
23
É uma boa prática fazer isso e, portanto, silenciosamente raro vê-lo na realidade.
Sardathrion - Restabelece Monica
1
Você pode até argumentar que todo check-in deve ter uma alteração de teste de unidade correspondente.
Carra
“É chamado teste de regressão” - Às vezes é chamado erroneamente de “teste de regressão”.
kirelagin 08/04

Respostas:

28

Isso é bastante comum. Usamos isso em nossa equipe. Para cada defeito de produção, o desenvolvedor deve adicionar uma nota sobre a causa raiz do problema, adicionar um teste de unidade com falha e adicionar uma análise de impacto do teste antes que o ticket possa ser enviado ao estado dev para verificar o código.

O teste de unidade com falha deve passar antes que possamos enviar o código à produção.

Eu não acho que isso tenha um nome específico, exceto o "teste de regressão" geral. Isso é muito útil e começamos a ver um aumento na qualidade do produto depois que começamos a seguir esse processo.

java_mouse
fonte
14

Absolutamente!

Se você concorda que os testes de unidade são uma coisa boa, perceberá que, se houver um erro, haverá um teste de unidade ausente, cobrindo esse caminho de código.

Então, o que deve acontecer é que você escreva um teste de unidade que mostre que o erro existe, corrija o erro real e o teste de unidade será aprovado.

Se você não possui testes de unidade, pode ser uma boa maneira de começar a introduzir testes de unidade em um projeto.

ozz
fonte
11

A técnica é o desenvolvimento orientado a testes. Não é realmente capaz de detectar um bug semelhante da próxima vez, embora o conjunto de testes repetíveis seja sempre útil. O ponto é que você pode demonstrar que isolou o que está errado com o código, provou que está errado, corrigiu, provou que a correção está correta.

Há uma citação que não consigo lembrar nem encontrar, mas é basicamente: "Todo bug é um teste ainda não escrito".

Tentar vendê-lo como teste de regressão é uma batalha perdida, IMHO. Dada a frequência com que essas coisas detectam um bug repetido, a maioria dos desenvolvedores apenas diz: "Por que se preocupar, quando eu posso simplesmente consertá-lo?"

pdr
fonte
0

Essa técnica é bastante comum e, na minha opinião, o melhor nome para ela é “Testes orientados a defeitos” (eu a criei e a encontrei descrita sob esse nome há muito tempo ).


Às vezes, algumas pessoas chamam esses testes de "Testes de regressão", mas pessoalmente acho um pouco difícil justificar esse nome. Uma definição um pouco mais difundida (e que, sem dúvida, faz muito mais sentido para esse nome) de "teste de regressão" é "executar testes após fazer qualquer alteração no código para garantir que você não introduziu nenhuma regressão" e seu IC que testa cada ramificação ao enviar para o repositório a satisfaz.

Kirelagin
fonte