Você está na página 1de 36

QUALIDADE DE SOFTWARE

• Qualidade é o grau em que o sistema, componente ou


processo atende (1) os requisitos especificados e (2) as
expectativas e necessidades do cliente ou do usuário.

• Custos de prevenção: são custos para evitar problemas de


qualidade.

• Custos de avaliação: custos para avaliar a qualidade do


produto e assegurar que ele tenha a qualidade desejada.

• Custos de falha: custos para resolver não conformidades.


QUALIDADE DE SOFTWARE

• Modelo de qualidade: Definem as características de qualidade


de um software ou um sistema computacional.

• ISO 25000: Requisitos e Avaliação da Qualidade do Produto de


Software  auxilia na especificação de requisitos e medir e
avaliar a qualidade.

• Modelo de qualidade: Propriedade de qualidade (linhas de


código, precisão de um cálculo, tempo de garantia, preço, etc).

• A avaliação da qualidade de software é medida em graus que


são feitas a partir das propriedades.
QUALIDADE DE SOFTWARE

• O modelo de qualidade é dividido em Qualidade do Produto,


Qualidade em uso e Qualidade de Dados (ISO 25012).

• Qualidade do Produto: Ponto de vista do produto.

• Qualidade em uso: Representa o quanto o uso do software


cumpre às necessidades e atinge metas de um usuário.
Depende de um contexto de uso. Características do usuário
e da tarefa, hardware, ambiente de operação e ambiente
social.
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
• ISO 12207: Processos do ciclo de vida de software  Define um
quadro de referência para processos de software.

• Aquisição, fornecimento, desenvolvimento, operação, manutenção e


descarte.

• Processo: Conjunto de atividades inter-relacionadas ou interagindo


que transformam entradas em saídas.

• Características:
- O processo deve ter um objetivo
- Importância do valor da saída para a organização
- Um processo tem um cliente
- Pode cruzar fronteiras organizacionais.
QUALIDADE DE SOFTWARE

ISO 12207

• Estágio/fase: Período de tempo em que as atividades são


realizadas.
• Disciplina: Conjunto de atividades relacionadas.
• Atividade e Tarefa
• Passos (Procedimentos)
• Papel (responsáveis e participantes)
• Recurso
• Artefato
QUALIDADE DE SOFTWARE
Processos:
A norma define 4 grupos de processos:

• Processos de acordo: Que são os processos de aquisição de software e


processos de fornecimento de software.

• Processos organizacionais habilitadores do projeto: são em suma


processos de gerência/ gestão em que a empresa deve operar para
desenvolver um software.

• Processos de gerência técnica: Gestão dos processos e planejamento


do projeto.

• Processos técnicos: São os processos de desenvolvimento


QUALIDADE DE SOFTWARE

Garantia da qualidade:

Provê compreensão sobre o processo e os produtos:

• Garantia da qualidade do produto  Os artefatos seguem os


padrões acordados?
• Garantia da qualidade do processo  As atividades
planejadas/definidas estão sendo executadas?
• Não avalia requisitos e necessidades.
QUALIDADE DE SOFTWARE

Garantia da qualidade:

• Funciona como um “representante do cliente” 


divulgação para os stakeholders  “Estão se preocupando
com a qualidade?”
QUALIDADE DE SOFTWARE

Processos de verificação e de validação

• A verificação busca garantir que os produtos de trabalho


selecionados cumpram os seus requisitos especificados. Esses
requisitos podem ser requisitos de software, condições
impostas, padrões, práticas e convenções. O software
construído está certo?

• A validação busca demonstrar que o produto ou componente


do produto cumpre o uso pretendido quando colocado em seu
ambiente desejado. Está sendo construído o software certo?
QUALIDADE DE SOFTWARE
Técnicas de revisão

• Revisão/análise de artefatos de software à procura de problemas

• Objetivo: melhorar a qualidade do software


- Verificar a conformidade com padrões: Garantia da qualidade
- Descobrir problemas e omissões: Controle da qualidade

• Em geral, as técnicas de V&V são estáticas: não executam código,


mas existem revisão dinâmica, como por exemplo, a inspeção de
usabilidade.

• Aplicáveis para diversos artefatos: planos, código, modelos e casos


de teste.
QUALIDADE DE SOFTWARE
Técnicas de revisão: Funciona como um filtro

• Vantagens:
- Identifica diversos defeitos
- É possível executá-la em artefatos incompletos
- Ajuda no treinamento dos membros da equipe
- Pode analisar características de qualidade
- Inspeção de código detecta 60% dos defeitos e teste de unidade
detecta 30%.

• Desvantagens:
- Não são substitutos de testes, testes são mais eficazes.
- Custo, tempo para realizar as revisões, preparação da equipe
- Dificuldade de medir vantagens, é necessário medição e histórico
QUALIDADE DE SOFTWARE
Tipos de revisão

• Revisão informal: sem uma agenda bem definida; Não precisa de


preparação; Sem um acompanhamento posterior.
Ex: Pair programming, dailys, weekly, etc.

• Revisão formal: realização por pequenos grupos

- Formato geral: Atividades pré-revisão (Planejamento, Leitura e


análise do artefato); Reunião de revisão (Registro dos
comentários); Atividades pós-revisão (Acompanhamento dos
problemas encontrados).
QUALIDADE DE SOFTWARE
Teste de software

• Técnica Estrutural: Caixa branca


• Técnica Funcional: Caixa preta
- Não se usa nenhum detalhe interno
- Foco na especificação
- Entrada  Saída
- Partição e equivalência
- Valores Limites
- Tabelas de decisão
QUALIDADE DE SOFTWARE
Partição de equivalência

• Divide o domínio de entrada em classes de equivalência  Resultado


do teste de uma entrada nessa partição é equivalente aos demais

• Como definir classes de equivalência?


Dividir cada condição de entrada em grupos: condições de entrada na
especificação; grupos válidos e inválidos.
QUALIDADE DE SOFTWARE

Valores limites

• Condições no limite das partições costumam ter mais


defeitos: limite inferior e limite superior.

• Ao invés de escolher qualquer valor da classe, escolhe


aqueles na fronteira: considera classes de entrada e de
saída.
QUALIDADE DE SOFTWARE
Teste estrutural

• O teste é feito considerando o conhecimento da estrutura


interna do código

• Problema: se tiver um laço pode ter vários números de


caminhos, por isso não testa todos os caminhos, testa todas as
arestas
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE

Princípios de automação de testes (Meszaros, 2007)

• Projete o código para ser testável


• Comunique a intenção de teste
• Não altere o software para permitir os testes: alteração
manual que precisa ser corrigida
• Mantenha os testes independentes
• Isole a unidade sendo testada
• Minimize a sobreposição dos testes
• Mantenha a lógica de teste fora do código de produção
• Verifique uma condição por teste
QUALIDADE DE SOFTWARE

Testes de unidade

• Deve-se buscar automatizar o máximo possível, porém nem


tudo pode ser automatizado.

• Importância da automatização de testes:


- Facilita a atividade de testes
- Software é testado frequentemente
- Mais defeitos são encontrados
- Serve como uma especificação do software
- Dá mais confiança aos devs.
QUALIDADE DE SOFTWARE

Testes de unidade

• Quando criar o teste de unidade?


- Antes de programar a classe (TDD)
- Depois de programar a classe

• O que testar?
- Teste intramétodos: unidade
- Teste intermétodos: unidade x integração
- Teste intraclasse: unidade x integração
- Teste interclasses: integração
QUALIDADE DE SOFTWARE

Junit

• É praticamente um padrão para Java


• Os testes ficam em outra classe
• Os testes devem ser separados, o teste deve ficar no mesmo
pacote da classe testada.
QUALIDADE DE SOFTWARE
Alguns métodos uteis

• assertTrue (boolean condition): verifica se a condição é verdadeira


• assertFalse (boolean condition): verifica se a condição é falsa
• fail( ): faz o código falhar
• assertEquals (double esperado, double obtido, double delta): verifica
se (otitido – delta <= valorEsperado <= obitido + delta)
QUALIDADE DE SOFTWARE
Dependências

Princípio: isole a parte a ser testada do resto do sistema

Stub: é uma classe que dá uma resposta esperada.


QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE
QUALIDADE DE SOFTWARE

Você também pode gostar