Pergunta

Comecei como engenheiro de software na empresa em que estou atualmente. Com o tempo, eu era o único disposto a ou capaz de assumir a responsabilidade por vários sistemas e, portanto, fui "promovido" a ser gerente de TI. Agora, durante meu tempo como engenheiro de software, eu criaria testes funcionais para os vários módulos de software que construiria e, como resultado, ainda hoje sou capaz de testar rapidamente várias partes do sistema em que trabalhei. No entanto, existe uma grande base de código grande com pouca ou nenhuma cobertura dos outros desenvolvedores que trabalham aqui.

Agora, como gerente de TI, quero poder testar que todas as partes do sistema estão funcionando, mas existe:

A) Não há tempo orçamentário dedicado à criação de cobertura de teste de código

e

B) Nenhum desejo do "engenheiro -chefe de software" para começar a criar suítes de teste para me ajudar a monitorar que o software está funcionando.

Não espero que a equipe de software largue tudo o que está fazendo e gaste duas semanas criando suítes de teste, mas seria bom se eles começassem a expandir a cobertura do conjunto de testes ao longo do tempo, para que eu possa confirmar que as várias partes do sistema estão funcionando .

Então, fervendo -o, como faço para que a equipe de software comece a criar suítes de teste?

Outras advertências:

A) Ainda me pedem para fazer projetos de software, além de gerenciar nosso Departamento de TI (um engenheiro UNIX, Guy de suporte para desktop e equipamentos relacionados ao escritório e produção)

B) Meu administrador do UNIX tem muita dificuldade em obter sistemas de produção executando a base de código completa e não estamos recebendo boa ajuda da equipe de software. Ele não pode executar nenhum tipo de diagnóstico para ver onde o aplicativo da Web está falhando nas novas instalações. O vice -presidente da empresa continua me dizendo para entrar e fazer print_r's no código para ver o que está acontecendo. Isso é péssimo !!!

Foi útil?

Solução

Esta é uma boa pergunta. E se houvesse uma resposta correta, muito mais projetos de software seriam bem -sucedidos e ofereceriam alta qualidade.

Eu não acho que é uma boa ideia fazer essa mudança de cima para baixo. Tem que ser expulso dos próprios desenvolvedores. Portanto, os treinamentos na direção do TDD seriam bons, mas isso é um investimento de longa data, o que leva tempo.

Se você deseja uma solução mais rápida, considere os testes funcionais, aceitações e sistemas. Com estes testes, você testa praticamente todo o aplicativo em todas as camadas. Se você estiver desenvolvendo aplicativos da Web, você deve considerar usando Selênio Para automatizar seu teste. É fácil criar teste com ele (Selênio IDE).

Mas o uso de apenas esses testes (não testes de unidade) não fornece as vantagens provenientes do TDD.

Automatizar seus testes é crucial.

Outras dicas

Primeiro, você precisa investigar o desenvolvimento orientado a testes, para que se sinta à vontade para explicá -lo em termos que seus desenvolvedores entenderão, bem como sua gerência. Como você parece estar desenvolvendo aplicativos da Web e possui habilidades técnicas, sugiro que você mergulhe e escolha uma ferramenta de código aberto para testar aplicativos da Web, instalá -lo e comece a criar testes para qualquer coisa que você se desenvolva.

Sarja é um exemplo do tipo de ferramenta de teste que você precisaria.

Então, como gerente, você precisa atrair desenvolvedores para seguir seu exemplo e recompensá -los por fazê -lo. E puni -los, quando eles não usam a estrutura de teste e isso leva a problemas evitáveis. Assim que você receber um desses incidentes, poderá conseguir seu chefe a bordo e obter algum impulso.

No geral, lembre -se de que o objetivo é fazer menos trabalho para obter um bom resultado. Cortar cantos é uma maneira de fazer menos trabalho, mas leva ao risco de resultados ruins ou espetacularmente ruins. Mantenha a gerência informada dos níveis de risco e dos custos potenciais em risco.

Não apenas force as pessoas a fazer testes por testes. Ele precisa ajudá -los a serem mais produtivos, então escolha os primeiros projetos para ele com cuidado.

Você tem uma equipe de teste ou controle de qualidade?

Eu começaria a ver se eles têm casos de teste que usam para qualificar a construção. Caso contrário, você terá que desenvolver esses casos de teste para testar a funcionalidade principal do seu produto.

A próxima etapa seria automatizar os casos de teste.

Se o aplicativo for mal desenvolvido sem nenhuma ferramenta de solução de problemas ou recursos de depuração, seria difícil até que sejam adicionados como requisitos para a próxima versão.

Meus 2 centavos.

Vou ter que discordar de Michaelkebe- essas mudanças precisam de apoio do nível executivo, além de alguns desenvolvedores importantes, a fim de ter sucesso.

Sem esse apoio, você serão apenas alguns desenvolvedores que parecem "perder tempo em escrever testes para coisas que já funcionam".

É preciso haver uma visão clara, e ela precisa ser repetida em voz alta e com frequência.

Não estou necessariamente defendendo o Agile aqui, mas muitas vezes ele clica para os proprietários de empresas.

Se você pode vendê -los nisso, as coisas que você está animado (entregando software rápido, fácil manutenção, testes automatizados etc.) se encaixarão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top