unidade 5 – teste de software em sistema em...
TRANSCRIPT
TESTES DE SOFTWARE
Luiz Leão – [email protected] http://www.luizleao.com
Unidade 5 – Teste de Software em Sistema em Produção
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Conteúdo Programático• 5.1 - Teste de software nos diversos tipos de Manutenção • 5.2 - Confiabilidade • 5.3 - Disponibilidade
Teste de software nos diversos tipos de Manutenção
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Introdução
Fonte: Pressman, 2006
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• Manutenção Preventiva:
• Modificações para melhorar a confiabilidade, a manutenibilidade futura ou para futuras ampliações.
Tipos de Manutenção
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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;
Tipos de Manutenção
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Características da ManutençãoPedido 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• É uma técnica do teste de software que consiste na aplicação de versões mais recente do software, para garantir que não surgiram novos defeitos em componentes já analisados.
• Se, ao juntar o novo componente ou as suas alterações com os componentes restantes do sistema surgirem novos defeitos em componentes inalterados, então considera-se que o sistema regrediu.
Teste de Regressão
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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;
Características da Manutenção
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE 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.
✓ 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Teste em Manutenção• O teste de manutenção (Sylabbus,2007) é iniciado por:
➢ Modificações no software; ➢ Migrações; ➢ Retiradas de software ou sistemas.
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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.
• 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 Corretiva
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• Também conhecida como manutenção evolutiva, 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 Perfectiva
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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 Adaptativa
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• É 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 Preventiva
Confiabilidade e Disponibilidade
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Confiabilidade e Disponibilidade
• 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 cara para a solução de um problema que envolve a TI.
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• Consequentemente desenvolver um software com qualidade 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. Segundo Pressman(2011): • É a falta de conformidade com os requisitos de software.
Confiabilidade e Disponibilidade
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• Dimensões da confiança de um software:
• Segundo Sommerville (2003), confiança de um sistema: • É 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Fonte: Sommerville, 2003
Confiabilidade e Disponibilidade
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
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.
• É a probabilidade de que um programa esteja operando de acordo com os requisitos em determinado ponto do tempo.
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Confiabilidade
• 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.
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Segurança de Software
• 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.
Unidade 5 – Teste de Software em Sistema em Produção
TESTES 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Proteção
• 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.
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
Medida de Confiabilidade
• 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:
•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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
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
Unidade 5 – Teste de Software em Sistema em Produção
TESTES DE SOFTWARE
• 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 disponível o software esteve no período, logo, mais será produtivo.
Medida de Confiabilidade