Desenvolvimento orientado a testes e aprimoramento das habilidades de teste de caixa branca


9

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?


Por que não testar caixa preta também?
Martijn Verburg

@ Martijn, considerando o histórico, provavelmente por causa dos desafios técnicos dos testes de caixa branca. Além disso, embora as técnicas de caixa preta sejam muito úteis para desenvolvedores, pessoas com boas qualidades para um desenvolvedor não são bons testadores de caixa preta, somos muito curiosos e podemos ficar impacientes. Eu sei que sim.
StuperUser

Respostas:


9

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:

  1. A biblioteca JUnit e / ou a biblioteca TestNG .
  2. Uma biblioteca de simulação, como Mockito ou JMock
  3. Uma ferramenta de teste de carga para atacar o código - JMeter
  4. O conceito de Injeção de Dependência (uma forma de Inversão de Controle)

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!


Eles também são técnicas úteis para aprender como desenvolvedor no ecossistema Java. Pelo que entendi, os testadores devem fazer testes de caixa preta.
Tom

1

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.


1

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.


0

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).


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.