Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 9 – Teste de software: Sistema em produção Introdução A partir deste texto introdutório, você será capaz de entender melhor os conceitos estudados nesta aula, sendo capaz de relacionar o conteúdo que será aprendido ao contexto em que está inserido. Nesta aula iremos estudar 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 possam causar danos e prejuízos à ela. Iremos aprender também sobre a importância da medida de confiabilidade e da disponibilidade de um software. Veremos o conceito de confiabilidade, fazendo uma comparação ao conceito de disponibilidade. Estudaremos a medida de confiabilidade de software. Confiabilidade Disponibilidade Tipos de manutençã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. Diferentes causas geram manutenções de tipos diferentes em um software em produção, e podem ser classificadas em: Irá identificar e corrigir defeitos (erros latentes). Irá adaptar o software a novas tecnologias (TI/SI), metodologias, modelos de gestão, legislação. Irá incluir novas funções (TI/SI) no software em produção, como: atender pedidos do usuário para modificar funções existentes e efetuar melhoramentos gerais. Irá melhorar a manutenibilidade ou a confiabilidade futura. Teste em manutenção de software O teste de manutenção (Sylabbus,2007) é iniciado por: Como já estudamos, essas 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. Além de testar o que foi alterado, o teste de manutenção inclui também um teste de regressão massivo para as partes do sistema que não foram testadas. Teste de Regressão O teste de regressão é um teste seletivo, de um software que foi modificado ou já passou por iterações anteriores. Tem como propósito garantir que as falhas tenham sido reparadas e que as operações que funcionavam anteriormente não apresentem falhas após os reparos, ou seja, que as novas características adicionadas não tenham criado problemas ou incompatibilidades em relação as versões anteriores ou com outros sistemas. O objetivo desse tipo de teste é verificar se as alterações realizadas geraram alguma inconsistência no aplicativo ou em outros sistemas. Nesse caso, aplicam-se as mesmas técnicas de testes já utilizados em testes, anteriormente, e que são executados, progressivamente, para verificar se alguma falha foi introduzida após as mudanças. 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 em todos ou alguns tipos de testes. A determinação de como um sistema pode ser afetado por mudanças é chamada de análise de impacto e pode ser usada para ajudar a decidir quantos testes de regressão serão realizados. Atenção! Os testes de manutenção podem se tornar uma tarefa complicada, se as especificações do software estiverem desatualizadas ou incompletas Dependendo do tipo de manutenção podemos ter os seguintes tipos de teste: 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. Nesse caso, é indispensável a aplicação dos testes de validação de forma a 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. 09TS_doc01.pdf Confiabilidade e disponibilidade de software Com o constante desenvolvimento da tecnologia, 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 conta disso, o software constitui a parte mais dispendiosa para a solução de um problema que envolve um computador. 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. Mas o que é falha? Vamos relembrar o que são requisitos de software? 09TS_doc02.pdf ApresentandoumaTaxonomiadeRequisitos.pdf 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 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: Disponibilidade A disponibilidade de um software 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. Disponibilidade de software é a probabilidade de um sistema, em determinado instante, ser operacional e fornecer os serviços requeridos. Se um serviço especificado não for prestado, o sistema não estará se comportando de acordo com sua especificação A disponibilidade não depende do sistema em si, mas do tempo necessário para reparar os defeitos que tornam o sistema indisponível. Em termos estatísticos, a confiabilidade de software é definida como: “...a probabilidade de operação livre de falhas de um programa de computador num ambiente específico durante determinado tempo” (Musa et al, 1987, in Pressman (1995).
Compartilhar