Engenharia de Software - Aula 19 - Caracterização de teste de software

18.06k views3285 WordsCopy TextShare
UNIVESP
Engenharia de Computação - 13º Bimestre Disciplina: Engenharia de Software - EES-001 Univesp - Univ...
Video Transcript:
[Música] o [Música] olá eu sou professor marcelo fantinato esta disciplina engenharia de software do curso engenharia da computação da univesp nós vamos agora com aula número 19 continuam no assunto teste de software vamos agora tratar uma caracterização do teste de software na aula anterior nós apresentamos é uma visão geral sobre o teste de software e agora a gente vai ter um pouquinho mais detalhe técnico de alguns detalhes técnicos a respeito do teste de software então a primeira coisa nós vamos falar vamos ver o que o teste de software ele é dividido em por exemplo fases
de teste é diferentes autores eles tratam um teste diferentes tipos de divisão de teste nós podemos falar de fases de testes níveis de teste tipos de teste técnicas de teste há diferentes livros diferentes autores diferentes artigos diferentes profissionais vão sempre ter uma nomenclatura diferente para tratar de de teste de software aí eu vou apresentar para vocês aqui uma visão muito baseado no na principal é nas principais a um dos principais livros que eu estou adotando aqui pra essa disciplina alguma nomenclatura também é baseado na minha experiência como professor e pesquisador na área de engenharia de
software teste de software a mais vocês precisam saber é que vocês vão sempre se deparar com outro tipo de nomenclatura ok então por exemplo uma coisa é você falar de fases de teste de software o que significa isso significa que conforme vocês vão andando nos ciclos de desenvolvimento de software num primeiro momento é feito o que é chamado de teste de desenvolvimento que significa isso enquanto o software está sendo desenvolvido enquanto o sistema está sendo desenvolvido uma série de testes é feito nesse ambiente de desenvolvimento só aqui muito teste é feito vamos tratar principalmente desse
teste de desenvolvimento depois que o desenvolvimento praticamente acabou é feito o que é chamado de teste de ienes o teste de aceitação é só aqui vocês estão vendo os dois sinônimos e ainda outros nomes podem existir tanto pra cá quanto pra cá por exemplo vocês devem se lembrar desse termo elise quando a gente tratou gerenciamento de configuração que significa isso uma versão do software que vocês empacotam pra enviar para o cliente ou seja vocês montaram em teoria você já testaram bastante dentro da equipe de desenvolvimento dentro do conjunto com os os implementadores os testadores e
aí então vocês montaram uma versão do software pra entregar para o cliente neste momento vocês chegam lá para o cliente falam olha essa versão que a gente vai entregar pra vocês vamos testar para ver se vocês aceitam por isso que é também chamado de teste de aceitação e depois existe o teste de usuário que é o teste que você vai entregar um endereço o usuário testar sozinho né vocês não fazem o teste sozinho então basicamente é que seria apenas a equipe de desenvolvimento ak desenvolvimento mais usuário e aqui apenas usuário essa é uma das formas
de dividir a fase de teste mas existem outras formas então agora a gente vai focar principalmente então no teste de desenvolvimento uma outra forma de dividir e teste então em relação aos tipos de teste o que significa tipos de testes significa a característica o que você quer testar então quando a gente pensa em teste de software a gente pensa o que eu quero testar ea primeira coisa que vem à mente provavelmente a maioria de vocês é o eu quero testar o software está fazendo o que ele tem que fazer né então seu caos europeu implementem
um teste um software para calcular raiz quadrada eu vou lá estar para ver se ele está cá o plano a raiz quadrada eu implementei um teste um software para calcular uma soma 11 mas o outro eu vou lá e te f 2 + 2 deu 45 + 3 deu oito enfim 10 mais cinco dez ou quinze eu fico lá fazendo vários testes até vou testar depois somar um número positivo com o negativo dois números negativos vou ficar fazendo um monte de teste para ver se ele está sob o número a mais b está dando é
só uma correta mas não é só isso o teste bom na verdade esse é um dos tipos de teste é o teste que a gente chama de testes de funcionalidade a funcionalidade propriamente dito ou acurácia ou seja por exemplo representado por essa figura aqui ele está indo direto ao ponto ele está fazendo exatamente o que eu gostaria que ele fizesse isso é o teste então de funcionalidade mas eu tenho uma série de outros testes que não é de funcionalidade que estaria mais relacionado aqueles requisitos não funcionais por exemplo um requisito de tempo né será que
o software o sistema está fazendo o que ele tem que fazer mais um em um tempo razoável num tempo que é o que eu espero porque às vezes você coloca a 2 + 3g igual a ele vai me dar 5 depois de três horas será que três horas é razoável mas não ele demorou três minutos três minutos é razoável na área demorou três segundas três segundos razoável o que é a zoar ver o que é o tempo adequado que é o tempo que o cliente espera então esse é um outro tipo de teste ao teste
do tempo de resposta você pode ter o tempo de resposta você pode ter um outro tipo de de tipo de um outro tipo de teste também relacionada ao tempo que é o teu desempenho que é o processamento você quer processar por exemplo 50 pedidos por segundo é uma outra característica relacionada a tempo também você pode por exemplo testar a questão de quantas pessoas podem usar o software ao mesmo tempo você pode querer testar quanto que o software ocupa de espaço é o volume que que o software ou os dados vão ocupar você pode querer testar
se o software vai é poder ser usado em diferentes plataformas de hardware ou mesmo de sistemas operacionais você pode querer testar a usabilidade ou mais do que o pode ser simplesmente a usabilidade de software mais filho é acessível para diferentes tipos de de pessoas enfim você pode testar uma série de características não funcionais é que o software pode ter aqui o destaque alguns veículos e você também pode ter por exemplo etapas do teste o que seria uma etapa do teste aqui a gente viu as fases do teste noturno de etapas de testes de novo diferentes
autores pode chamar de diferentes formas mas aqui por exemplo para eu fazer o teste de desenvolvimento o deslize do usuário instale mente de desenvolvimento quando eu tô fazendo o tédio de desenvolvimento de tempo de resposta ou de funcionalidade eu tenho que pôr exemplo projetar caso de teste e preparar os dados de teste executar o teste propriamente dito comparar os resultados ou seja o que significa fazer o teste significa eu pensar que teste eu vou executar ou seja eu quero executar eu dei a que os exemplos se eu estou fazendo um teste de somar um número
com o outro eu começo a pensar vou chamar dois números positivos vou chamar dois números negativos o maior número positivo com um número negativo eu vou chamar um número positivo com vero então eu vou falar um número inteiro com o número fracionário eu vou chamar dois números inflacionários e começa a pensar em idéias o que eu vou fazer de teste aí foi a primeira etapa que projetar casos de teste ops é depois vou preparar os dados propriamente dito dois números positivos quais dois números positivos quatro e cinco da ok o número 10 com um número
negativo hockey velho já está definido qual o número negativo o número inteiro com o número fracionário quais números estão aqui o preparo os dados de teste propriamente dito aí eu executo ok definir aí eu executo e aí eu comparo eu eu tinha planejado 4 com 54 e cinco de entrada eu sei que tem que dar 9 eu executo deu nove eu comparo 9 era o resultado esperado era então ok passo executei 4 com cinco deu 88 era o resultado esperado não era 9 então falhou claro que esse evento é muito simples é muito básico né
eu espero que ninguém implemente um software de a + b e os resultados falhe é bem simples mas a gente está falando de pensando em software muito mais complexos mas a idéia é essa né no nível de abstração muito mais simples mas a ideia é essa você vai ter que pensar em testes e o processo etapas são sempre as mesmas pensa no no cenário definir os dados exatos executa e avalia o resultado e aí essa é isso é o que a gente chama de casos de teste vocês já devem ter pensa é ouvido muito falar
em casa de teste porque é um caso de teste é você pensar quais são os dados que você vai ter de entrada pra você poder executar o teste e comparar o resultado de entrada com que você tem na saída rock bon uma outra o característica de teste a forma de execução você pode ter um teste manual você pode ter teste automatizado em geral é não é uma boa solução você só fazer o teste manual porque demora muito porém fazer só teste automatizado é muito custoso e é quase impossível você ter 100% dos testes automatizados então
em geral a gente tem uma uma forma híbrida alguns testes automatizados outros manuais em geral os testes automatizados eles são feitos pensando no teste de regressão o que é o teste de regressão e aqueles testes que vocês é que você executa sempre que você tem uma alteração no software pra corrigir um defeito para adicionar uma nova funcionalidade você executa novamente aqueles testes para poder garantir que o software não regrediu então você tem um software lá esse software está ok já testou e já está ok aí você vem e adiciona uma nova funcionalidade ou você vem
e altera uma funcionalidade que já estava ok você precisa garantir que o que já estava funcionando continue funcionando então você deveria ter um conjunto de testes pra você executar sempre que você altera uma parte ou que você adição numa parte é claro que a parte que você alterou ou a paz que você adicionou essas duas partes você precisa testar muito bem mas a parte que você não mexeu você precisa minimamente testada para garantir que nada estragou né até porque existe uma interface aqui olha uma interface entre o que você adicionou ou que você alterou com
a parte que você não mexeu e essa interface existe uma chance de você ter estragado e essa esse teste de regressão é um teste que você tem que executar sempre então é bom você conseguir automatiza lo porque você ficar resultando sempre esse teste é muito gostoso agora aquele teste que você executa uma duas vezes é muito de vez em quando é um teste que talvez valha a pena você ficar fazendo ele de forma manual bom e aí nós temos a outra característica que são os níveis de teste os níveis de teste de software o que
é o nível de teste vocês devem lembrar quando se tratou a questão de de projetos de software deve lembrar que a gente tinha a idéia de uma arquitetura né uma arquitetura de arquitetura do software ao arquitetura do sistema que a gente divide o sistema nós vamos ter um grande sistema esse sistema vai ser dividido em componentes aqui representado num alto nível de abstração não está usando nenhum daqueles modelos o que a gente viu nas aulas de modelagem projeto um diagrama de classe por exemplo só estou aqui abstraindo para poder pegar a idéia do teste mas
imagina que cada um desses quadradinhos amarelinhos aqui seria um uma classe por exemplo essas classes elas podem ser agrupadas para formar um componente esses componentes então eles são agrupados para formar o sistema como um todo então você pode você pode querer você deveria querer num primeiro momento testar cada um de cada uma dessas classes ok quando você está testando cada uma dessas classes você está fazendo que nós chamamos de teste de unidade então você vem testa uma classe você vem testa outra classe você vem esta outra classe você vê esta outra classe então você tem
até você está testando uma unidade geralmente quem faz esse teste é o próprio programador programador programa uma classe e ele mesmo já testa uma classe a é bom uma vez que cada uma dessas classes foram testadas 21 mil estão funcionando bem você começa a testar testá las de forma agrupada então você tem por exemplo esse conjunto de classes aqui agrupadas e ou você pode ter também esse conjunto de classes aqui agrupadas como se eles tivessem formando um componente e aí você tem o que a gente chama de teste de componentes ou testes de integração porque
você está integrando essas classes para formar um componente você poderia chegar a assumir que isso tudo vai ser um componente né depende do que você está chamando de um componente de novo essa figura que ela é uma ilustração né gente precisa saber exatamente quais são seus componentes então você primeiro testa cada classe isolada depois você vai ter o sua arquitetura real o seu projeto arquitetônico real ea idéia é você tem que testar cada componente para daí no fim você testar tudo que é o seu sistema então nós temos níveis você começa num nível de granularidade
bem pequeno cada unidade depois todos os componentes ainda o próprio programador costuma testar cada componente na verdade um grupo de programadores porque é quando você está fazendo um componente em geral você tenha um programador responsável por algumas classes o outro programador por outra classe então você já está misturando programadores então esse teste você já mistura programadores agora o teste de sistema já costuma ser feito por uma equipe uma equipe própria que a equipe de teste mesmo e quando a gente costuma ter analista de teste é projetista de teste a testadores por exemplo e esses níveis
de teste acaba tendo uma relação muito grande com as fases de desenvolvimento justamente aquela fase de requisitos que eu acho que a gente já tratou um projeto de alto nível um projeto de baixo nível detalhado até chegar na implementação então esse teste de unidade que eu comentei ele é um teste muito ligado ao projeto detalhado que é o projeto que detalha cada uma das classes depois esse teste de integração o teste de componentes é um proteste mais ligado a um projeto mais alto nível que já está ligado à arquitetura que define os componentes por fim
o teste de sistema ele já está ligado aos requisitos porque é quando você está pensando no teste como um todo no sistema como um todo não é desculpa aqui no sistema como um todo pensando na integração do sistema com os usuários que aí na verdade você está pensando nos requisitos do sistema como um todo e isso é o que ele chama de modelo em ver porque essa figura ela forma um ver né em que você tem o o desenvolvimento de um lado eo teste do outro bom por fim a gente tem as técnicas de teste
que a gente vai explorar um pouco mais na próxima aula mas o teste técnicas de teste a a gente costuma dizer que existe teste caixa preta e teste caixa branca com a diferença básica entre elas é quando você vai pensar em projetar os testes você pode é na hora que você vai por exemplo que eu tava comentando a eu vou somar dois números a e b e eu vou pensar em quais números 5 e 3 - 3 e 80 e três e meio então eu tenho que tentar pegar exemplos de de números que vão me
ajudar mais a pegar os defeitos que existem no software em vez de pegar 3 e 4 4 e 5 8 e 10 que são números muito parecidos eu vou tentar pegar positivo com o negativo velho funcionário então mas como é que eu vou ter essas idéias como é que eu vou é planejar isso sistematizar e isso é o que a gente chama de técnicas de teste e aí algumas técnicas são de caixa-preta outras de caixa branca as de caixa preta são aquelas que eu não em vejo a estrutura interna do software eu não vejo que
tem dentro de cada classe ok eu não olha o código eu não olhe o que tem aqui dentro ou não está nessa vídeo aula anterior eu não olho o que está dentro de cada classe o código pra me dá essas ideias eu olho apenas o que está nos requisitos do software o que está aqui dentro da implementação para mim é uma caixa preta por isso que eu chamo de técnicas de caixa-preta caixa branca é o contrário eu olho o que está aqui dentro para ter as idéias então pra mim é uma caixa branca uma caixa
transparente eu consigo ver o que está aqui dentro ok é existem várias técnicas isso aqui é só um nome geral que a gente dá pra essas técnicas então por exemplo em termos de caixa preta uma idéias e óleo uma especificação e eu sei que é um determinado software é importa alguma coisa para ele tomar uma decisão ele vai tomar uma decisão dependendo se uma determinada entrada é menor do que 4 é maior do que 10 ou está entre 4 e 10 então o que vocês acham que eu vou escolher por exemplo 1 2 3 4
5 6 7 8 9 10 11 12 13 14 ou 15 números eu vou escolher tanto faz ou escolher um ou dois porque por provavelmente eu vou ter alguns algumas condições menor ou igual ao que filma um pegar o problema 2 também pega o problema então a idéia eu pegar um exemplar só de cada classe de equivalência partição de equivalência então aqui é uma participação de equivalência aqui é outra e aqui é outra então 12 13 14 15 16 17 basta pegar um tá aqui por exemplo que as partições são muito maiores menor que 10
mil entre 10.000 e 99.999 maior que 99.999 eu venho aqui pega por exemplo 50 mil aqui eu pego 70 mil a que ele está dando um exemplo dos 50 mil é e eu também vou querer pegar os valores limites então por exemplo aqui o 3 eo 4 o 10 e 11 na verdade é que lhe deu o exemplo do set já então eu estruturo eu defino sistematizado para pegar os exemplos que mais vão me dar sugestões isso é o que é chamado de repartições de equivalência então eu partisse onu o meu espaço de entrada em
classes de equivalência que basta pegar um de cada classe pra poder é aumentar a probabilidade em vez de pegar vários de uma só eu pego e não pegar nenhuma da outra eu pego uma de cada classe ok e então e foi só um é um exemplo de uma técnica de teste de caixa-preta existem várias inúmeras técnicas de teste caixa preta e caixa branca a próxima aula a gente trata um pouquinho mais sobre esse tipo de técnica obrigado [Música] [Música] [Música] [Música]
Related Videos
Engenharia de Software - Aula 20 - Níveis de teste e Desenvolvimento dirigido a testes
14:50
Engenharia de Software - Aula 20 - Níveis ...
UNIVESP
13,309 views
Introdução e Motivação (Aula 01, parte 3)
23:38
Introdução e Motivação (Aula 01, parte 3)
Canal USP
27,076 views
[IWACO24] Visualizing and Explaining Rust's Ownership Model
56:23
[IWACO24] Visualizing and Explaining Rust'...
ACM SIGPLAN
9 views
Engenharia de Software - Aula 01 - Modelos de processo de software e atividades de software
22:42
Engenharia de Software - Aula 01 - Modelos...
UNIVESP
304,981 views
Engenharia de Software - Aula 18 - Visão geral de teste de software
20:06
Engenharia de Software - Aula 18 - Visão g...
UNIVESP
31,254 views
Engenharia de Software - Aula 08 - Validação e gerenciamento de requisitos
20:16
Engenharia de Software - Aula 08 - Validaç...
UNIVESP
30,514 views
Signalgate: Trump Tries To Dodge Explosive National Security Scandal | All Of Them Should Be Fired
11:38
Signalgate: Trump Tries To Dodge Explosive...
The Late Show with Stephen Colbert
1,823,908 views
Putin’s dreams to rebuild Soviet Union crushed | Sean Bell
29:38
Putin’s dreams to rebuild Soviet Union cru...
Times Radio
106,441 views
'Why do they hate Europe?' | James O'Brien on LBC
15:08
'Why do they hate Europe?' | James O'Brien...
LBC
135,088 views
Métricas de Teste de Software - o que é e como usar
15:09
Métricas de Teste de Software - o que é e ...
pessonizando
8,245 views
4 Hours Chopin for Studying, Concentration & Relaxation
4:00:37
4 Hours Chopin for Studying, Concentration...
HALIDONMUSIC
18,322,023 views
EMERGENCY DEBATE: They Lied About The Economy Recovering! Is A Financial Apocalypse Coming?
2:26:15
EMERGENCY DEBATE: They Lied About The Econ...
The Diary Of A CEO
2,693,018 views
You are absolutely fluent in English if you can understand these
15:10
You are absolutely fluent in English if yo...
British Education
1,754,656 views
Former 33rd Degree Mason Reveals the Darkest Secrets of Freemasonry
1:16:00
Former 33rd Degree Mason Reveals the Darke...
Almost False
701,662 views
Descomplicando Testes Unitários! (Guia Rápido Para Iniciantes Na Programação)
12:55
Descomplicando Testes Unitários! (Guia Ráp...
Attekita Dev
45,453 views
Work Music for Deep Focus & Maximum Productivity
2:53:12
Work Music for Deep Focus & Maximum Produc...
Chill Music Lab
278,375 views
ROWAN ATKINSON INTERVIEW ABSOLUTELY UNMISSABLE 😃 😄 😁  #foryou #talent #genius  #tv #movie #youtube
15:25
ROWAN ATKINSON INTERVIEW ABSOLUTELY UNMISS...
THE SCOTTIE McCLUE TALK SHOW
727,543 views
Thinking Like an Architect - Gregor Hohpe - NDC London 2025
1:02:15
Thinking Like an Architect - Gregor Hohpe ...
NDC Conferences
17,672 views
A Sudoku With Only 4 Given Digits?!
25:11
A Sudoku With Only 4 Given Digits?!
Cracking The Cryptic
9,414,920 views
Introdução e Motivação (Aula 01, parte 1)
25:42
Introdução e Motivação (Aula 01, parte 1)
Canal USP
119,628 views
Engenharia de Software - Aula 04 - Programação extrema e escalamento de métodos ágeis
22:20
Engenharia de Software - Aula 04 - Program...
UNIVESP
50,602 views
Copyright © 2025. Made with ♥ in London by YTScribe.com