Engenharia de Software - Teste estrutural

5.37k views2249 WordsCopy TextShare
UNIVESP
univesp.br Engenharia de Software Univesp (Universidade Virtual do Estado de São Paulo) Professor: M...
Video Transcript:
E aí [Música] o Olá eu sou professor Marcelo Fantinato Essa é a disciplina de engenharia de software e agora nós vamos falar sobre teste estrutural complementando A aula anterior que foi sobre teste funcional então é esse slide aqui é só para recapitular a ideia do que é um caso de teste que eu expliquei na aula anterior e a ideia agora é a mesma Como selecionar os dados de entrada para projetar os casos de teste é visando aumentar a chance de detectar a presença dos defeitos A diferença é que agora nós vamos ver uma outra classe
de técnica de teste como o próprio nome diz são a é o teste estrutural Ou seja eu vou olhar agora sim para estrutura interna do código e não apenas para os requisitos Então agora eu vou olhar para a estrutura interna e é do código certo é por isso que ele o teste estrutural né era chamado estrutural porque o olho para estrutura interna Mas ele também chamaram de teste de caixa-branca em contraposição ao teste de caixa preta que é o entende o software do sistema como uma caixa preta só Olhava O que entrava e saía sem
ver as engrenagens que tinha lá dentro agora eu consigo ver as engrenagens que tem ali dentro então alguns autores preferem chamar de caixa transparente o caixa de vidro porque é uma caixa branca como essa aqui né Se for Branca opaca eu continuo não vendo que tá lá dentro então mas tudo bem preta versus branca no sentido de preta eu não enxergo e branco ou enxergo mas o ideal seria uma caixa transparente então é uma caixa transparente em que o copo de vidro em que eu consigo tão vidro também pode ser pintado né então o melhor
mesmo é a caixa transparente então consiga ver exatamente as engrenagens que estão funcionando lá dentro a engrenagem é o código são os comandos faça isso Faça aquilo se tal coisa for maior que tal coisa faça isso não faça aquilo um laço então eu não sou necessariamente o programa dor mas eu vejo o programa feito esse é o sou programador e vou fazer o teste é é claro que eu vejo o programa feito certo Por isso então vocês já devem imaginar que lá naquela espiral de duas aulas atrás é ele está bem lá no centro da
espiral associado ao teste de unidade é E aí assim como no caso da e da data do teste funcional o teste estrutural uma classe de técnicas e nós temos alguns exemplos só para mim funcionar alguns existem vários outros mas para mencionar alguns nós temos por exemplo o teste do caminho básico teste de condição teste de fluxo de dados e teste de ciclo mencionará que o teste do caminho básico e o teste de ciclo começando pelo teste do caminho básico Ball antes de falar sobre o teste do caminho básico propriamente dito eu preciso falar para vocês
sobre a anotação de grafo de gráfico de fluxo basicamente todos os testes é estruturais todas as técnicas de teste estrutural usam anotação de graça de fluxo não é obrigatório mas o elas geralmente usam para explicar por testador como a técnica é funciona o gráfico de fluxo ele é uma se você representar o software o código o programa nesse formato aqui de grafo então em cada nós aqui do grafo Eu tenho um conjunto de um ou mais comandos que tem que ser executados sempre na sequência faça isso print Ride a Import sei lá comandos que necessariamente
tem que ser executados na sequência então aqui nesse 91 eu tenho por exemplo um dois três quatro 10 comandos mas que eu tenho que executar na sequência já que por exemplo no nosso vocês eu também tenho um conjunto de comandos mas em algum momento eu tenho que tomar uma decisão ou eu venho para cá ou eu venho para cá certo no final do 7 e do 8 ambos vêm por 19 e começa um novo grupo então eu consigo visualizar graficamente a estrutura alto nível do soft e também sobre estrutura de fluxo de controle Então veja
eu começo software por aqui daqui eu venho para cá daqui eu posso ouviu para cá ou vir para cá provavelmente é que eu tenho uma condição um wi-fi se tal coisa acontece e venha para cá se não venha para cá aqui eu tenho provavelmente um outro wi-fi na sequência né posso ter outros comandos antes mas prometi termina com if que eu venho para cá ou vem para cá depois eu junto aqui junto aqui vindo para cá o junto aqui daqui eu volto para um esse provavelmente é um repeti um episódio ou Maio é um laço
né é um laço que eu volto para cá faço fico posso ficar fazendo esse laço aqui em vezes até que em algum momento eu saio e termino aqui no nosso 11 então isso é uma representação na notação de gráfico de fluxo E aí essas técnicas elas são explicadas é em geral usando essa notação então voltando para o para o para técnica que eu havia mencionado o protesto de teste do caminho básico significa que eu quero testar todos os caminhos básicos que existe na estrutura interna Eu quero um caso de teste para testar cada caminho básico
bom e quais são os caminhos básicos Quantos caminhos básicos eu tenho o que é um caminho básico um caminho básico ou também chamado de caminho em linearmente independente São aqueles caminhos que é eu consigo fazer um independente do outro de forma que para cada novo caminho eu consigo sempre incluir uma nova aresta O que é uma aresta são essas flechinhas que eu tenho aqui e é e liga um nó no outro certo então eu por exemplo o Caminho 11 que vem é no um até o 11 eu começo para um e já termino 11 é
um caminho bom tenho outros caminhos tenho o caminho 1 a 1 2 3 4 5 a 10 volta para um e termino no Onze eu até repeti uma aresta que já tinha no anterior que era um 11 mas eu acrescentei várias outras arestas então o primeiro e o segundo são linearmente independentes porque eu consegui acrescentar novas arestas para o segundo caminho o terceiro caminho ele vai fazer um dois três agora ele vem para os seis para oito por nós os 10 volta para um e para 11 mesma coisa repetir alguns mas consegui incluir novos caminhos
e por fim o caminho quatro você já deve estar imaginando né seria 1 2 3 6 7 9 10 e 11 11 e agora não tenho mais nenhum caminho que eu posso incluir é para adicionar novos novas arestas que eu até poderia ter caminhos novos eu poderia vir aqui um dois três quatro cinco 10137 8689 10 e 11 é um caminho diferente que ainda não tinha feito mas ele não é linearmente independente dos outros é a ponto de eu ter um novo caminho é linearmente independente certo um novo caminho básico então para esse gráfico aqui
eu tenho esses quatro caminhos básicos esse quatro caminhos linearmente Independentes é possível seguindo algumas regras básicas as fórmulas básicas na teoria de grafos saber quantos caminhos mínimos é aliás Quantos caminhos linearmente Independentes você deve encontrar no software e a ferramenta o código e a ferramenta que calcula encontra esses caminhos para você você não tem que fazer isso manualmente bom mas dado que você tem esses quatro caminhos A ideia é dizem projete casos de teste que passe por esses caminhos para você garantir que você está exercitando todos os caminhos durante o seu teste como eu vou
fazer isso você tem que saber o que é o código tão como fazer para um caso de teste e passar pelo um e o 11 bom o a partir do um eu posso vir para o 11 ou eu posso seguir para o 23 Então tem que ter uma condicional Ali você vai ter que abrir o código e olhar que condicional é essa é se idade é menor que 18 faz isso se for maior ou igual a 18 faz aquilo se for essa condicional bom então se for menor que 18 vem para cá então eu já
sei que meu dado do meu caso de teste e vai entrar com uma idade por exemplo igual a 10 para poder desviar e vir para cá agora todos os outros casos de teste que eu quero que desse aqui para o 23 23 23 23 eu vou ter que usar a idade maior ou igual a 18 só que eu vou ter que variar outras coisas para passar por aqui por aqui por aqui então em algum momento vai ter que vir para cá ou vai vir para cá e qual é a condição que tem aqui dentro desse
nó que vai fazer ele ir para um lado ou ir para o outro eu vou e também Descobri com essa condição para também conseguir projetar o meu caso de teste daquela forma e onde eu vou ter a minha surpresa talvez quando eu faço um projeto um caso de teste que deveria ter seguido por um determinado caminho e segue por outro eu imaginava que você queria por um caminho mas acabou seguindo por outro é nesse e você acaba encontrando Então os defeitos no software mas se tudo que você projetou funcionou direitinho é porque eu sou só
fica ele está livre de defeito Que ótimo é aliás Há uma grande evidência que ele tá livre de defeitos ele realmente está livre de defeito você não consegue garantir você teria que fazer todos os testes possíveis e imagináveis que são em geral infinitos voltando naquela questão que eu comentei lá numa aula passada bom Um Outro exemplo é o teste de ciclo só para vocês perceberem que muda as técnicas de teste estrutural mas todas elas segue em geral a a ideia do que é a estrutura interna do softer nesse caso aqui em vez de explorar os
caminhos diferentes possíveis vão ser explorados os ciclos que existem dentro da e da estrutura interna então eu posso ter por exemplo ciclos simples que é vem para cá e fica rodando aqui ou fica rodando aqui né Eu imagino que vocês já conheçam essa notação Ah mas essa aqui não tá seguindo anotação anterior que a notação de gráfico de fluxo é é uma notação de um fluxograma né Essa mutação aqui do fluxograma esse desenho aqui olha ele significa uma decisão aqui significa executar uma atividade e é que significa uma decisão sigo adiante ou volto sigo adiante
ou volta sigo adiante eu volto é um é um fluxo simples Eu tenho dois aliás estão ciclo simples Eu tenho um ciclo simples aqui um ciclo simples aqui a diferença entre eles é que no primeiro e é eu posso nunca executar essa atividade no segundo eu posso executar atividades Pelo menos eu tenho que executar pelo menos uma vez eu tenho outros ciclos que são ciclos alinhados nesse caso aqui olha eu executo Atividade Aí eu decido seguir reto ou voltar e depois de novo eu decido seguir reto ou voltar então tem dois ciclos uma sequência do
outro aqui são dois ciclos concatenadas né esse aqui esse aqui não é não se custam caneladas olha são dois exemplos separados aqui sim olha é um ciclo na sequência do outro então são três tipos de fícus que para dependendo do tipo do ciclo eu posso querer fazer casas de testes diferentes para explorar esses ciclos joia esse último ciclo aqui é o que a gente chama de um ciclo não-estruturado se vocês observarem o desenho são ciclos que é daqui eu pulo para baixo de baixo eu volto lá para cima E aí eu vou lá para baixo
do Meio subo é uma confusão esse ciclo é o que a gente chama discípulo não-estruturado nesse caso não há sugestão de como você seguir para executar para gerar a casa de teste a sugestão é refatoração lembram da aula de refatoração uma vez que você percebe que tem alguma coisa que não tá muito legal faça novamente então alguém pode ter feito esse código uma vez quem for olhar para esse código para pensar em casos de teste e perceber esse tipo de ciclo O melhor é refazer no formato de ciclos concatenadas Muito provavelmente ou ciclos alinhados mas
não um ciclo não-estruturado dessa forma que viram emaranhado que você nem sabe direito o que você tem que testar Ali pela confusão que é Pode até ser que aparentemente seja funcionando mas a chance de não estar é grande então ver fatore refaça antes de testar Dragon Ball é com isso então é essa visão geral sobre técnicas de teste estrutural eu acho que ficou bastante Claro a diferença de fazer um teste funcional do Tipo funcional e de fazer um teste do tipo estrutural ambos Claro tem o objetivo final mesmo que é pegar a presença de um
defeito mas a forma de você pensar de você ter ideias de criar os casos de teste é que varia é isso a bibliografia também é o mesmo livro de engenharia de software uma abordagem profissional dos autores preze minimaxing é de 2016 obrigado a [Música] E aí [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com