Como popularizar os testes automatizados? [fechadas]


13

Nossa base de códigos está crescendo há 20 anos. Somos cerca de 10 desenvolvedores + sqa trabalhando com 500kloc. Algum tempo atrás, uma pequena equipe de nós (2 desenvolvedores, um do sqa) começou a trabalhar em um programa de teste automatizado. Atualmente, uma execução leva 11h e é de alguma forma um teste de integração. Estamos trabalhando nisso para reduzir isso e reduzir os falsos positivos e estamos fazendo um bom progresso nisso. Mas os detalhes não devem importar.

Está funcionando bem e continuamos a melhorá-lo. Nós (a pequena equipe) gostamos muito. Se quebrarmos algo, notamos um dia depois e não dois meses depois, quando o sqa dá uma olhada. Além disso, nossos gerentes (dev + sqa) gostam da ideia. Mas outras pessoas na equipe simplesmente ignoram os resultados do teste. Na sua opinião, se os testes falharem após um check-in, é um problema do teste e não da alteração do código e é apenas o nosso projeto de brinquedo. Tivemos discussões várias vezes se um teste com falha é um erro real. Na maioria das vezes é.

Não podemos e não queremos impor algo. Como podemos mostrar que o teste automatizado é uma coisa?


11
Este não é um problema de engenharia de software; é um problema das pessoas.
Robert Harvey

@RobertHarvey Eu recebi votos negativos no SO porque "baseado em opiniões" e um comentário de que este site se encaixaria perfeitamente (e votos positivos nesse comentário). Então: onde devo perguntar? Eduque-me.
Peter Schneider

2
Estou com @RobertHarvey sobre este ser um problema das pessoas. Mas, de acordo com o Local de trabalho, sua pergunta provavelmente será considerada um engano. Por exemplo, ver esta questão que é fundamentalmente o que você está pedindo workplace.stackexchange.com/questions/44964/...
Peter M

1
Não deixe que aqueles que recusam (ou até votos próximos) o desanimam! Algumas pessoas podem entender que essas perguntas são importantes e talvez possam fornecer ajuda. A propósito, também meus colegas não veem a utilidade dos testes automatizados, apesar da versão anterior (sem testes automatizados) ser uma caixa de bugs. Basta mudar uma coisa e quebrar outras, coisas aparentemente não relacionadas. Algumas pessoas simplesmente não querem aprender (há uma resistência aberta contra o aprendizado de coisas novas).
Bernhard Hiller

1
É uma pena que esta questão tenha sido encerrada. Se a engenharia de software significa alguma coisa, significa os problemas de trabalhar com pessoas reais, e as respostas para esses problemas envolverão opinião. Dito isto, algumas idéias rápidas: (1) se você testar dar falsos negativos, isso definitivamente aumentará a reação porque os resultados parecerão uma perda de tempo; (2) diminua o tempo de execução, se possível. 11 horas não parecem imediatas, mesmo que sejam muito melhores que dois meses; (3) o sqa adotará esses testes como métricas observadas. eles já são reconhecidos por sua organização nesta área.
Dale Hagglund

Respostas:


4

aviso Legal

Embora eu possa parecer um gerente, escrevi isso como um desenvolvedor que também precisava ser convencido de que os testes automatizados são bons.


Você deve entender a psicologia básica dos desenvolvedores. É uma necessidade arraigada dos desenvolvedores para confirmar o código. Qualquer coisa que os impeça é algo muito, muito ruim. O teste reprovado é definitivamente algo que os impede de fazê-lo, portanto, é uma coisa ruim. Daí a resistência.

O que você deve ressaltar é que, embora os testes automatizados os reduzam a curto prazo, a longo prazo os poupará muito sofrimento e os acelerará, porque eles poderão se concentrar mais no desenvolvimento de coisas novas e perderá menos tempo fazendo a outra coisa que os desenvolvedores odeiam: corrigir bugs.

E sim, você deve aplicá-lo. Você deve obter o suporte incondicional do gerenciamento e tornar os testes automatizados de gravação obrigatórios e inegociáveis. Com o tempo, os desenvolvedores se acostumarão a eles. O que ajudará é se você puder conceber algumas métricas que mostrem quanto mais novos desenvolvimentos foram feitos e quanto o número de bugs foi reduzido desde a introdução dos testes automáticos. As palavras são voláteis. Os números são sólidos. E os números são algo que um desenvolvedor médio entende melhor do que palavras. Se você puder provar usando números sólidos que os testes automatizados são bons, obterá pouca ou nenhuma resistência a eles.


11

Na sua opinião, se os testes falharem após um check-in, é um problema do teste e não da alteração do código e é apenas o nosso projeto de brinquedo. Tivemos discussões várias vezes se um teste com falha é um erro real. Na maioria das vezes é.

Esse é o seu problema. Se seus testes são inadequados (mesmo que sejam confiáveis ​​"na maioria das vezes"), as pessoas tendem a ignorar os resultados. Sua equipe de automação deve se concentrar na eliminação desses falsos negativos. Somente então o restante da equipe ganhará confiança suficiente nos resultados para realmente confiar neles.


5
Então, novamente, poderia ser outra coisa. Como resistência à mudança. Se um teste falhar, sempre há algo a ser corrigido, o código ou o teste, portanto a atitude de que as pessoas ignoram os testes porque os testes são inadequados é extraviada.
Robert Harvey

Conversamos com eles quando tínhamos certeza de que algo estava quebrado (por exemplo, o teste falhou três vezes seguidas após o check-in afetar a funcionalidade em questão). Mas sim, aumentar a confiabilidade é a prioridade atual.
Peter Schneider

1
@PeterSchneider, um teste pode falhar 100 vezes seguidas, o fará especialmente se o teste estiver errado.
Pieter B

Por outro lado, um teste que nunca falha é mais provável completamente inútil
Vladimir Stokic

1
Os testes +1 frágeis são definitivamente um problema. Os desenvolvedores devem estar convencidos de que os testes que escrevem são úteis, não apresentam complicações desnecessárias e não são trabalhosos .
Andres F.

6

Não podemos e não queremos impor algo.

Você definitivamente deve aplicá-lo! Se alguém enviar um novo código e os testes falharem, o código deve ser rejeitado! É a única maneira de manter com segurança um projeto de software maior.


Acho que depende do sistema, dos testes, da escala e do processo de desenvolvimento. Nem todos os erros podem ser resolvidos imediatamente, nem todos os problemas precisam ser resolvidos imediatamente.
Nickl
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.