Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao Desenvolvimento de Sistemas Janynne L. S. Gomes AULA 3 FUNDAMENTOS DA QUALIDADE DE SOFTWARE 2 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 3 Agenda • Conceito • Garantia da qualidade • Qualificando um erro ● Defeito ● Falha ● Erro • Teste de software ● Objetivos ● Estratégias de teste ● Técnicas de teste 3 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 4 Conceito “Qualidade é um conceito subjetivo que está relacionado diretamente às percepções de cada indivíduo. Diversos fatores como cultura, modelos mentais, tipo de produto ou serviço prestado, necessidades e expectativas influenciam diretamente nesta definição”. Fonte: http://pt.wikipedia.org/wiki/Qualidade De acordo com o glossário padrão de terminologia em Engenharia de Software do IEEE 610.12 (1990), qualidade pode ser definida como o grau no qual um sistema, componente, ou processo atende aos requisitos especificados e às necessidades ou expectativas do cliente ou usuário. 4 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 5 Conceito A norma ISO/IEC 9126 (1991) define qualidade como a totalidade de funcionalidades e características de um produto ou serviço que atendem à sua capacidade de satisfazer necessidades específicas ou implícitas. No contexto de desenvolvimento de software, qualidade pode ser entendida como um conjunto de características a serem satisfeitas em um determinado grau, de modo que o produto de software atenda às necessidades explícitas e implícitas de seus usuários e, de acordo com Pressman (2006), é a conformidade com requerimentos e com características implícitas que são esperadas de software profissionalmente desenvolvido. 5 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 6 Conceito Todos nós somos influenciados por produtos de software tanto profissionalmente como em nossa vida pessoal, seja de forma consciente ou não. Os produtos de software possuem um papel muito influente em nossa vida, facilitando a realização de diversas atividades e provendo inúmeros serviços. Para quem trabalha no desenvolvimento destes sistemas, incluindo assim todos os profissionais da área de Engenharia de Software, o maior desafio é criar um produto de software com elevada produtividade, dentro do prazo estabelecido, sem necessitar de mais recursos do que aqueles alocados, assegurando com isso um software de qualidade. 6 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 7 Conceito Segundo Pressman (2006), a garantia da qualidade de software está diretamente relacionada às características de qualidade do processo de desenvolvimento e de seus produtos intermediários, bem como aos esforços de melhoria de processos das organizações. Além disso, as atividades de garantia da qualidade devem estar presentes ao longo de todo o ciclo de vida de desenvolvimento do software, a fim de assegurar que o projeto, o desenvolvimento e a disponibilização de uma aplicação aconteçam de maneira bem sucedida. 7 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 8 Conceito A qualidade não pode ser considerada sinônimo de perfeição, pois se trata de algo factível, relativo, substancialmente dinâmico e evolutivo, adequando-se ao nível dos objetivos a serem atingidos. Portanto, o mais importante é atingir o nível de qualidade desejado pelos usuários e necessário para o bom funcionamento dos produtos desenvolvidos, utilizando o mínimo de recursos possíveis para não impactar nos projetos. 8 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 9 Garantia de qualidade Podemos definir Garantia da Qualidade (Quality Assurance) como o conjunto de atividades de apoio para fornecer confiança de que os processos estão estabelecidos e são continuamente melhorados para produzir produtos que atendam as especificações e que sejam adequados para o uso pretendido. 9 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 10 Avaliação de Produtos de Software A avaliação de produtos de software é definida como uma operação técnica que consiste em elaborar um julgamento de uma ou mais características de um produto de software de acordo com um procedimento definido. De acordo com Weber (2001) o processo de avaliação deve possuir 4 características principais: • Repetível • Reprodutível • Imparcial • Objetivo. 10 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 11 Avaliação de Produtos de Software A ISO - International Organization for Standardization (Organização Internacional de Normalização) é formada por representantes de 91 países, cada um representado por um organismo de normas, testes e certificação. Por exemplo, o ANSI - American National Standards Institute é o representante ISO dos Estados Unidos e no Brasil a ISO é representada pela ABNT - Associação Brasileira de Normas Técnicas. A ABNT é uma organização de normas que apoia o desenvolvimento de normas consensuais e providencia estrutura e mecanismos a fim de que grupos industriais ou de produtos se juntem para estabelecer um consenso e desenvolver diretivas de qualidade. 11 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 12 Avaliação de Produtos de Software Características avaliadas: • Funcionalidade: A capacidade de um software prover funcionalidades que satisfaçam o usuário em suas necessidades declaradas e implícitas, dentro de um determinado contexto de uso. • Confiabilidade: O produto se mantém no nível de desempenho nas condições estabelecidas. • Usabilidade: A capacidade do produto de software ser compreendido, seu funcionamento aprendido, ser operado e ser atraente ao usuário. • Eficiência: O tempo de execução e os recursos envolvidos são compatíveis com o nível de desempenho do software. 12 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 13 Avaliação de Produtos de Software Características avaliadas: • Manutenibilidade: A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou extensões de funcionalidade quanto as correções de defeitos, falhas ou erros. • Portabilidade: A capacidade do sistema ser transferido de um ambiente para outro. Como “ambiente”, devemos considerar todo os fatores de adaptação, tais como diferentes condições de infraestrutura (sistemas operacionais, versões de bancos de dados, etc.), diferentes tipos e recursos de hardware (tal como aproveitar um número maior de processadores ou memória). Além destes, fatores como idioma ou a facilidade para se criar ambientes de testes devem ser considerados como características de portabilidade. 13 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 14 Qualificando um erro • Defeito: Ocorre quando há uma instrução ou comando incorreto. Um veículo, por exemplo, apresenta defeito quando não obedece ao comando do motorista. • Falha: É um comportamento inconsistente. Em um veículo, por exemplo, quando ocorre uma falha, ele continua funcionando de forma precária, mas não para. • Erro: É um desvio da especificação. Em um veículo, por exemplo, é quando ocorre uma montagem indevida de algum componente. 14 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 15 Qualificando um erro 15 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 16 Testes de Software Teste é um conjunto de atividades que podem ser planejadas antecipadamente e conduzidas sistematicamente. Um gabarito de testes de software, que é um conjunto de passos no qual podem-se incluir técnicas de projetos de casos de teste e métodos de teste específicos, deveser definido para o processo de software sendo utilizado no projeto. Fonte: [PRESSMAN, 2010] Objetivos: 1) Demonstrar ao desenvolvedor e ao cliente que o software atende aos requisitos 2) Descobrir falhas ou defeitos no software que apresenta comportamento incorreto, não desejável ou em não conformidade com sua especificação 17 Testes de Software Modelo de um processo de teste 18 Testes de Software As políticas de teste podem ser baseadas na experiência de uso do sistema e podem enfocar o teste das caraterísticas do sistema que esteja operacional: Exemplo: ●Todas as funções do sistema acessada por meio de menus devem ser testadas ●Combinações de funções acessadas por meio dos mesmos menus devem ser testadas ●Todas as funções devem ser testadas com entrada corretas e incorretas no local de entrada do usuário 19 Testes de Software Quem faz? O gerente do projeto, os engenheiros de software e especialistas em testes devem desenvolver uma estratégia de testes, de forma a que o projeto tenha um plano formal de testes. Porque é importante? O teste é a atividade que requer maior esforço de projeto dentro do ciclo de desenvolvimento de software. Se for conduzido ao acaso pode implicar em desperdício de tempo e esforço, além de abrir espaço para a infiltração de erros. Assim, é muito importante que se estabeleça uma estratégia sistemática para o teste de software. 20 Testes de Software Quais são os passos? O teste começa nos componentes do software e vai aumentando seu campo de ação de forma a abarcar todo o projeto. Depois que os componentes são testados eles precisam ser integrados até que todo o sistema seja construído. A partir deste ponto uma série de testes de alto nível é executada para descobrir erros relativos aos requisitos do cliente. À medida que erros forem encontrados, é necessário se fazer um diagnóstico e buscar sua correção, através do processo de depuração do sistema. 21 Estratégias de teste 22 Estratégias de teste Teste de unidade: é também conhecido como teste unitário. Avalia a menor unidade do código. Seu objetivo é verificar falhas de funcionamento em partes pequenas independentes do software. Possibilita uma análise mais profunda e específica de uma função independente do resto do código, facilitando a descoberta de erros nos limites dos módulos. Este teste tem como base estratégica o teste de caixa branca. Neste teste, os casos são projetados para descobrir erros devido a computações errôneas, comparações incorretas ou fluxo de controle impróprio. Exemplos: • Testar a ação de salvar os dados de um cliente • Testar a ação de excluir um cliente da base de dados 23 Estratégias de teste Teste de integração: avalia diferentes componentes que são desenvolvidos separadamente mas trabalham em conjunto. Ao avaliar estes componentes de forma isolada, consegue-se encontrar possíveis falhas no resultado apresentado em consequência do mal funcionamento ou erro de algum dos componentes. Exemplos: • Testar uma tela inteira de cadastro de clientes • Testar um módulo inteiro (Módulo Financeiro, Módulo RH, Módulo Acadêmico) 24 Estratégias de teste Teste de validação: avalia o software em um ambiente específico, considerando os requisitos definidos pelo cliente em uma situação próxima à realidade. Tem como objetivo provar ao cliente que o software atende as solicitações desejadas. Exemplos: • Testar o software em um determinado sistema operacional. • Testar a comunicação do sistema com uma base de dados remota, em um horário de alto tráfego de dados na rede. • Testar vários acessos simultâneos para ver o comportamento do banco de dados. 25 Estratégias de teste Teste de sistema: este teste tenta impor a visão do cliente, dando normalmente uma perspectiva diferente ao testador. Normalmente executa-se em um ambiente que se assemelha ao ideal. Seu objetivo é por o sistema desenvolvido completamente à prova, com todos os elementos adequadamente integrados e realizando suas funções corretamente. Tipos de teste: 1) Teste de Recuperação 2) Teste de Segurança 3) Teste de Estresse 4) Teste de Desempenho 26 Estratégias de teste Teste de Recuperação: este procedimento avalia a recuperação de uma falha dentro de um tempo especificado em caso de falha. Neste teste, podem ocorrem várias falhas forçadas para verificar a recuperação. Exemplos: • Testa o comportamento do sistema com o banco de dados indisponível • Testa o fechamento do programa sem o usuário clicar em salvar os dados • Testa o comportamento do programa caso a energia tenha sido interrompida bruscamente 27 Estratégias de teste Teste de Segurança: neste caso o testador tenta penetrar no sistema provocando ações que prejudiquem alguém. Ele usa formas ilegais ou impróprias simulando condições extremas de violação das informações. Exemplos: • Tenta forçar usuário e senha • Tenta salvar informações de forma errada 28 Estratégias de teste Teste de Estresse: este procedimento cria ambientes extremos para utilização do software. Volumes anormais e frequência irregular têm como objetivo forçar falhas por sobrecarga, verificando as possíveis interrupções e consequências de paradas anormais por estresse. Os dados, então, são avaliados para ver se não forram corrompidos ou perdidos. Exemplos: • Simular 1000 acessos á uma mesma funcionalidade • Clicar várias vezes no botão de salvar os dados do cliente 29 Estratégias de teste Teste de Desempenho: todo sistema desenvolvido tem em sua especificação de requisitos o desempenho adequado de funcionamento e após a integração dos componentes uma avaliação é indispensável para se obter o seu desempenho real. Exemplo: • Depois que adicionou uma tela nova, o sistema ficou lento ou as tela anteriores ficaram lentas? 30 Técnicas de teste 31 Teste de caixa branca O teste Caixa Branca possui critérios baseados em Fluxo de Fluxo de Controle e em Fluxo de DadosControle e em Fluxo de Dados, portanto avalia a parte estrutural do software. Aplicamos esta prática diretamente no código do programa, fazendo teste lógico e comportamental. Analisam-se o fluxo de dados e os códigos, usados ou não. 32 Teste de caixa preta O nome Caixa Preta (Black Box) vem do sentido de que nesse tipo de teste não é necessário saber a estrutura interna, bem como o código ou a tecnologia que foi utilizada. Nesse tipo de análise essas questões são transparentes para os analistas de teste. Para que se crie um projeto de teste bem sucedido é necessário usar a técnica de caixa preta junto com o de caixa branca, isto é, deve-se analisar, também, a estrutura interna da aplicação. 33 Referência LEITE, Jair C. Ciclo de vida de Software. 2007. • Disponível em: http://engenhariadesoftware.blogspot.com/2007/02/ciclo- de-vida-do-software-parte-1.html • PINTAUD, Marcelo e OLIVEIRA, Elisamara. Engenharia de Software e Engenharia de Requisitos. 2014. • SOMMERVILE. Engenharia de Software. 8ªEdição. 33 Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 34 Extras Algumas empresas que trabalham com desenvolvimento de software no Brasil: • http://www.totvs.com • http://www.thoughtworks.com • http://www.hbsis.com.br • http://www.ciandt.com/br-pt • http://www.bhsistemas.com.br • http://www.lambda3.com.br 35 Praticando Responda às questões abaixo: 1) Qual o principal objetivo da garantia da qualidade? 2) Qual destas não é uma característica para a qualidade de software? a) está fortemente relacionada à conformidade com os requisitos b)caracteriza o grau de satisfação do cliente c)é responsabilidade de apenas uma área da empresa: a área de qualidaded)deve estar presente desde o planejamento do software. Introdução ao Desenvolvimento de Software Janynne L. S. Gomes 36 Disciplina: Introdução ao Desenvolvimento de Sistemas Professora: Janynne L. S. Gomes Contato: janynne.gomes@outlook.com www.eteit.univale.br Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36
Compartilhar