Sou um programador iniciante em Java, direto da escola. Tenho bons conhecimentos e experiência com o J2SE. Alguém pode me aconselhar sobre como melhorar ou ajustar minhas habilidades para ser um testador de caixa branca Java? Uma ampla gama de entradas é bem-vinda.
E o que é desenvolvimento orientado a testes?
Respostas:
Test Driven Development (TDD) e seus primos estendidos, Acceptance TDD (ATDD) e Behavior Driven Development (BDD) são técnicas úteis para aprender como testador no ecossistema Java. Vou me concentrar no TDD enquanto você procura por testes em caixa branca.
O que é TDD? - No fundo, é a prática de escrever um teste com falha (vermelho), fazer esse teste passar escrevendo uma implementação (verde) e depois realizando a factoring. O artigo da Wikipedia é um local suficiente para começar a descobrir mais informações. Mas como o tópico é vasto, recomendo a leitura de alguns dos livros conhecidos nesse espaço, como Desenvolvimento Orientado a Testes por Exemplo e Trabalho eficaz com código legado . Também vou colocar um plug descarado para o capítulo TDD em The Well-Grounded Java Developer
No ecossistema Java, isso significa que você deseja aprender:
E então pratique, pratique, pratique, pratique. Bons testadores de caixa branca Java são muito raros; os melhores têm testes escritos em uma ampla variedade de bases de código.
HTH você começou!
fonte
O Junit é uma das melhores estruturas de teste de unidade para a linguagem de programação Java. É uma estrutura de código aberto para escrever e executar testes repetíveis.
fonte
Normalmente não gosto de citar a Wikipedia, mas as informações deste artigo parecem bastante seguras ...
http://en.wikipedia.org/wiki/Test-driven_development
Essencialmente, em termos leigos, é uma abordagem Test-First para o desenvolvimento de software, onde os testes de unidade são projetados e escritos para casos de uso primeiro; depois, o desenvolvimento difícil ocorre posteriormente para ajudar a fazer esses testes de unidade passarem.
fonte
Não tenho certeza se minha sugestão será considerada uma ferramenta para teste de caixa branca, mas você também pode consultar o dbUnit para projetos orientados a banco de dados e o Selenium para teste na web (por exemplo, inspeção de elementos que deveriam existir com base em alguns resultados).
fonte
A pergunta faz referência especificamente ao "teste da caixa branca". É aqui que seus testes têm conhecimento íntimo da estrutura interna do seu código e afirmam o comportamento a cada etapa, em vez de apenas o efeito de entrada / saída / lado (teste de caixa preta). Embora o JUnit seja excelente para fazer as duas coisas, você precisa de estruturas adicionais adicionais para fazer isso no contexto de um teste de unidade.
EasyMock e JMock são boas estruturas para fazer isso. Eu costumo favorecer JMock.
Correndo o risco de iniciar um debate no AT, você deve pensar cuidadosamente nas implicações do teste da caixa branca. Os testes de caixa branca estão intimamente ligados ao seu código (obviamente) e, se não forem usados com cuidado, as estruturas de zombaria podem fazer com que seus testes sejam bastante complicados, difíceis de ler e tendem a ser mais frágeis ao refatorar.
Eu costumo me ater a uma mistura de ambos. Testes de caixa preta sempre que possível e testes de caixa branca aplicados com moderação a códigos mais arriscados / mais complicados.
Obviamente, as estruturas listadas acima também podem ser usadas em testes de caixa preta, em que o número de classes contribuintes (injetadas) é grande e o stubbing simples se torna pesado.
Em relação ao TDD - é principalmente uma abordagem de aprimoramento de design para escrever código, em vez de simplesmente uma maneira de escrever testes. Os testes que você realiza no final são uma saída importante, mas, além disso, a abordagem visa aprimorar o design e a estrutura de sua aplicação.
fonte