Como lidar com a mentalidade de “automação é fácil”?

12

O título diz tudo. Alguns funcionários de nossa empresa acreditam que os testes automatizados são "fáceis" e que "deve levar um dia" para escrever conjuntos de testes COM e UI. O que pode ser feito para combater isso?

Nota: Não estou perguntando sobre como promover a automação. Esse não é o problema. Testes e processos automatizados estão sendo promovidos e solicitados o tempo todo aqui. A questão é que algumas pessoas não entendem que a automação não é "fácil" nem "rápida".

joshin4colours
fonte
25
Alguma dessas pessoas foi convidada a provar suas afirmações?
Blrfl
2
Esses tipos de percepções existem em muitos setores e não podem ser alterados. Embora muitos possam responder a abordagens para educar os funcionários, a única resposta verdadeira é trabalhar em outro lugar. Pessoas que têm um baixo valor percebido do trabalho de outra pessoa nunca são boas.
Reactgular
7
possivelmente relacionado: efeito Dunning Kruger
Simon Bergot 11/11
3
Diga a ele: "cara, se você acha que pode ser feito de uma só vez, sente-se e me mostre como você implementa isso, para que eu possa aprender com você como escrever testes tão rapidamente, pois não sei como realizar esta".
Doc Brown

Respostas:

5

Da próxima vez que você receber uma solicitação, tente dividir o máximo do processo de automação em partes do tempo. Acho que quando percebem que são necessários 5 minutos por campo de texto ou por pressionar o botão, eles começam a perceber quanto tempo leva.

Por exemplo, talvez por que demore tanto tempo que eles comecem a introduzir interdependência entre os campos: por exemplo, permita que eles continuem se isso for preenchido, mas não se isso não for, exceto quando ...

Tente educá-los sobre POR QUE leva tanto tempo, mas não tanto quanto você os perde através do processo de "aprendizado".

TruthOf42
fonte
4

Em minhas funções, encontrei muitas pessoas "x é fácil", especialmente em projetos de desenvolvimento. Na minha opinião, existem três razões para isso:

1) Eles realmente não entendem do que estão falando, mas gostam muito de soar como eles.

2) Eles leram alguns livros e acham que sabem do que estão falando

3) Por fim, as pessoas assumem que um computador está testando rápido, porque computadores são rápidos.

A maneira certa de combater isso é envolver os usuários regularmente, as estratégias de comunicação para os projetos são essenciais, certamente explicar os meandros dos testes automatizados para usuários não técnicos será inútil, mas conscientizá-los dos processos envolvidos pode ser benéfico. Você pode fazer isso através de documentação, workshops ou apenas um bate-papo amigável na próxima vez que passar.

Eu já vi um bacharelado destacar a pessoa mais barulhenta dessas pessoas "x é fácil" e simplesmente convidá-las para um dia no departamento, com o pensamento de que elas vão embora entendendo mais sobre o que você faz OU simples sair pensando "Deus, eu realmente não sei do que estou falando, acho que estava errado".

Mrk Fldig
fonte
2

Software é o negócio de automatizar as coisas.

Escrevemos software para facilitar tarefas chatas, repetitivas e trabalhosas. Nós escrevemos software para automatizar a criação de relatórios, coleta de dados, comunicação com outras pessoas, etc. Escrever testes automatizados é realmente apenas escrever software para garantir que nosso outro software funcione da maneira que esperamos.

Se seus colegas de trabalho entenderem que escrever software é difícil e leva tempo, deve ser bastante fácil mostrar a eles que escrever mais software deve ser difícil e demorado. Seria bom obter todos os benefícios da automação gratuitamente, mas, como sempre, precisamos colocar o trabalho na frente para obter os benefícios mais tarde.

Se eles não entenderem isso, você precisará ensiná-los ou aperfeiçoar seu currículo.

Becuzz
fonte
2
writing software is hard and takes time. Escrever um pequeno aplicativo de linha de comando é rápido. Escrever a IA do skynet é difícil. Contar tais afirmações gerais não convencerá ninguém.
Simon Bergot
3
@ Simon - Essa é uma afirmação justa o suficiente. Nem todo software já escrito é necessariamente difícil. Eu estava pensando mais sobre o fato de que a maioria dos softwares que somos pagos para escrever são para coisas não triviais. Até algo como um aplicativo CRUD simples leva tempo e esforço para garantir que eles tenham validação, manipulação de erros, possivelmente segurança, relatórios etc. etc. Enquanto escrevo isso, também percebo que estruturei minha resposta pensando que os colegas de trabalho no OP não são -tech / gestão de pessoas. Isso pode não estar correto e afeta como "difícil", "fácil" e "rápido" devem ser interpretados.
Becuzz
Programação de computadores é difícil e, você pode dizer porque é caro demorado
Chris McCall
2

A maioria dos funcionários gasta seu tempo na parte "frontal" (voltada para o cliente-chefe-parte interessada) da empresa ou na parte "traseira" (onde o trabalho "real" é realizado). Essas duas funções são diferentes, quase opostas. (E muito poucas pessoas trabalharam em ambos). Como resultado, muitas vezes há mal-entendidos entre os dois grupos.

A melhor maneira de educar, por exemplo, as pessoas da "frente", é fazer com que um ou alguns deles passem um dia nas "costas". Se eles concluíssem "Um dia na vida de ...", teriam uma idéia mais realista do que pode ser feito em um dia e por que leva mais tempo e esforço para executar testes automatizados. Da mesma forma, as pessoas "de trás" podem se beneficiar de um ou dois dias na "frente".

Em "Como ser rico", John Paul Getty (um magnata da época) defendia esse "treinamento cruzado". Na sua opinião, um vendedor que passava algum tempo na linha de montagem em que o produto era fabricado faria um trabalho de venda muito melhor, e da mesma forma um engenheiro que passava um dia com os clientes faria um trabalho melhor de "depuração".

Tom Au
fonte
2

A questão é que algumas pessoas não entendem que a automação não é "fácil" nem "rápida".

Não concordo com a sua premissa aqui.

Sou um grande defensor dos testes automatizados, não importa se são testes de unidade, testes de integração ou testes de interface do usuário. Existem muitas ótimas ferramentas disponíveis para implementar testes automatizados.

Vamos comparar testes automatizados e manuais com base no seguinte exemplo:

Em um aplicativo Web, teste a funcionalidade "Alterar senha" de um usuário existente usando um navegador.

Teste manual :

  • Inicie o aplicativo da web
  • Abra o navegador
  • Porra, há um erro. Por quê? Ah, esqueci de iniciar o banco de dados!
  • Ok, desligue o aplicativo da web
  • Iniciar o banco de dados
  • Inicie o aplicativo da web
  • Atualize o navegador
  • Hmm, qual era a senha do nosso usuário de teste novamente?
  • Analisando o banco de dados
  • Oh, a tabela de usuários está vazia! Eu tenho que criar um novo usuário.
  • Registre um novo usuário no aplicativo da web: Introduzindo nome de usuário, senha, endereço de email
  • Por que não consigo fazer login com meu novo usuário? Ah, preciso clicar no link de confirmação no email!
  • Bem, enviei ao usuário um email como "[email protected]". Vamos para o banco de dados e defina a coluna "ativa" como "Sim".
  • Conecte-se. Desta vez, funciona!
  • Hmm, o que eu queria testar de novo ...?

Fácil? Na verdade não. Existem muitas armadilhas possíveis no processo.

Rápido? Não . O trabalho manual leva tempo.

Agora, vamos tentar escrever um teste automatizado :

  • Precisamos encontrar ferramentas para nossa linguagem de programação para iniciar automaticamente o banco de dados e o servidor da web. Pesquisa e implementação leva tempo.
  • O banco de dados precisa estar em um estado limpo quando o teste é iniciado. A criação dos scripts leva tempo.
  • Precisamos escrever o teste. Como precisamos de um usuário, também precisamos registrar um novo para o nosso teste. Leva tempo.
  • Finalmente, podemos escrever o que queremos testar: Alterando a senha do usuário. Com a nossa ferramenta de teste do navegador, isso é feito rapidamente, em comparação com as tarefas anteriores.

Fácil? Não! Precisávamos pesquisar as ferramentas, implementá-las, corrigir alguns erros em nossos testes.

Rápido? Não! Demora ainda mais do que fazer um teste manual.

Mas há uma grande diferença aqui: para testes futuros, você só precisa escrever o teste em si , o último item da lista - que foi feito comparável rapidamente. Todas as pesquisas e scripts de inicialização não precisam ser feitos para testes adicionais.

E depois de escrever o teste, você pode começar com facilidade. Em alguns segundos (ou talvez minutos, se o início do banco de dados e do aplicativo da web demorar muito), você verá se a rotina "Alterar senha" funciona ou não. Se houver um erro, corrija-o e execute o teste novamente - você verá imediatamente se o erro foi corrigido. Rápido e fácil .

Escrever testes automatizados não é fácil nem rápido, mas a execução é.

E este é o ponto em que o tempo investido volta.

Uooo
fonte
Ótimo post, mas o grande problema: o que acontece depois que você faz login? A maior parte dessa lógica começa a ficar realmente esquisita.
Joshin4colours
0

Testar em geral não é fácil, e nem deveria ser. Se a Boeing ou a Mercedes não testassem seus produtos com a mesma rigor que testam, ou estariam em falência devido a ações judiciais ou fechariam o negócio por vender itens de baixa qualidade. Você dirige um carro a 100 km / h, sabendo que o volante pode ou não cair em pedaços?

É muito difícil sugerir maneiras de lidar com a mentalidade sem entender quem são essas pessoas ou seus motivos. A maioria dos gerentes e diretores pensa em custos e é julgada pelo que é produzido. O uso desse critério dificulta a justificação de tempo gasto em testes. Se esse for o seu caso, você precisará encontrar maneiras de apresentar essa tarefa como benéfica a longo prazo, o que é claro.

Só porque o software não é tangível, não significa que podemos fugir sem pensar nas implicações dos sistemas que construímos que não estão funcionando. Aposto que a Amazon tem testes automatizados e aposto que existem pessoas que conhecem muito bem as implicações de custo de seus sites / serviços falharem.

Daniel Hollinrake
fonte
0

2 +2 = 4 é um dos trechos de código mais simples que todos entendem; E você pode ver como é fácil entender. Mas isso não significa que é uma equação "fácil". O nível de abstração necessário para alcançar a equação simples é bastante complexo. O mesmo acontece com o software e as metodologias de teste de software. O nível de abstração que requer um pedaço de código exige muito trabalho.

É verdade que uma boa prática leva a reutilizar classes e objetos, mas igualmente, para atingir esse estado, é necessário investir tempo e esforço .

James
fonte
isso não responde à pergunta feita
gnat
0

Existem dois lados dessa questão.

Por seu lado, você parece pensar que está fazendo um bom trabalho e que o grupo "Automação é fácil" não sabe do que está falando.

Do lado deles, pelo que você diz, eles veem testes automatizados levando (na visão deles) muito tempo para serem produzidos.

A essa distância, com o pouco que temos para continuar, não sabemos quem está "certo" ou se alguém está "certo".

Como lidar com a automação é fácil mentalidade

Fale com eles. Honestamente, peça suas idéias sobre como isso pode ser melhorado. Envolva-os e envolva-os. É a única maneira de descobrir se eles realmente têm algo positivo a oferecer. Talvez eles tenham algumas contribuições valiosas a fazer e você possa obter uma vitória / vitória.

Se eles não têm nenhuma idéia real de como a programação e os testes automatizados funcionam, ou idéias realistas sobre como melhorar a produtividade, depois de tê-los engajado positivamente, você pode mostrar como isso é feito e aonde o tempo passa. Seja humilde e positivo, agradecendo-lhes por suas contribuições / idéias. Pense no que eles disseram: talvez as sugestões deles desencadeiem uma maneira diferente de pensar para você. Se sim, dê a eles esse feedback. Por ser humilde e positivo, você também pode ganhar / ganhar.

Antes de conversar com eles, pense em como você constrói, executa e gerencia seus testes. Que estrutura (s) você está usando? Existem outros que poderiam ser melhores? Você tem clichê "padrão" que você adapta? A criação dos testes poderia ser mais automatizada? O que está te segurando?

andy256
fonte