Engenharia de Software - Teste funcional

7.1k views2298 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 nós vamos então agora falar sobre teste funcional para aqueles que acompanharam a aula anterior Eu já havia adiantado que nós falaríamos sobre teste funcional e teste estrutural nas próximas duas aulas é então teste funcional ele é uma técnica de teste é para saber para direcionar Como selecionar casas de teste geralmente é quando nós estamos fazendo o teste de funcionalidade quando nós queremos testar essa funcionalidade está dando o resultado correto o resultado esperado Então se é para selecionar
das casas dados de teste para gerar os casos de teste a primeira coisa né só recapitulando aqui o que é um caso de teste um caso de teste ele é formado um caso Esse é o que vai direcionar como nós vamos testar o software fazer um teste então um caso de teste ele é formado por dados de entrada e resultados esperados né e o resultado esperado então eu falo eu cheguei até mencionar na aula anterior né se eu tenho uma funcionalidade que é para calcular uma raiz quadrada e eu quero fazer um teste uma possibilidade
é o seguinte caso de teste dados de entrada quatro resultado esperado dois porque a raiz quadrada então se eu entro com quatro eu espero que o que o sistema um Produza dois se eu entro com 100 eu espero 10 se eu entro com menos um eu espero não existe como saída porque eu não existe raiz quadrada de número negativo e eu posso ter infinitos casos de teste só pensando numa funcionalidade tão simples como essa que é a raiz quadrada porque porque eu possa ter um o 2 o 3 o 4 o 5 e eu os
números são infinitos então por isso que eu tenho que selecionar alguns casos de teste apenas certo apenas alguns dados de entrada para fazer os casos de teste e o caso de teste também ele é acompanhado de procedimento de teste no caso do raiz quadrada é relativamente simples né bom você vai informar o dado quatro e clicar no botão ok lá e ver qual é o resultado esperado é uma funcionalidade só que calcula a raiz quadrada mas vocês sabem que as funcionalidades dentro de software de dentro de sistemas de software podem ser bem complexos a ponto
de você ter que definir o procedimento de execução para executar aquele teste e aí a nossa questão aqui é Como selecionar e escolher esses dados de entrada dado que é visto que nós não podemos fazer tudo executado todos mas nós queremos selecionar um pequeno conjunto mas que esse pequeno conjunto pequeno conjunto a grande chance de detectar a presença dos defeitos para isso algumas técnicas de teste podem ser definidas Existem duas grandes classes não técnicas classes de teste uma das classes é o teste funcional também chamado de teste de caixa-preta porque ele é chamado de teste
de caixa-preta porque você olha por software que você está testando como uma caixa preta ou seja você não enxerga o que tem dentro dele você só entende aquele entra com dados e sai para o resultado do outro lado você não vê as engrenagens que tem ali dentro e por isso que ele é chamado então onde teste de caixa preta na verdade né é um nome um apelido para você dizer que você vai a olhar apenas para especificação de requisitos associado ao código que vai ser testado e baseado nesta especificação de requisitos é que você vai
e é gerados casas de teste e aí se vocês lembrarem daquela figura aqui nós vimos em espiral na aula passada vocês vão ver então que esse teste faz mais sentido quando nós estamos falando do teste de validação ou teste e e o teste de sistema Ó eu falei que ela é uma classe de técnicas porque porque nós temos várias técnicas que são do tipo funcional do tipo caixa-preta o teste baseado em grafos o teste baseado em particionamento o teste de particionamento de equivalência de análise de valores limites de Matriz ortogonal baseado em modelos aqui eu
não consigo falar um pouquinho de cada um deles para vocês eu vou falar apenas de dois um deles é o particionamento de equivalência certo e aí o que é o teste brasileira o teste baseado em particionamento de equivalência e ele pega olhando para os requisitos do software identifica quais os dados os campos os dados que eu tenho que entrar para executar Hotel o o softer e é por tabela para executar o teste então por exemplo eu tenho que testar é o e pra executar o software eu tenho que pôr o nome do usuário idade do
usuário data de nascimento pensando em exemplos bem simples né mas só para exemplificar aqui para cada um desses dados de entrada eu tenho os domínios por exemplo idade tem que ser um número de 0 a 150 por exemplo não pode ser número negativo não pode ser letra né tem que ser um número e aí o sistema pode convencionar Inter que talvez ser um número inteiro não pode ser número fracionário então Existe existe o domínio de entrada Quem é E aí para que eu faço isso porque se eu dividir nesses domínios de entrada eu sei que
se eu escolher apenas um daquele domínio não importa qual escolha mas a chance é basicamente a mesma de detectar a presença de um defeito por exemplo é se eu se eu tenho um dado de entrada que a idade do cliente que eu estou cadastrando seu escolher entrar com 20 anos ou com 21 ou com 30 ou com 31 é os casos de teste e vão tem a mesma probabilidade de encontrar um defeito no software a presença de um defeito no software caso ela exista se eu faço um teste usando 20 e não detecta a presença
do defeito Muito provavelmente não preciso fazer um outro teste usando 30 usando 35 porque também não vai provavelmente detectar a presença do defeito de um defeito por outro lado se eu já detectar a presença de um defeito usando o a idade vi o centro usar testar usando 30 vai encontrar o mesmo certo então eu por isso é que chamaram de particionamento de equivalência Eu participo particiono os dados de entrada de forma a criar classes e tenham a mesma equivalência na chance de encontrar tão aqui um a um quadro Só para tentar exemplificar isso melhor então
eu posso ter e o diferentes dados de entrada né Por exemplo idade nome é percentual de não sei o quê data de nascimento para cada um desses dados de entrada eu vou criar as classes os conjuntos de dados que podem ser de valores válidos e de valores Inválidos O que é válido e o que é inválido por exemplo a idade ou comentei né supondo que esse aqui fechou idade então a idade é de 0 a 150 anos não sei mas o que é inválido números negativos números fracionários é Spring literal né letras isso tudo é
inválido eu faço isso para todos eles e aí eu vou gerar casas de teste que tenham é pelo menos um elemento dessa classe depois pelo menos um elemento dessa classe um elemento dessa classe um elemento dessa classe mas eu faço isso com diferentes casos de O Futuro Está tudo junto né porque se eu misturar tudo e aí dá um defeito encontrar a presença de um defeito é porque eu encontrei a presença nos defeitos Qual é o dado que eu estou explorando naquele momento então a gente costuma dizer que a gente está isolando é as variáveis
eu crio valores padrão E aí bom eu vou mudar uma coisa na idade encontrei um defeito não agora eu mudo uma outra coisa na idade encontrei o defeito não agora eu mudo uma outra coisa na idade encontrei um defeito o que encontrei depois eu paro de mexer na idade Agora vou mexer no nome do cliente depois na data de nascimento se eu mexo um monte de coisa ao mesmo tempo e o sistema simplesmente dá um Crush né uma exceção capota Por que que acabou Tô Será que foi porque eu mudei a data de nascimento o
nome a idade é o que foi né bom a idade e data de nascimento ao mesmo tempo não faz sentido esse exemplo que eu que Olá tudo bem só para ilustrar é depois nós temos vão aqui na verdade é um exemplo mais ou menos nesse que eu já tinha adiantado né olha só se eu tiver um sistema em que eu tenho para a idade do cliente a é um sistema que tem que ser maior de idade para poder usar então a data esperar a idade esperada é de 18 a mais infinito não tem um limite
superior porque a pessoa eu tinha dado exemplo que ela teria seria no máximo 150 mas se ela tiver 151 anos não pode usar então é de 18 a mais infinito e classes inválidas então de 0 a 17 é são idades que existem mas é inválido para aquele sistema é valores negativos nem existe é uma outra é uma classe inválida qualquer Spring é inválido o valor nulo vazio também válido Tá certo então aqui qual é a classe válida que só tem uma válida pode poderia ter mais e qual é as quais são as inválidas E aí
por exemplo para Plato válida de 18 mais infinito eu posso por exemplo escolher o 25 para invalida de Vera 17 eu posso por exemplo escolher a 10 pro valores negativos posso por exemplo escolher o menos dez por uma string eu posso escolher sdf para o vazio possa escolher o nulo Então nesse caso quando eu escolho 25 o sistema tem que funcionar bem dando o resultado que eu espero quando eu escolho 10 - 10 a s d f ou nulo O sistema também tem que funcionar bem e o que é funcionar bem nesse caso é dizer
dado inválido forneça um outro valor mas ele também tem que funcionar bem ele não pode capotar porque eu dei um dado em vale né por isso é que eu preciso estressar tudo eu preciso explorar tudo e quando eu estou fazendo os testes por outro lado eu não preciso ficar me matando o teste do com menos 10 - 11 - 12 - 13 - 14 e assim por fim por depois diante é bom E aí nós temos uma outra técnica que é o A análise de valores limites e na verdade é uma extenção do particionamento de
equivalência em que em vez do escolher apenas um dado de cada classe um valor de cada classe eu vou escolher três né que é escolher um de cada de cada Fronteira os valores que estão nas bordas então voltando exemplo exatamente para aquele exemplo que nós estávamos Vejam só aqui na classe é de 18 a mais infinito eu vou escolher justamente o 18 Eu também escolheria o mar infinito mas mais infinito mas não tem como então eu não vou escolher o mais infinito que eu escolhi um outro qualquer no meio 25 eu disse que a gente
escolheria três nesse caso é só dois porque não tem como escolher e na fronteira superior eu peguei o da Fronteira inferior que eu 18 e da planta superior eu não consigo e um qualquer no meio que eu peguei o 25 nessa aqui de dados Inválidos dá para pegar Olha o da Fronteira inferior t0 da Fronteira superior que 17 e o 10 que é um qualquer do Meio para os outros é não faz diferença né a string não tem superior e inferior nulo não tem superior e inferior qualquer valor negativos eh eu peguei o menos 10
ainda peguei poderia pegar o menos um que a justamente o da de uma das Fronteiras Mas por que pegar dados que estão nas fronteiras das classes de equivalência quando elas são faixas e não um valor qualquer É porque quando o programador está programando é um demoro perigo é onde ele mais costuma errar porque porque existem os tais sinais de maior maior igual menor menor igual onde ele tem que fazer algumas condições e a chance dele colocar o maior no lugar de um maior igual ou menor no lugar do menor igual ou vice-versa é muito grande
então ali se você testou apenas com 25 e não deu erro não quer dizer que se você testar com 18 também não vai dar erro porque porque talvez ele tenha usado o sinal errado na condição quando ele programou E aí talvez você Digite o 18 e ele diga o sistema diga valor inválido use uma outro e você digo é mais Como assim é válido 18 mas talvez os usuários o programador o parque 18 em vez de maior ou igual então o teste Baseado Em análise valores limites pede justamente isso é explore as fronteiras também e
não apenas um valor qualquer daquela classe porque ali vai aumentar a chance você vai aumentar um pouco só o número dos seus casos de teste mas vai aumentar bastante a chance de pegar a presença de defeitos no código é isso é apenas uma ideia então de técnicas de teste é do tipo funcional ou caixa preta veja que a gente não olhou para Como está implementado o código apenas a gente imagina como ele está implementado ok bibliografia engenharia de software uma abordagem profissional dos autores preze Maxim é de 2016 bom obrigado tá [Música] [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com