A goiaba tem casos de teste de unidade gerados automaticamente :
A goiaba possui um número impressionante de testes de unidade: em julho de 2012, o pacote goava-tests inclui mais de 286.000 casos de teste individuais. A maioria deles é gerada automaticamente , não escrita à mão, mas a cobertura de teste do Guava é extremamente completa, especialmente para com.google.common.collect.
Como eles foram gerados? Quais técnicas e tecnologias foram usadas para projetá-las e gerá-las?
java
unit-testing
test-automation
dzieciou
fonte
fonte
Respostas:
Uma grande parte dessa massa de testes é para as implementações da coleção Guava. Eles escreveram testes genéricos que testam exaustivamente as interfaces de coleta, e isso gera um conjunto por implementação. Veja, por exemplo, aulas de chamadas
CollectionAddAllTester
,ListIndexOfTester
.Tudo isso é apoiado por uma biblioteca chamada testlib, que é fornecida como parte do Guava. Isso é bastante genérico. Ele suporta a gravação de testes genéricos para qualquer interface (não apenas coleções). Você pode especificar
Feature
s de possíveis implementações e testá-las (por exemplo, se seu conjunto não for modificável, você espera um resultado diferenteset.add()
) e, ao executar os testes, especifica quais recursos sua implementação suporta.É baseado no JUnit 3, não no 4. Normalmente, você tem uma classe que se estende
TestCase
cheia de métodos nomeadostestSomething()
, e o JUnit os executa de forma reflexiva. A biblioteca testlib se conecta à execução desses testes para que o ciclo de vida seja assim:TestCase
instânciaTestSubjectGenerator
- esta é a interface testlib que você estende onde realmente cria o assunto do testegetSubjectGenerator()
dá acesso ao sujeito do testeO bit principal é a etapa de inicialização extra que permite injetar um assunto de teste específico no caso de teste genérico.
Eu escrevi um post sobre como escrever TestLib suites geradoras para suas próprias interfaces.
(Também publicado na mesma pergunta no site sqa .)
fonte
Existem geradores de teste de unidade. Por exemplo, no mundo .NET, algo como o Microsoft Pex poderia fazer isso.
Por exemplo, o Microsoft Pex tenta, com base na análise de código, todos os valores possíveis como argumentos para um método. Alguns argumentos devem deixar o método lançar uma exceção. Essas coisas podem testar automaticamente criadas para. Valores estáticos, como uma string vazia retornada em certos casos, também podem ser testados automaticamente.
fonte