Teste de Fiabilidade e Disponibilidade de Sistemas Baseados em Software António Mota – [email protected] José Duarte – [email protected] FEUP 2006 Índice Conceitos Quantificações Modelos e Métodos Estatísticos Automação de Testes Ferramentas Conceitos Fiabilidade: capacidade de um sistema de software desempenhar as suas funções sob determinadas condições num determinado período de tempo. Disponibilidade: grau com que um sistema de software é operacional e acessível quando o seu uso é solicitado. Fiabilidade contribui para a disponibilidade Quantificações Escala: de 0 a 1 Unidades: Fiabilidade: tempos de execução do CPU Disponibilidade: tempo convencional Fórmulas: Fiabilidade (MTBF) = MTTF + MTTR Disponibilidade = MTBF / (MTBF + MTTR) Modelos e Métodos Estatísticos Não é possível testar tudo… Fiabilidade e disponibilidade estimadas através de modelos e métodos estatísticos Modelo que estime a utilização operacional esperada e o ambiente operacional do sistema. Exemplos: Perfil Operacional Modelo de Uso Método estatístico que permita analisar os dados de teste e criar um conjunto de conclusões estatisticamente válidas sobre fiabilidade e disponibilidade Modelo de crescimento que permita definir um momento de paragem nos testes Modelos – Perfil Operacional Definições: Caracterização quantitativa do modo de uso do sistema e do ambiente esperado para a sua execução Especificação das classes de entrada e da probabilidade da sua ocorrência Resultado: Amostra do espaço de entrada de acordo com padrões de utilização Probabilidade de ocorrência de cada operação (caso de uso) que o sistema suporte Utilidade: Possibilita a posterior definição de casos de teste estatisticamente correctos a partir da população amostrada É eficiente: identifica as falhas de acordo com o número de vezes que elas ocorrem, diminuindo rapidamente a sua intensidade Modelos – Perfil Operacional Metodologia 1. 2. 3. 4. 5. Desenvolvimento do perfil do cliente Estabelecimento do perfil do utilizador Definição do perfil do modo do sistema Desenvolvimento do perfil funcional Desenvolvimento do perfil operacional NÍVEL DE ABSTRACÇÃO Modelos – Perfil Operacional 1. Desenvolvimento do perfil do cliente O perfil do cliente é o conjunto completo de grupos de clientes e as probabilidades de ocorrência a eles associados A melhor medida da probabilidade associada a um determinado grupo de clientes é a proporção de uso que ele representa Modelos – Perfil Operacional 2. Estabelecimento do perfil do utilizador O perfil do utilizador é o conjunto de grupos de utilizadores e as probabilidades de ocorrência a eles associados Pode-se derivar o perfil do utilizador a partir do perfil do cliente estudando os vários grupos de clientes e identificando os utilizadores que cada um contém Modelos – Perfil Operacional 3. Definição do perfil do modo do sistema O modo do sistema é o conjunto de funções ou operações que, por conveniência, são agrupadas para análise do comportamento da execução O perfil do modo do sistema é o conjunto de modos de sistema e a probabilidade de ocorrência a eles associados Para cada modo do sistema, é necessário desenvolver um modo operacional e, por vezes, funcional Modelos – Perfil Operacional 4. Desenvolvimento do perfil funcional O desenvolvimento do perfil funcional requer que se divida cada modo do sistema em funções necessárias para os suportar O perfil funcional é composto pela lista dessas funções e pela probabilidade associada a cada uma delas Modelos – Perfil Operacional 5. Desenvolvimento do perfil operacional Função ≠ Operação Deve ser compreendida a natureza do espaço de entrada do programa através do desenvolvimento de uma lista detalhada de variáveis de entrada e das probabilidades associadas a cada uma delas Modelos – Modelo de Uso Metodologia 1. 2. Identificação do ambiente, grupos de utilizadores e modos de utilização esperados Criação de um grafo 1. 2. 3. Nós: Estados de utilização Arcos: Estímulos que causem a transição entre estados Atribuição de probabilidades a cada transição. O conjunto de probabilidades das transições define a distribuição de utilização sobre o domínio de entrada Métodos Estatísticos Usam a amostra representada pelo perfil operacional para desenvolver conclusões acerca da população de todos os cenários de uso Concentram os recursos de teste nas partes do sistema que provavelmente serão mais usadas, tornando o sistema mais fiável do ponto de vista do utilizador Modelos de Crescimento Surge em complemento do perfil operacional e dos métodos estatísticos Prevê quando, e se, um determinado nível de fiabilidade poderá ser atingido Oferece uma visão do progresso da qualidade do software ao longo do tempo Tipos de modelo Estático Básico Poisson Automação de Testes A habilidade de uma suite de testes revelar erros diminui à medida que vai sendo usada Criar constantemente novas suites de teste, que continuem a ser estatisticamente válidas… A criação manual de suites de testes não é viável para a maioria dos sistemas reais Automatizar essa criação… Ferramentas - Utilidade Visualização das previsões de fiabilidade através de Diagramas de Blocos de Fiabilidade, análise de Árvore de Falhas, entre outros… Previsão e optimização da perfomance de um sistema quanto à sua disponiblidade através de técnicas de simulação de Monte Carlo, entre outras… Ferramentas - Requisitos Conformidade com as principais metodologias standard Permitir tranferir os dados entre os vários módulos Combinar modelos com o projecto Os seus programas devem permitir customizar a aplicação do utilizador (de forma integrada) Ferramentas - Exemplos HARP - Hybrid Automated Reliability Predictor Isograph Reliability Workbench ITEM ToolKit Relex Reliability Studio Reliability & Maintenance Analyst Referências "Practical Software Testing", Ilene Burnstein, Springer-Verlag, 2003 “Automated Testing with an Operational Profile”, Robert Binder, Software Reliability Engineering, 2004, http://www.softwaretechnews.com/stn81/atop.html “A New Reliability and Availability Strategy for Communications Servers in Next Generation Networks”, Motorola, 2005, http://www.motorola.com/mot/doc/5/5854_MotDoc.pdf “How To Measure Software Reliability, And How Not To…”, Littlewood, http://portal.acm.org/citation.cfm?id=803188 “More Reliable, Faster, Cheaper Testing with Software Reliability”, John Musa, http://www.softwaretechnews.com/stn3-2/reliability.html