Em primeiro lugar, como a maioria dos entrevistados aqui apontou, se o cara não vê o valor do teste, não há muito que você possa fazer sobre isso, e você já apontou que não pode demitir o cara. No entanto, o fracasso não é uma opção aqui, então o que dizer das poucas coisas que você pode fazer?
Se sua organização é grande o suficiente para ter mais de 6 desenvolvedores, recomendo fortemente ter um departamento de Garantia de Qualidade (mesmo que seja apenas uma pessoa para começar). Idealmente, você deve ter uma proporção de 1 testador para 3-5 desenvolvedores. O que acontece com os programadores é ... eles são programadores, não testadores. Ainda não entrevistei um programador que tenha aprendido formalmente as técnicas adequadas de controle de qualidade.
A maioria das organizações comete a falha fatal de atribuir as funções de teste ao recém-contratado, a pessoa com MENOS exposição ao seu código - de preferência, os desenvolvedores seniores devem ser transferidos para a função de QA, pois têm experiência no código e (com sorte) desenvolveram um sexto sentido para odores de código e pontos de falha que podem surgir.
Além disso, o programador que cometeu o erro provavelmente não encontrará o defeito porque geralmente não é um erro de sintaxe (aqueles são detectados na compilação), mas um erro de lógica - e a mesma lógica está em funcionamento quando eles escrevem o teste como quando escrevem o código. Não deixe a pessoa que desenvolveu o código testar esse código - eles encontrarão menos bugs do que qualquer outra pessoa.
No seu caso, se você puder pagar o esforço de trabalho redirecionado, torne esse novo cara o primeiro membro de sua equipe de QA. Faça com que ele leia "Teste de software no mundo real: melhorando o processo", porque ele obviamente precisará de algum treinamento em sua nova função. Se ele não gostar, ele desiste e o seu problema ainda está resolvido.
Uma abordagem um pouco menos vingativa seria deixar essa pessoa fazer o que é bom (estou assumindo que essa pessoa foi contratada porque é realmente competente na parte de programação do trabalho) e contratar um testador ou dois para fazer o teste ( Estudantes universitários costumam ter estágio ou termos de "cooperação", adorariam a exposição e são baratos)
Nota lateral: Eventualmente, você vai querer que a equipe de QA se reporte a um diretor de QA, ou pelo menos não a um gerente de desenvolvedor de software, porque ter a equipe de QA se reportar ao gerente cujo objetivo principal é fazer o produto terminar é um conflito de interesse.
Se sua organização for menor que 6, ou você não conseguir criar uma nova equipe, recomendo a programação em pares (PP). Não sou totalmente convertido em todas as técnicas extremas de programação, mas definitivamente acredito na programação em pares. No entanto, ambos os membros da equipe de programação emparelhada precisam ser dedicados, ou simplesmente não funciona. Eles têm que seguir duas regras: o inspetor tem que entender completamente o que está sendo codificado na tela ou tem que pedir ao codificador para explicar; o codificador só pode codificar o que ele pode explicar - nenhum "você verá" ou "confie em mim" ou acenos de mão serão tolerados.
Eu só recomendo PP se sua equipe for capaz disso, porque, como nos testes, nenhuma quantidade de aplausos ou ameaças irá persuadir alguns introvertidos cheios de ego a trabalharem juntos se eles não se sentirem confortáveis em fazer isso. No entanto, acho que entre a escolha de escrever especificações funcionais detalhadas e fazer revisões de código versus programação em pares, o PP geralmente vence.
Se PP não for para você, então TDD é sua melhor aposta, mas apenas se for interpretado literalmente. Desenvolvimento Orientado a Testes significa que você escreve os testes PRIMEIRO, executa os testes para provar que eles realmente falham e, em seguida, escreve o código mais simples para fazê-lo funcionar. A desvantagem agora é que você (deveria) ter uma coleção de milhares de testes, que também é código, e é tão provável que o código de produção contenha bugs. Vou ser honesto, não sou um grande fã de TDD, principalmente por esse motivo, mas ele funciona para muitos desenvolvedores que preferem escrever scripts de teste do que documentos de caso de teste - alguns testes são melhores do que nenhum. Junte TDD com PP para uma melhor probabilidade de cobertura de teste e menos bugs no script.
Se tudo mais falhar, tenha a equivalência de programadores de um jarro de juramento - cada vez que o programador quebra a compilação, eles têm que colocar $ 20, $ 50, $ 100 (o que for moderadamente doloroso para sua equipe) em um jar que vai para o seu favorito ( registrado!) caridade. Até que eles paguem, evite-os :)
Brincadeiras à parte, a melhor maneira de fazer seu programador escrever testes é não deixá-lo programar. Se você quer um programador, contrate um programador - Se você quiser testes, contrate um testador. Comecei como programador júnior há 12 anos fazendo testes e isso se tornou minha carreira, e eu não trocaria isso por nada. Um departamento de QA sólido que seja devidamente nutrido e com o poder e a ordem para melhorar o software é tão valioso quanto os desenvolvedores que escreveram o software em primeiro lugar.