Engenharia de Software - Teste de desempenho

4.54k views2342 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 falar agora sobre teste de desempenho teste de desempenho é um dos tipos de teste de software que podem e devem ser realizados durante o processo de desenvolvimento de software a algumas aulas é eu falei para vocês sobre estratégias de teste de Foster em que nós temos que pensar nos diferentes tipos de teste né e nas aulas seguintes nós falamos sobre duas técnicas de teste o teste funcionar o teste estrutural pensando no teste da funcionalidade é
um dos tipos de teste agora nós vamos falar sobre outros dois tipos de teste que é o teste de desempenho nessa aula e o teste de segurança na outra aula na próxima aula então a ideia que não é saber se o software está fazendo a coisa certa em termos de resultados se ele está dando o lado correto mas sim se ele está fazendo com um desempenho adequado e depois na próxima aula se está fazendo com a segurança adequada bom mas é qual a ideia então especificamente um teste de desempenho é quando eu vou testar o
software em tempo de execução dentro é de um sistema integrado para validar se ele faz se o desempenho dele em termos de carga de tempo de estresse de volume se eles estão adequados ou não geralmente quando a gente pensa em desempenho a gente pensa no tempo mas pode ser também se o desempenho em termos de uso de recursos está adequado ou não então ele pode estar dando o resultado correto mais usando muito recurso muito processamento demorando muito para responder e isso as partes factorio considerando os requisitos é como ele precisa de um sistema integrado ele
é realizado principalmente durante o teste de sistema então lá naquela espiral de três aulas antes e que nós mostramos o teste de unidade depois de integração depois validação e depois sistema nós estamos no último nível em geral porque eu preciso do sistema como um todo para saber se o desempenho é bom ou não embora ele possa ser iniciado sim desde um teste de unidade algumas unidades são tão críticas é para o desempenho do sistema quando o integrado no sistema que o teste pode começar ali mas não se faz um teste de desempenho para toda a
unidade apenas ser aquelas que por algum motivo são críticas do ponto de vista da unidade e como ele é mais voltado então para o sistema para o teste de sistema ele é a gente usa teste técnicas de teste de caixa-preta né ou seja os requisitos de desempenho que estão lá como requisitos não-funcionais na especificação de requisitos a vó e aí então eu o teste de desempenho ele vai focar na identificação e posterior eliminação de gargalos que podem provocar alguma lentidão ou travamento é da aplicação E para isso é isso quando que ele normalmente acontece né
normalmente em Sistemas de tempo real que são aqueles sistemas por exemplo no sistema do metrô de trem que tem que responder muito rapidamente que se der uma falha alguma catástrofe pode acontecer então eu preciso fazer um bom teste de desempenho ali para garantir que ele está respondendo tudo certo sistemas embutidos que são aqueles softwares que ficam dentro de máquinas que a gente às vezes nem sabe que tem um software ali dentro né Por exemplo dentro do microondas ali tem um sistema embutido dentro de um carro em um veículo tem os o sido um software embutido
e eles também tem que responder com um Bom desempenho a aplicativos móveis né hoje em dia softwares que estão no celular também precisam ter um bom desempenho novamente Não só em relação ao tempo para para mim digito Mas a forma quem usa os recursos do celular o celular tem pouca memória tem pouco discutem processador não é tão bom comparando com um supercomputador então ele tem que ter um bom desempenho e também softwares web por quê Porque tem muita conversa usando a internet a rede E aí acaba sendo um gargalo a comunicação na rede é e
quais são os problemas alvo que normalmente levam a ter apresentar ser considerados defeitos né O que é um defeito é que se procura a quando se faz teste de desempenho é por exemplo os recursos lá do lado do servidor pensando numa arquitetura cliente-servidor uma largura de banda inadequada quando a gente está pensando numa comunicação em rede recursos de bancos de dados e na adequados você tem um banco de dados que não está atendendo adequadamente o que o que o aplicação precisa é recursos deficientes do sistema operacional sistema operacional Pode não estar atendendo adequadamente o sistema
ou aplicação o aplicativo mas também o próprio software pode estar mal projetado própria aplicação né veja que por enquanto a gente estava só botando defeito dos outros eu tenho um aplicativo aqui que pede algo de um servidor o servidor tá com problema a rede está com problema o banco de dados está com problema o s ó tá com problema não o seu próprio só você pode estar com problema o seu próprio só porque pode não fazer as coisas direito a ponto de não ter um bom desempenho é e qualquer outro problema de hardware a partir
de alguma forma causa alguma degradação no desempenho na relação cliente-servidor Então a gente vai procurar fazer vai projetar casas de teste que Execute o software do sistema de alguma forma a tentar encontrar problemas desse tipo de natureza certo é então a basicamente Nós queremos fazer duas coisas quando nós estamos fazendo um teste de desempenho primeiro é entender como o sistema que eu estou colocando um teste seja no celular seja no computador é como esse sistema reage quando uma carga quando a carga aumenta o que significa essa carga o número de usuários o número de transações
o volume Geral de dados então de alguma forma eu vou aumentar uma carga a carga dele e como é que eu vou ver vou observar Como ele como como ele reage lá e além disso eu vou reunir métricas o poder conduzir os desenvolvedores a possíveis modificações do projeto para melhorar o desempenho muitas vezes o problema está no projeto lembra-la da aula de projeto de arquitetura como é que eu organizo os componentes do software a fim de ter um bom desempenho então muitas vezes o problema não é nem decodificação mas de organização dos componentes Oi e
aí a nós podemos ter diferentes métricas quando a gente está os fazer um teste de desempenho por exemplo se eu estou avaliando a capacidade de resposta eu posso ter uma métrica quem tempo em termos de tempo de resposta ou de espera Ah demorou tantos minutos demorou tanto segundos ou seja uma métrica de tempo ou de processamento demorou tanto os minutos para processar aquele arquivo Demorou tantos minutos para processar aquelas transações então eu cliquei e demorou tanto segundo ficar me dá a resposta ou eu coloquei para processar Demorou tantos minutos para processar isso são métricas de
capacidade de resposta mas também posso ter métricas relacionadas ao uso do recurso de recursos Como está o uso do processador Como está o uso da rede o uso da memória Então esse sistema usa tantos por cento da memória ou usa tantos bytes da memória Esse é o uso da bateria enfim é são metas relacionadas ao uso e não ao tempo de processamento ambos tanto de capacidade de resposta quanto de uso de recursos estão relacionados ao teste de desempenho e aí quando eu estou fazendo um teste de desempenho existe então algumas perguntas que que eu quero
responder a essas perguntas é que vão Me direcionar na elaboração no projeto dos casos de teste por exemplo né uma primeira pergunta o tempo de resposta do Servidor ele degrada a tal. Em que se torna notável E inaceitável então eu preciso fazer casas de teste que vão forçar o servidor para saber quando que ele vai se degradar a ponto de perceber se tornar perceptível e na aceitável lembra da quando eu estava falando em termos de defeito de código que os defeitos estão lá a questão é eu vou o jogo não porque eu nunca vou nem
não vou conseguir provar que o soft Estado Livre de descer aqui é meio é similar vai chegar um ponto em que o tempo de resposta do Servidor se torna inaceitável a questão é eu vou é conseguir colocar tanta carga a ponto disso acontecer ou em algum momento eu vou me dar por satisfeito não eu já coloquei carga suficiente e ainda o servidor está respondendo bem mais carga do que isso nunca vai acontecer mesmo para não precisa seguir adiante agora se eu insisti uma hora vai acontecer a questão é seu precisa investir ou não é enfim
a segunda pergunta em que ponto esse desempenho se torna inaceitável é o terceira pergunta Quais componentes do sistema são responsáveis pela degradação de desempenho uma vez que eu entendi quando a degradação ocorre a outra pergunta é oque ocorre nesse ponto com essa cara Ah mas por que ela ocorre quais os componentes estão contribuindo para essa degradação Qual o tempo médio de resposta para usuários sobre uma variedade condições de carga uma outra pergunta um pouco similar anterior as anteriores né é uma vez que eu coloco um tanto de carga ou um outro tanto de carga ou
um tanto de carga ainda maior em diferentes condições de carga o que muda para o usuário São perguntas que eu posso querer responder Seguindo aqui com outras perguntas a degradação do desempenho tem um impacto sobre a segurança do sistema bom agora já estou já estou ligando com o próximo teste processo de segurança Mas as coisas são inter-relacionadas talvez eu tenho um problema de segurança porque eu estou forçando demais em termos de carga do sistema Será que isso acontece nesse caso é eu estou fazendo um teste de desempenho aumentando a carga e talvez isso atrapalhe na
segurança e a confiabilidade ou precisão do aplicativo é afetada quando a carga no sistema aumenta Será que o resultado passa a ser errado é se eu aumentar muita carga né então a raiz quadrada que tava sempre dando o resultado correto passa a dar um resultado errado porque eu estou sobrecarregando o sistema é sete o que acontece quando são aplicadas as cargas maiores do que a capacidade máxima do Servidor servidor ele em geral ele vem com uma especificação ele aguenta tanto e se eu tentar forçar mais do que se tanto o que acontece e por Sim
eu estava Pergunta a degradação de desempenho tem Impacto sobre os lucros da empresa é uma outra pergunta mas isso vai estar associado de indiretamente aos requisitos não-funcionais do software né vai haver lá algum tipo de requisito dizendo o que você tem que satisfazer do ponto de vista de em geral isso pode estar associado ao que a empresa precisa para não impactar em seus lucros bom é em termos de benefício a aliás em termos de tipos específicos de testes de desempenho eles em dois testes específicos né que é o teste de carga Então quando você fala
aí estou fazendo um teste de desempenho teste de Vintém o nome genérico talvez você esteja fazendo um teste de carga que é quando você examina cargas reais em uma variedade de níveis e combinações Quando você põe um tanto de para processar põe o tanto ainda maior para processar e o teste de esforço ou estresse que você forte o aumento de carga até o ponto de ruptura para determinar com que capacidade o aumento do sistema consegue Ligar lidar então teste de carga pois um tanto vi que acontece pois outro tanto ver o que acontece examinem dois
cenários diferentes o teste de estresse não e Vai forçar até ele capotar e aí você vê bom ele aguentou até aqui tá então tem uma uma diferença aí pode ser terno e mais existe então se você falar que você tá fazendo um teste de carga você está testando em diferentes situações mas você não espera que ele capote agora se você fala estou fazendo um teste de stress você realmente está estressando sistema você quer aquele capote e você quer saber quando que isso vai acontecer e a bom e quando você pode Que tipo de ações né
você faz para colocar o sistema nessas condições extremas para fazer um teste de estresse por exemplo executar vários só feliz ao mesmo tempo infectar o sistema com vírus obrigar o sistema processar grandes quantidades de transações armazenar volumes excessivamente grandes de dados no dispositivo Às vezes a gente acaba fazendo isso nosso pobre computadorzinho né sempre achar que tá fazer um teste de frésia e às vezes ele capota né mas enfim é você tentar fazer várias coisas ao mesmo tempo forçando cada vez mais abre mais abre mais abre mais e sepulta mais processa Mais é claro que
de uma forma sistemática né porque depois a hora que ele capotar você quer saber o quanto ele aguentou não é uma forma aleatória a Em algum momento ele não aguentou mais tá do que adianta se você não souber o que exatamente fez Qual é a carga exatamente que ele aguentou aquele sistema é isso então uma visão geral sobre teste de desempenho para ajudar vocês no entendimento desse tipo de técnico de teste específico e as referências para essa aula foram o livro de engenharia de software uma abordagem profissional dos autores preze Max de 2021 Esse é
uma edição mais nova do que ele estava vendo as aulas anteriores na edição E também o livro é organizado pelos autores delamar Maldonado Higino de 2016 segunda edição nesse caso Ok é isso então e obrigado a [Música] E aí [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com