Estou relendo Refatoração de Martin Fowler. No capítulo 4, Construindo testes, deparei-me com a seguinte passagem.
De fato, um dos momentos mais úteis para escrever testes é antes de você começar a programar. Quando você precisar adicionar um recurso, comece escrevendo o teste. Isso não é tão atrasado quanto parece. Ao escrever o teste, você está se perguntando o que precisa ser feito para adicionar a função. Escrever o teste também se concentra na interface e não na implementação (sempre uma coisa boa). Isso também significa que você tem um ponto claro no qual termina a codificação - quando o teste funciona.
Embora eu seja um defensor do desenvolvimento orientado a testes, não me lembrava de ter sido apresentado ao conceito quando li este livro originalmente há quase cinco anos.
Segundo a Amazon.com, este livro foi publicado originalmente em 8 de julho de 1999. Essa é a primeira referência publicada à programação de teste-primeiro ou há algo ainda mais cedo?
Respostas:
O desenvolvimento orientado a teste é semelhante ao design por contrato, onde você tem pré-condições, invariantes e pós-condições.
Os métodos formais datam de pelo menos 1983 e foram utilizados para sistemas críticos de segurança, como o metrô de Paris sem motorista, usando o método B:
Essas podem ser algumas das coisas pelas quais Kent Beck "ajudou a ser pioneiro ... a redescoberta da programação de teste primeiro".
Mais ao ponto: aparentemente, o Projeto Mercury da Nasa, nos anos 1960, foi o primeiro projeto de software que utilizava o desenvolvimento orientado a testes e outras práticas ágeis. Não encontrei nenhuma documentação inicial, mas aqui está um relatório de 2003 que cita a comunicação dos membros do projeto:
O restante do relatório também é interessante, continua dizendo:
Além do teste automatizado, o relatório de 1968 defende a codificação e o teste paralelos, se não o teste primeiro:
fonte
Jon Bently em Programming Pearls (publicado originalmente em 1986) não menciona especificamente a programação Test-First. Porém, no capítulo "Escrevendo programas corretos", ele descreve a criação de um algoritmo, definindo primeiro as pré-condições, invariantes e pós-condições, e no próximo capítulo descreve uma estrutura de teste automatizada.
Não é exatamente o primeiro teste, mas ele definitivamente estava lançando algumas das bases.
Além disso,
Revista CIO , março de 1993, Bug Busters , de Lucie Juneau, página 84 :
fonte
Isso foi Kent Beck , em seu livro Extreme Programming , também publicado em 1999 .
fonte