Buscar

Aula 09

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
TESTES DE SOFTWARE – AULA 9
Prof. Ulisses Sperle Graça
Rio de Janeiro, outubro de 2011
TESTE DE SOFTWARE 
EM SISTEMA EM PRODUÇÃO
*
1. Compreender técnicas e estratégias de teste na manutenção do sistema;
2. Compreender técnicas e estratégias de teste aplicados em sistemas em regime de produção;
4. Avaliar o grau de confiabilidade do sistema em produção;
5. Avaliar o índice de disponibilidade do sistema em produção;
*
OBJETIVOS DESTA AULA
*
 Estudaremos os testes de manutenção (corretiva, perfectiva, adaptativa e preventiva) que um sistema em produção poderá sofrer. É importante ressaltar que estes tipos de testes de software aplicados na manutenção de sistemas em produção demandam cuidados adicionais, notadamente quanto à corretitude e ao tempo reduzido para realizar os testes, depurar os erros e validar os resultados, uma vez que os sistemas são ativos da empresa e suas interrupções podem causar danos e prejuízos à empresa.
*
INTRODUÇÃO
*
Estudaremos também sobre a importância da medida de confiabilidade e da disponibilidade de um software.
Veremos que o conceito de confiabilidade se baseia na execução do sistema em determinada unidade de tempo sem falhas. Enquanto que o conceito de disponibilidade se baseia na oferta do software em determinada unidade de tempo, considerando-se, proporcionalmente, o tempo útil de uso e o tempo de reparo de falhas.
*
INTRODUÇÃO
*
*
INTRODUÇÃO
*
A manutenção de software existente pode ser responsável por mais de 70% de todo o esforço despendido por um setor de desenvolvimento de sistemas.
A porcentagem pode aumentar a medida que mais software é produzido ou de acordo com o contexto organizacional.
*
INTRODUÇÃO
*
A natureza intrínseca da mudança é subjacente a todo o trabalho de software. A mudança é inevitável quando se constroem sistemas baseados em computador, já que os processos empresariais mudam e se renovam cada vez mais rápido levando à um ciclo de vida dos produtos cada vez menor.
Outro fator importante: algumas estatísticas apontam que para cada três vezes que fazemos uma manutenção, em uma delas adicionamos um erro por falha nossa.
*
INTRODUÇÃO
*
Uma das metas principais da Engenharia de Software é a de facilitar a acomodação das mudanças, reduzir a quantidade de esforço despendido em manutenção e aumentar a qualidade das tarefas associadas à Manutenção de Software.
*
INTRODUÇÃO
*
Independentemente do domínio da aplicação, tamanho ou complexidade, o software continuará a evoluir com o tempo.
Após seu desenvolvimento um sistema pode ficar operacional, ou seja, em produção por anos ou até mesmo décadas. Porém durante este período o próprio sistema ou seu ambiente operacional podem ser corrigidos, modificados ou completados.
*
TIPOS DE MANUTENÇÃO
*
Diferentes causas geram manutenções em um software em produção, e podem ser classificadas em:
Manutenção Corretiva;
Manutenção Adaptativa;
Manutenção Perfectiva;
Manutenção Preventiva.
*
TIPOS DE MANUTENÇÃO
*
Manutenção Corretiva:
A manutenção Corretiva irá identificar e corrigir defeitos (erros latentes).
inclui o diagnóstico e a correção de um ou mais erros não descobertos na fase de teste do software;
uma grande quantidade desses erros indica que o software não foi testado adequadamente;
esse tipo de manutenção não deveria ocorrer.
*
TIPOS DE MANUTENÇÃO
*
Manutenção Adaptativa:
Necessária para ajustar o sistema/programa às novas tecnologias, metodologias, modelos de gestão, legislação e etc.
hardware (processadores, periféricos e etc.)
software (linguagens, sistemas operacionais etc.)
*
TIPOS DE MANUTENÇÃO
*
Manutenção Perfectiva – irá incluir novas funções (ampliações) no software em produção, como:
Para atender a solicitações do usuário quanto a melhorias, novas funções, mudança de contexto organizacional e etc.
É o tipo responsável que mais requer manutenção.
*
TIPOS DE MANUTENÇÃO
*
Manutenção Preventiva:
Modificações para melhorar a confiabilidade, a manutenibi-lidade futura ou para futuras ampliações.
*
TIPOS DE MANUTENÇÃO
*
Para entender as características da manutenção de um software devemos considerar:
	- Manutenção Estruturada versus Não Estruturada;
	- Custos associados à Manutenção;
	- Problemas associados à manutenção;
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
*
CARACTERÍSTICAS DA MANUTENÇÃO
Pedido de
Manutenção
Configuração
Avaliar o projeto
Modificar o projeto
Planejar a 
Abordagem
Recodificar
Revisão
Teste e Lançamento
Avaliar o código
Recodificar
Revisão
?
Manutenção Estruturada
Manutenção Não Estruturada
*
Manutenção Não Estruturada
 Se o único elemento disponível do software for o código-fonte, a atividade inicia-se por uma penosa avaliação do código;
 Frequentemente a documentação interna é ruim;
 Diversas características do software, como por exemplo restrições de projeto, são difíceis de ser verificadas e acabam mal interpretadas;
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Manutenção Não Estruturada (cont.)
 As mudanças feitas são difíceis de ser avaliadas.
 Testes de Regressão são impossíveis de ser realizados por não existir nenhum registro de teste.
 Esforço perdido e frustração
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Manutenção Estruturada
 Ocorre como resultado de aplicação anterior de uma metodologia de engenharia de software, iniciando-se por uma avaliação do projeto;
 O impacto das modificações ou correções exigidas é avaliada e uma abordagem é planejada;
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Manutenção Estruturada (cont.)
 Usando-se técnicas adequadas, o projeto é modificado e revisado. Um novo código-fonte pode ser desenvolvido, testes de regressão são levados a efeito.
 Embora a existência de uma metodologia não garanta uma manutenção isenta de problemas, a quantidade de esforço é reduzida e a qualidade da mudança ou correção é aumentada.
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Custos da manutenção:
O custo da manutenção tem aumentado nos últimos anos em proporção aos outros gastos do orçamento do software;
Custos intangíveis da manutenção:
 Insatisfação do cliente quanto à demora no atendimento;
 Redução da qualidade devido à introdução de novos erros;
 Descontentamento das pessoas destinadas à tarefa.
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Custos intangíveis da manutenção: (cont.)
 Oportunidade de desenvolvimento que é postergada ou perdida porque os recursos disponíveis estão na tarefa de manutenção;
 Drástica diminuição de produtividade se comparada à construção de um software;
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Problemas associados à manutenção: 
A maioria dos problemas remete-se a deficiências na maneira segundo o qual o software foi planejado e desenvolvido.
A falta de controle e disciplina nas atividades de desenvolvimento da engenharia de software quase sempre se traduz em problemas durante a manutenção.
 Vamos pagar muito mais agora o que não quisemos gastar anteriormente.
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Problemas associados à manutenção: 
 A documentação do sistema não existe ou é muito ruim;
 As mudanças e correções realizadas no sistema não estão adequadamente documentadas;
 Frequentemente é difícil ou impossível rastrear o processo através do qual o software foi criado;
 Muitas vezes é difícil entender o programa “de outra pessoa”;
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
Problemas associados à manutenção: (cont.)
 A “outra pessoa”, quase sempre, não está por perto para explicar o programa;
 A maioria dos sistemas não é projetada para sofrer mudanças;
 A manutenção não é vista como um trabalho muito glamouroso. 
*
CARACTERÍSTICAS DA MANUTENÇÃO
*
O teste de manutenção (Sylabbus,2007) é iniciado por:
Modificações no software;
Migrações;
Retiradas de software ou sistemas.
*
TESTE EM MANUTENÇÃO
*
Como vimos, estas modificações
podem ser inclusões de melhorias planejadas, ou seja, uma nova versão do software, podem ser mudanças corretivas e emergenciais, ou ainda mudanças de ambiente, como atualização em sistema operacional ou banco de dados, e correções (“patches”) para expor e encontrar vulnerabilidades do sistema operacional.
*
TESTE EM MANUTENÇÃO
*
Além de testar o que foi alterado, o teste de manutenção pode incluir também um teste de regressão para as partes do sistema que não foram testadas especificamente. 
O escopo do teste de manutenção está relacionado ao risco da mudança, o tamanho do sistema existente e o tamanho da mudança. 
Dependendo da mudança, o teste de manutenção pode ser feito em todos ou apenas em alguns módulos do sistema, e podem ser aplicados todos ou alguns tipos de testes. 
*
TESTE EM MANUTENÇÃO
*
A determinação de como um sistema pode ser afetado por mudanças é chamado de análise de impacto, e pode ser usado para ajudar a decidir quantos testes de regressão serão realizados.
Os testes de manutenção pode se tornar uma tarefa complicada se as especificações do software estiverem desatualizadas ou incompletas.
*
TESTE EM MANUTENÇÃO
*
Dependendo do tipo de manutenção podemos ter os seguintes tipos de teste: 
 
Teste em manutenção corretiva;
Teste em manutenção perfectiva;
Teste em manutenção adaptativa;
Teste em manutenção preventiva.
*
TESTE EM MANUTENÇÃO
*
Teste em manutenção corretiva
Os testes de manutenção corretiva de um software em produção são os mais exigidos uma vez que se trabalha sobre um produto com vícios de construção, o que pode demandar esforço significativo para identificação e correção adequada do erro.
*
TESTE EM MANUTENÇÃO
*
Teste em manutenção corretiva (cont.)
Neste caso é indispensável a aplicação dos testes de validação (seu objetivo é avaliar a conformidade do software com os requisitos e especificações analisadas e revisadas nas etapas iniciais do projeto).
Isto evitará possível propagação ou derivação de erro pela correção realizada e levando em consideração que tudo isso deverá ocorrer em diminuto espaço de tempo.
*
TESTE EM MANUTENÇÃO
*
Teste em manutenção perfectiva
Os testes de manutenção perfectiva se assemelha ao teste na construção do software, pois testa-se novas funções, incluídas pelo usuário, que serão iniciadas no sistema, podendo ser planejada.
*
TESTE EM MANUTENÇÃO
*
Teste em manutenção adaptativa
Os testes de manutenção adaptativa, por validar mudanças impositivas quer legais, quer tecnológicas, mesmo com tempo limitado, são previsíveis, podendo, assim como a perfectiva e a preventiva, serem planejadas, o que facilita a atividade de teste de software.
*
TESTE EM MANUTENÇÃO
*
Teste em manutenção preventiva
Já os testes em manutenção preventiva é o mais previsível, pois busca identificar, antecipadamente, possíveis erros ou falhas  no aplicativo que está sendo usado na empresa. Vale ressaltar que este tipo de teste não é muito usual.
 
*
TESTE EM MANUTENÇÃO
*
Com o constante desenvolvimento da TI, os sistemas computacionais têm sido requisitados em quase todas as áreas da atividade humana.
Essa crescente dependência em relação ao software tem conscientizado os usuários, que cada vez mais exigem softwares confiáveis. 
Por isso o software constitui a parte mais dispendiosa para a solução de um problema que envolve a TI.
*
Confiabilidade e Disponibilidade
*
Consequentemente desenvolver um software com qualida-de tem exigido um enorme esforço na atividade de teste. 
Os problemas de confiabilidade e disponibilidade podem quase sempre ser associados a defeitos de projeto ou de implementação.
Antes de estudarmos sobre a confiabilidade e disponibilidade de um software, precisamos compreender o conceito de falha.
*
Confiabilidade e Disponibilidade
*
Segundo Pressman(2011), falha é a falta de conformidade com os requisitos de software.
Requisitos de software  são sentenças que expressam as necessidades dos clientes e que condicionam a qualidade do software. Podem ser classificados em: 
 
Funcionais: Estão diretamente ligados a funcionalidade do software.
Não Funcionais: Expressam restrições que o software deve atender ou qualidades específicas que o software deve ter.
Inversos: Estabelecem condições que nunca podem ocorrer.
*
Confiabilidade e Disponibilidade
*
Existem diferentes tipos de falhas que podem ser problemáticas ou catastróficas. Enquanto uma determinada falha pode ser corrigida em segundos, outras necessitarão de horas ou até mesmo meses para serem corrigidas. 
É importante considerar também que às vezes a correção de uma falha pode resultar na introdução de outros erros que resultarão em outras falhas.
*
Confiabilidade e Disponibilidade
*
Componentes dos sistemas que estão sujeitos a falhas:
 Hardware: Erros de fabricação;	
		 Final de sua vida útil.
 Software: Especificação, projeto ou implementação;
		 Operadores humanos;
		 Falha ao operar o sistema. 
*
Confiabilidade e Disponibilidade
*
Dimensões da confiança de um software
A confiança de um sistema, segundo Sommerville (2003) , é uma propriedade do sistema que equivale a sua integridade, ou seja, é o grau de confiança dos usuários de que o sistema operará como eles esperam e não “falhará” em uso normal.
Existem quatro dimensões principais de confiança:
*
Confiabilidade e Disponibilidade
*
*
Confiabilidade e Disponibilidade
Fonte: Sommerville, 2003
*
Se baseia na oferta do software em determinada unidade de tempo, considerando-se, proporcionalmente, o tempo útil de uso e o tempo de reparo de falhas.
É a probabilidade de que um programa esteja operando de acordo com os requisitos em determinado ponto do tempo.
 Disponibilidade = MTTF x 100%
 (MTTF + MTTR)
A medida de disponibilidade é bem mais sensível ao MTTR, que é uma medida indireta da capacidade de manutenção do software.
*
Disponibilidade
*
Se um programa deixar de funcionar repetidamente, pouco importa se outros fatores de qualidade de software são aceitáveis. 
Confiabilidade é definida como a probabilidade de operação livre de falhas de um programa de computador num ambiente específico durante determinado tempo.
*
Confiabilidade
*
O conceito de confiabilidade de software se baseia na execução do sistema em determinada unidade de tempo sem falhas.
A confiabilidade do produto de software é influenciada pelo processo de software utilizado para desenvolver o produto.
Um processo orientado no sentido de evitar defeitos poderá desenvolver um sistema confiável.
*
Confiabilidade
*
Quando o software é usado como parte do controle de Ambientes Críticos, as falhas tornam-se muito mais difíceis de serem detectadas, podendo resultar em significativos danos e até perda de vidas.
É uma atividade que se concentra na identificação e avaliação de casualidades em potencial que possam exercer um impacto negativo sobre o software e fazer com que todo o sistema falhe.
*
SEGURANÇA DE SOFTWARE
*
Se as casualidades puderem ser identificadas, é possível especificar características de projeto que as eliminem ou controlem. Um processo de modelagem e análise é levado a efeito. Inicialmente, as casualidades são identificadas e dispostas por categorias, criticidade e risco.
Logo que as casualidades são identificadas e analisadas, os requisitos relacionados à segurança podem ser especificados.
A especificação pode conter uma lista de eventos indesejáveis e as respostas desejadas a esses eventos.
*
SEGURANÇA DE SOFTWARE
*
A proteção de um sistema é uma avaliação do ponto em que o sistema protege a si mesmo de ataques externos.
Erros no desenvolvimento de um sistema podem levar a falhas de proteção.
Sem um nível razoável de proteção, a disponibilidade, a confiabilidade e a segurança do sistema poderão ser comprometidas
se ataques externos provocarem algum dano ao sistema.
*
PROTEÇÃO
*
Um meio simples de se medir a confiabilidade de um software é observar o tempo para a ocorrência da próxima falha.
 
Métricas que podem ser utilizadas para medir a confiabilidade:
*
Medida de Confiabilidade
Tempo médio de ocorrência de falhas
Tempo médio até a ocorrência de falhas
Tempo médio de reparo 
Métrica do número de falhas do sistema
Taxa de ocorrência de falha.
Probabilidade de falha sob demanda 
Métricas de tempo ou
número de transações
*
O tempo médio entre falhas, MTBF (mean time between failure), representa o tempo esperado para a ocorrência da próxima falha, ou seja, é o tempo durante o qual o software funciona sem falhas (Delamare&Maldonado&Jino, 2007). 
É calculado considerando-se a soma de duas medidas: 
MTTF (mean time to failure) – tempo médio de uso até a falha do software e
 MTTR (mean time to repair) – tempo médio de reparo da falha  no software. 
*
Medida de Confiabilidade
*
MTBF = MTTF + MTTR
MTBF – tempo médio de ocorrência de falhas (mean time between failure)
MTTF – tempo médio até a ocorrência de falha (mean time to failure)
MTTR – tempo médio de reparo (mean time to repair)
Portanto, quanto maior for o MTBF e o MTTF em relação ao MTTR mais tempo o sistema ficou operativo. 
*
Medida de Confiabilidade
*
Tempo gasto para reparar ou reiniciar o sistema
A medida de disponibilidade de software considera as medidas MTTF e MTTR, sendo mais sensível ao MTTR ou seja, tempo de correção da falha, pois a disponibilidade é obtida através de: 
 Disponibilidade = MTTF x 100%
 (MTTF + MTTR)
 Quanto mais próximo de 1 for a disponibilidade mais produtivo foi o software no período.
*
Medida de Disponibilidade
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais