O que é teste caixa-branca e as técnicas descritas no CTFL

3.98k views1241 WordsCopy TextShare
Mauro de Boni
O teste caixa-branca é baseado na estrutura interna do objeto que está sob teste. Nesse tipo de tes...
Video Transcript:
O teste caixa branca é baseado na estrutura  interna do objeto que está sob teste. Nesse tipo de teste, o testador se concentrará em  como o código fonte trabalha. o CTFL apresenta duas técnicas que são mais usadas no nível  de teste de componentes, mas vale notar que há outras técnicas que podem ser aplicadas em  alguns ambientes de segurança crítica e missão crítica ou ainda de alta integridade, de maneira  que a cobertura obtida seja mais completa, mas não serão apresentados nesse vídeo.
Vamos então  conhecer as duas técnicas que o CTFL descreve A primeira delas é o teste e cobertura de  instruções, onde os casos de testes são projetados para executar todas as instruções  de um código-fonte e a segunda é o teste e a cobertura que decisão, onde os casos de testes  são projetados para percorrer os resultados das estruturas de decisão existentes no código-fonte.  Agora que você já sabe quais são as duas técnicas, vamos conhecê-los com pouco mais de detalhes  começando pela técnica teste e cobertura de instruções. Essa técnica testa as instruções  executáveis de um código fonte.
Geralmente em qualquer software, se olharmos para o  código-fonte, haverá uma grande variedade de elementos tais como operadores, funções,  loop, tratamento de exceções etc, mas veja que dependendo da entrada de dados feita algumas  das instruções do código podem não ser executadas. Assim o objetivo desse teste é cobrir todos  os caminhos, linhas e declarações possíveis no código ajudando a descobrir, por exemplo, trechos  de código inúteis já que não são executados. Nesta técnica, os casos de teste devem ser gerados de  forma que ao serem executados, o fluxo do programa passa por todas as instruções existentes no mesmo. 
Como exemplo vamos usar um código bem simples Como podemos ver, temos duas entradas  de dados "a" e "b". Há uma repetição e uma seleção. Nossos casos de teste têm que  serem projetados para atribuir valores para "a" e "b" de forma que possamos acompanhar a  quantidade de instruções que foram executadas.
Por isso os casos de teste são criados com  o objetivo de executarem todos os comandos pelo menos uma vez e assim atingir um valor de  cobertura. A cobertura é medida como o número de instruções executadas pelos testes dividido  pelo número total de instruções existentes, normalmente expresso como uma porcentagem. Se um  caso de teste conseguir 100 porcento de cobertura significa que todas as linhas do nosso código  foram executadas.
Sem prestar muita atenção ao código, vamos executar o seguinte caso de teste  e descobrir qual é a cobertura dele. Neste caso as instruções 1 e 2 são executadas. Por que, enfim  são as atribuições de valores.
A instrução 3 tem uma estrutura de repetição mas há um teste: a  repetição só acontece se o valor de a for menor que zero, o que nesse caso é falso. Assim  sendo, a execução vai direto para instrução 9. Qual foi a cobertura obtida?
Bom, nesse  caso, é só dividir quatro, que foi o número de instruções executadas por 7, que é o total  de instruções do programa. Veja que as linhas 6 de 8 apenas tem um símbolo de fechamento de uma  estrutura, OK, assim temos 57,14% de cobertura, o que significa que com esse caso de teste  conseguimos passar ou conseguimos executar 57,14 por cento das linhas do código-fonte. Mas  será que todo o código-fonte em algum momento pode ser executado?
Então vamos a mais um teste. Agora  "a" e "b" valem -1. Novamente as instruções 1, 2 e 3 são executadas, mas agora como "a" é menor que  zero, vamos executar as linhas que estão dentro da repetição while, ou seja as linhas 4, 5 e 7  sendo que a linha 5 depende de um teste para ser executada.
Vamos seguir. A linha 4 tem um teste  que verifica se "b" é menor do que 0. Como "b" vale -1, o teste é verdadeiro e por isso vamos  Executar a linha 5 mudando o valor de "b" que agora passa a valer 1.
A linha 7 Adiciona  uma unidade ao valor de "a" se tinha -1, mais 1, passa a valer 0, voltando novamente para  a linha 3. A condição para repetir o laço é falsa porque agora "a" é igual a 0, por isso vamos para  a linha 9. A variável "c" agora vai valer um.
Diferentemente do exemplo anterior,  nesse todas as linhas foram executadas. Assim sendo, foi possível atingir uma cobertura de  100%. Agora vamos falar sobre teste e cobertura de decisões.
O teste e cobertura de decisões  verifica as decisões existentes no código e as instruções executadas a partir delas. É uma  forma de teste de controle de fluxo Pois ela vai gerar fluxos a partir dos pontos das decisões.  Nesta técnica, os casos de teste serão gerados de tal forma que cada decisão tenha todas as suas  opções de saída percorridas ao menos uma vez.
A cobertura obtida por ela é mais eficiente do que  a cobertura de instruções que vimos anteriormente. Como exemplo, eu vou usar o mesmo código que foi  usado para o teste e cobertura de instruções. Os casos de teste devem cobrir cada saída é  possível de uma decisão.
Assim, no caso de um IF poderíamos ter dois fluxos um para o resultado  verdadeiro e outro para o resultado falso. Já para uma instrução Case, seriam necessários casos  de teste para todos os possíveis resultados incluindo o resultado padrão. Esse caso de  teste com os valores de entrada iguais a -1 possibilitaram a obtenção de 100% de cobertura  para o teste e cobertura de instruções.
Esse mesmo caso de teste coincidentemente vai obter  100% de cobertura no teste de decisões também, mas veja uma coisa importante 100% de cobertura  de decisão garante 100% de cobertura de instrução, mas não vice-versa, veja se nós tivéssemos  feito esse teste aqui antes com esse caso de teste nós obteríamos 100% de cobertura no teste  de decisões e também de cara já obteríamos 100% de cobertura no teste de instruções, ok?  então nós apresentamos primeiro teste de instruções e depois o teste de decisões se você  obtiver 100% de cobertura do teste de decisão, automaticamente você obtém 100% de cobertura  no teste de instrução, mas o contrário nem sempre será possível ou seja se você tem 100% de  cobertura de instrução, não necessariamente você terá 100% de cobertura no teste de decisão, ok? e  aqui veja o ponto importante é justamente a linha quatro mesmo que aquela linha quatro ali é ter if  é o outro que a gente precisa prestar atenção aqui porque é aquela linha cinco ela pode ser executada  ou não dependendo do valor do teste da linha 4 a mesma coisa a gente tem que prestar atenção com  a linha sete e a linha quatro pois Dependendo do valor de a eles podem ser executados ou não ok mas  aqui o inferior só tem a parte verdadeira então eu preciso criar um caso de teste que passe que  exercite o teste verdadeiro a condição verdadeira naqueles e eu preciso também ter um caso de teste  que seja capaz de exercitar o while para fazer no repetir e para fazer um saindo a repetição também,  ok?
Nesse vídeo você viu as duas técnicas de teste que compõe a categoria de técnicas caixa-branca  e são descritos no CTFL, além disso viu onde e como elas são aplicadas e com medidas sua  cobertura Obrigado por assistir e bons estudos!
Copyright © 2024. Made with ♥ in London by YTScribe.com