O Ubuntu tem testes automatizados. Por exemplo, o teste automatizado é usado para impedir que seu primeiro exemplo de bug ocorra novamente. Fui eu quem consertou o primeiro bug do vsftpd que você mencionou e, ao fazer isso, também adicionei um teste automatizado para evitar que a mesma coisa acontecesse novamente. Você pode ver isso na entrada do changelog que foi postada no próprio bug:
vsftpd (3.0.2-1ubuntu2.14.04.1) trusty; urgency=medium
* d/p/ubuntu-seccomp-gettimeofday.patch: permit gettimeofday() for logging
calls (LP: #1219857).
* Add dep8 smoke test.
-- Robie Basak <[email protected]> Tue, 29 Apr 2014 15:33:07 +0000
Eu não sei porque você considera o bug um exemplo de falta de testes automatizados, já que faço várias menções a isso no bug. Por exemplo, eu disse "teste dep8 adicionado para detectar isso no futuro" e "O teste dep8 incluído verifica automaticamente a correção para esse bug" no resumo.
Lembre-se que o Ubuntu é uma distribuição: é uma integração integrada de muitos projetos externos que chamamos de upstreams. O Ubuntu não seria possível sem o trabalho de outros no ecossistema do Software Livre, e também dependemos dos autores do upstream para fornecer testes, já que são especialistas em seu software.
Além disso, como somos uma agregação de projetos diferentes, uma única infraestrutura de teste automático não faz sentido. Áreas diferentes têm necessidades diferentes. Portanto, nossa estratégia de testes é bastante difundida para atender a essas necessidades, cobrindo testes manuais e automatizados por meio de várias infraestruturas diferentes.
Onde projetos upstream fornecem testes automatizados, os executamos como parte da compilação do pacote. A compilação do pacote falhará se os testes não forem aprovados. Certificar-se de que qualquer teste automatizado disponível esteja ativado dessa maneira faz parte de nossos requisitos para a inclusão principal : Se o pacote for enviado um conjunto de testes, e não há razão óbvia para que ele não funcione durante a compilação (por exemplo, ele precisa de privilégios de root ou de acesso à rede), ele deve ser executado durante a compilação do pacote e um conjunto de testes com falha deve falhar.
Além disso, executamos "testes de pacotes automáticos como instalados" com base em uma especificação chamada dep8 , projetada para testando que a integração entre pacotes funciona corretamente. As atualizações de pacotes que retornam os testes dep8 não passam para a versão de desenvolvimento até serem corrigidas.
Estou menos familiarizado com os testes automatizados feitos pelas equipes de desktop e telefone, mas sei que existem mais mecanismos porque vi referências a eles ao longo dos anos, e isso inclui testes automatizados de GUI, o que acho bastante impressionante. Congratulo-me com outra resposta que abrange testes automatizados de desktop e telefone.