1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Engenharia de Software

Discussão em 'Programação' iniciada por Diogo666, 11 de Janeiro de 2013. (Respostas: 10; Visualizações: 862)

  1. Boa Noite ..
    alguém sabe como fazer um teste de caixa preta a um metodo void ?
     
  2. dropko

    dropko Power Member

    supostamente em black box testing sabes nada sobre o conteúdo da função que estás a testar. é orientado à funcionalidade e não ao conteúdo (que é o propósito do white box)

    o que se pretende é injectar qualquer coisa e garantir que a integridade da execução é mantida e que a função (ou o bloco de código) lida com qualquer input. mesmo não retornando void, deve ser por aí.

    se porventura a função lá dentro fizer algo com visibilidade externa, podes conferir para validação adicional.
     
  3. OubeLa

    OubeLa Power Member

    Que tipo de testes estás a querer fazer? Parece-me que te referes a unit tests, que geralmente se enquadram, por inerência ao próprio conceito, nos white box tests. Ou estás a fazer testes de integração? Tens de dar mais informação.

    Btw, um método void em princípio vai alterar o estado de um objecto (ou o estado de qualquer coisa), portanto deves testar o objecto depois do método ser chamado com o resultado que estavas à espera.
     
    Última edição: 11 de Janeiro de 2013
  4. dropko

    dropko Power Member

    os unit podem (e devem) ser white e box tested.

    por definicao de black box nao pode testar o estado do objecto alterado (interno), a funcao é uma caixa negra, por isso a única coisa observável é por fora, daí o return. como é void, há a dúvida imediata. nesse caso ou a funcao mexe em algo externo e visivel (como um ficheiro, por exemplo), ou valida a integridade e segurança da mesma.

    tipo recebe um inteiro, e no teste passa-se um inteiro com um valor descabido, ou um endereço de qq coisa, etc.
     
  5. OubeLa

    OubeLa Power Member

    Como é que consegues fazer unit tests black boxed sem conheceres o conteúdo? Unit é mesmo isso, testar unidades, e sem conheceres a unidade por dentro não podes aplicar alguns conceitos (exemplo: mock objects). Se conseguires aplicar, se calhar é um "grey box" :P Ou então não é bem unit testing, ou serão casos muito simples.

    PS: não estou a dizer que não se possam aplicar técnicas de black box a unit tests. Deve-se! O que estou a dizer é que o conceito está muito ligado a white box porque geralmente conhece-se (ou tem de se conhecer) o conteúdo e a forma como as coisas funcionam.
     
    Última edição: 11 de Janeiro de 2013
  6. Tou a fazer testes unitários , nomeadamente caixa preta.
    O método que eu quero testar e para ordenar um conjunto de valores e utilizo o Array.sort, mas o metodo não recebe nenhum parametro
    e necessário passar um parametro
     
    Última edição: 11 de Janeiro de 2013
  7. paulo.correia

    paulo.correia Banido

    Não recebe mas deve "mastigar" esse array de algum lado. O Teste unitário passaria por validares o conteúdo do array no inicio, invocares o método, e validades de novo o Array se possui o resultado esperado....
     
  8. entao vou ter de inicializar o array, imprimo os valores ,chamo a funcao ordenar, e volto a imprimir os valores
     
  9. paulo.correia

    paulo.correia Banido

    Mas se imprimes, implica que tu visualmente é que tens que verificar o Array.

    Se metes um Array com:

    5, 2, 8, 1, 43

    Sabes que o resultado que esperas é

    1, 2, 5, 8, 43

    Então fazes o Assert e comparas posição a posição do array que esperas, com o array que te é devolvido.
    Também podes fazer outros asserts, por exemplo, tamanho do array, se tem as mesmas posições que o array inicial.
     
  10. dropko

    dropko Power Member

    a unidade é a função. o conteudo é desconhecido, não a funcionalidade.

    enquanto tester, não deves conhecer o que foi feito pelo developer. apenas uma funcao X que recebe A e B. X pode ser "multiplica input" e A e B podem ser 2 inteiros. Essa é a funcionalidade conhecida. Agora o que se passa lá dentro, mistério. Black box.

    E é injectar lá para dentro coisas com e sem nexo que se faz black box unit testing.
     
  11. OubeLa

    OubeLa Power Member

    Não queria prolongar muito isto porque o autor do tópico está à procura de ajuda naquele exemplo prático, mas unit tests são na grande parte das vezes feitos por developers. Além de que, sem conhecer o conteúdo da função, podes não conseguir fazer unit tests (como é que fazes mock a uma ligação a uma BD ou componente se não sabes que isso acontece?)

    Mas podem-se usar técnicas de blackbox mesmo que se conheça o código: equivalence class partitioning, decision table, boundary value, etc. Quando eu desenvolvo unit tests preocupo-me sempre em tentar usar técnicas de blackbox e de whitebox, porque faz todo o sentido.

    Eu penso que no início não fui muito claro no que disse, e até fui incorrecto. Não queria dizer que unit tests têm de ser testados apenas com tecnicas de white box, estava a dizer que há determinados conceitos dos unit tests que geralmente obrigam a que se conheça a forma como o método/unidade está implementado.
     
    Última edição: 12 de Janeiro de 2013

Partilhar esta Página