Universidade Federal da Bahia
     Instituto de Matemática
     Departamento de Ciência da Computação
     Disciplina: MATA62 – Engenharia de Software I



     Cliquez pour modifier le style du titre
                       Teste de Software

                         Mauricio C. Santos
                            CPD-UFBA


Salvador, Março/2010
O Que Veremos?


                    Conceitos Básicos
Teste de Software
                    Teste de Software
                    • Teste de Unidade
                    • Teste Funcional
                    • Teste de Integração
                    Estratégia de Testes em XP
                    Test-Driven Development
                    • TDD com Ruby
                    Teste de Unidade com Ruby

                                                 2
Referências Bibliográficas

https://disciplinas.dcc.ufba.br/pub/MATB15/SemestreCorrent
e/Aula1.pdf
http://disciplinas.dcc.ufba.br/MATA62/TesteDeSoftware
http://disciplinas.dcc.ufba.br/MATA62/TestesDeUnidade
http://www.disciplinas.dcc.ufba.br/MATA63/Desenvolviment
oDirigidoPorTestes
http://disciplinas.dcc.ufba.br/MATA62/TDDComRuby
http://pt.wikipedia.org/wiki/Test_Driven_Development




                                                        3
Cliquez pour modifier le style du titre

                    Conceitos Básicos
Defeitos e Falhas



Defeito
• um problema nos requisitos, no projeto, no
  código, na documentação ou nos casos de teste.
Falha
• um problema no funcionamento do sistema.


        Falha: conseqüência de um defeito


                                              5
Defeitos e Falhas: Uma Visão Mais Completa




                                         6
Principais Artefatos de Software: Uma Visão
Simplificada




                                          7
Defeitos Introduzidos ao Longo do Processo
  de Desenvolvimento

A maior parte é de origem humana.
São gerados na comunicação e na transformação
de informações.
Permanecem presentes nos diversos produtos de
software produzidos e liberados.
A maioria encontra-se em partes do produto de
software raramente utilizadas e/ou executadas.




                                                 8
Alguns Tipos de Defeitos Introduzidos




                                        9
Defeitos Introduzidos ao Longo do Processo
  de Desenvolvimento

Principal causa:
• Tradução incorreta de informações.
Quanto antes a presença do defeito for revelada,
menor o custo de correção do defeito e maior a
probabilidade de corrigi-lo corretamente.
Solução:
• Introduzir atividades de V V & T ao longo de todo
  o ciclo de desenvolvimento.


                                                   10
Verificação e Validação V & V


As atividades de avaliação de produtos são parte
do tema chamado Verificação e Validação (V&V).
A definição de V&V abrange muitas das atividades
às quais nos referimos como Garantia da
Qualidade de Software (SQA).




                                              11
Verificação



Refere-se ao conjunto de atividades que garante
que o software implementa corretamente uma
função específica.


  “Estamos construindo certo o produto?”




                                                  12
Validação



Refere-se ao conjunto de atividades que garante
que o software que foi construído é “rastreável” às
exigências do cliente.


  “Estamos construindo o produto certo?”




                                                 13
Garantia da Qualidade de Software



Métodos de Engenharia de Software: proporcionam
a base a partir da qual a qualidade é construída.
Revisões Técnicas Formais: ajudam a garantir a
qualidade do produto produzido como uma
conseqüência de cada passo da engenharia de
software.
Medição: ajudam a controlar cada elemento da
configuração de software.


                                                 14
Garantia da Qualidade de Software



Padrões e Procedimentos: ajudam a garantir a
uniformidade.
Garantia de Qualidade de Software (SQA): põe em
prática uma filosofia de qualidade total.
Teste: a qualidade pode ser avaliada.




                                               15
Garantia da Qualidade de Software




                                    16
Cliquez pour modifier le style du titre

                     Teste de Software
O Que É ?



A atividade de teste é o processo de executar um
programa com a intenção de descobrir um erro
Um bom caso de teste é aquele que tem uma
elevada probabilidade de revelar um erro ainda não
descoberto
Um teste bem-sucedido é aquele que revela um
erro ainda não descoberto.



                                               18
Objetivos da Atividade de Teste


Objetivo: projetar testes que descubram
sistematicamente diferentes classes de erros com
uma quantidade de tempo e esforço razoáveis.
Se a atividade de teste for conduzida com sucesso,
ela descobrirá erros no software.

   A atividade de teste não pode mostrar a ausência de bugs.
  Ela só pode mostrar se defeitos de software estão presentes.




                                                                 19
Erros e as Atividades de Teste


Se erros graves forem encontrados com
regularidade, isto implica que a qualidade e a
confiabilidade de software são suspeitas.
Se erros facilmente corrigíveis forem
encontrados, isto implica que a qualidade e a
confiabilidade do software estão aceitáveis ou os
testes são inadequados para revelar erros graves
Se não for encontrado erro isto implica que a
configuração de teste não foi suficientemente
elaborada e erros estão escondidos no software
                                                 20
Processo Tradicional de Testes




                                 21
Abordagens para Testes



Abordagem funcional
• AKA "teste caixa preta"
• são testadas as funcionalidades do software,
  emitindo entradas pré-definidas e testando pelas
  saídas esperadas.




                                               22
Abordagens para Testes


Abordagem estrutural
• AKA "teste caixa branca"
• são testados aspectos de implementação das
  unidades de modularização (e.g. classes):
    algoritmos utilizados
    resultados esperados de métodos em função
    de seus parâmetros



                                               23
Teste Automatizado de Software


Programas que testam programas.
• oráculo
Uso de frameworks de teste.




                                   24
Etapas do Teste de Software




Testes de Unidade: cada módulo é testado
individualmente garantindo que ele funcione
adequadamente.
Utiliza as técnicas de teste de caixa branca.




                                                25
Etapas do Teste de Software




Testes de Integração: os módulos são montados
ou integrados para formarem um pacote de
software.
Utiliza principalmente as técnicas de teste de caixa
preta.




                                                  26
Etapas do Teste de Software




Testes de Alto Nível (validação e sistema): Os
critérios de validação estabelecidos durante a
análise de requisitos são testados.
Verifica também se todos os elementos combinam-
se adequadamente e se a função/ desempenho
global do sistema é conseguida.
Utiliza as técnicas de caixa preta.


                                                 27
Etapas do Teste de Software




                              28
Cliquez pour modifier le style du titre

        Estratégia de Teste em XP
Estratégia de Teste em XP



"O que não pode ser mensurado não existe." [Kent
Beck]
"Não confio em nada que escrevi até que eu tenha
testes para isso." [Kent Beck]
"Tests are both resource and responsibility."
"Work with human nature, not against it."
• Testar é importante mas pensamos mais no
  código do que nos testes

                                                30
Estratégia de Teste em XP



Testes com XP são isolados e automáticos
• Testes isolados: não há efeito "cascata" pois
  testes não interagem entre si
• Testes automáticos: indicam apenas se os testes
  passaram ou não




                                                  31
Cliquez pour modifier le style du titre

 Test Driven Development - TDD
O Que É ?




            33
Por Quê Usar ?



Ênfase na interface
Expressão dos requisitos
Projeto bottom-up
Todo código desenvolvido é coberto por testes
Design do programa
Redução do tempo de depuração
Código modularizado, flexível e extensível

                                                34
Refatoração



Modificar o design de um código sem alterar o seu
comportamento
Em TDD, isso significa alterar o código de forma
que os testes continuem passando.
Para saber mais: Refactoring: Improving the Design
of Existing Code (The Addison-Wesley Object
Technology Series): Martin Fowler,Kent Beck,John
Brant,William Opdyke,Don Roberts


                                                   35
Beneficios

Alguns estudos mostram impacto positivo de TDD:
Redução de número de defeitos
• Um estudo sobre o impacto do uso de
  desenvolvimento orientado por testes na
  melhoria da qualidade de software. Projeto de
  conclusão de curso de Daniela Feitosa, 2007.2.
Aumento da produtividade
Aumento da qualidade


                                              36
Limitações

Mudança de pensamento
Suporte gerencial
Dependência de testes funcionais para
sucesso/falha (interfaces de usuários, interação
com bases de dados, sistemas que dependam de
configurações específicas da rede)




                                               37

Aula - Teste de Software

  • 1.
    Universidade Federal daBahia Instituto de Matemática Departamento de Ciência da Computação Disciplina: MATA62 – Engenharia de Software I Cliquez pour modifier le style du titre Teste de Software Mauricio C. Santos CPD-UFBA Salvador, Março/2010
  • 2.
    O Que Veremos? Conceitos Básicos Teste de Software Teste de Software • Teste de Unidade • Teste Funcional • Teste de Integração Estratégia de Testes em XP Test-Driven Development • TDD com Ruby Teste de Unidade com Ruby 2
  • 3.
  • 4.
    Cliquez pour modifierle style du titre Conceitos Básicos
  • 5.
    Defeitos e Falhas Defeito •um problema nos requisitos, no projeto, no código, na documentação ou nos casos de teste. Falha • um problema no funcionamento do sistema. Falha: conseqüência de um defeito 5
  • 6.
    Defeitos e Falhas:Uma Visão Mais Completa 6
  • 7.
    Principais Artefatos deSoftware: Uma Visão Simplificada 7
  • 8.
    Defeitos Introduzidos aoLongo do Processo de Desenvolvimento A maior parte é de origem humana. São gerados na comunicação e na transformação de informações. Permanecem presentes nos diversos produtos de software produzidos e liberados. A maioria encontra-se em partes do produto de software raramente utilizadas e/ou executadas. 8
  • 9.
    Alguns Tipos deDefeitos Introduzidos 9
  • 10.
    Defeitos Introduzidos aoLongo do Processo de Desenvolvimento Principal causa: • Tradução incorreta de informações. Quanto antes a presença do defeito for revelada, menor o custo de correção do defeito e maior a probabilidade de corrigi-lo corretamente. Solução: • Introduzir atividades de V V & T ao longo de todo o ciclo de desenvolvimento. 10
  • 11.
    Verificação e ValidaçãoV & V As atividades de avaliação de produtos são parte do tema chamado Verificação e Validação (V&V). A definição de V&V abrange muitas das atividades às quais nos referimos como Garantia da Qualidade de Software (SQA). 11
  • 12.
    Verificação Refere-se ao conjuntode atividades que garante que o software implementa corretamente uma função específica. “Estamos construindo certo o produto?” 12
  • 13.
    Validação Refere-se ao conjuntode atividades que garante que o software que foi construído é “rastreável” às exigências do cliente. “Estamos construindo o produto certo?” 13
  • 14.
    Garantia da Qualidadede Software Métodos de Engenharia de Software: proporcionam a base a partir da qual a qualidade é construída. Revisões Técnicas Formais: ajudam a garantir a qualidade do produto produzido como uma conseqüência de cada passo da engenharia de software. Medição: ajudam a controlar cada elemento da configuração de software. 14
  • 15.
    Garantia da Qualidadede Software Padrões e Procedimentos: ajudam a garantir a uniformidade. Garantia de Qualidade de Software (SQA): põe em prática uma filosofia de qualidade total. Teste: a qualidade pode ser avaliada. 15
  • 16.
    Garantia da Qualidadede Software 16
  • 17.
    Cliquez pour modifierle style du titre Teste de Software
  • 18.
    O Que É? A atividade de teste é o processo de executar um programa com a intenção de descobrir um erro Um bom caso de teste é aquele que tem uma elevada probabilidade de revelar um erro ainda não descoberto Um teste bem-sucedido é aquele que revela um erro ainda não descoberto. 18
  • 19.
    Objetivos da Atividadede Teste Objetivo: projetar testes que descubram sistematicamente diferentes classes de erros com uma quantidade de tempo e esforço razoáveis. Se a atividade de teste for conduzida com sucesso, ela descobrirá erros no software. A atividade de teste não pode mostrar a ausência de bugs. Ela só pode mostrar se defeitos de software estão presentes. 19
  • 20.
    Erros e asAtividades de Teste Se erros graves forem encontrados com regularidade, isto implica que a qualidade e a confiabilidade de software são suspeitas. Se erros facilmente corrigíveis forem encontrados, isto implica que a qualidade e a confiabilidade do software estão aceitáveis ou os testes são inadequados para revelar erros graves Se não for encontrado erro isto implica que a configuração de teste não foi suficientemente elaborada e erros estão escondidos no software 20
  • 21.
  • 22.
    Abordagens para Testes Abordagemfuncional • AKA "teste caixa preta" • são testadas as funcionalidades do software, emitindo entradas pré-definidas e testando pelas saídas esperadas. 22
  • 23.
    Abordagens para Testes Abordagemestrutural • AKA "teste caixa branca" • são testados aspectos de implementação das unidades de modularização (e.g. classes): algoritmos utilizados resultados esperados de métodos em função de seus parâmetros 23
  • 24.
    Teste Automatizado deSoftware Programas que testam programas. • oráculo Uso de frameworks de teste. 24
  • 25.
    Etapas do Testede Software Testes de Unidade: cada módulo é testado individualmente garantindo que ele funcione adequadamente. Utiliza as técnicas de teste de caixa branca. 25
  • 26.
    Etapas do Testede Software Testes de Integração: os módulos são montados ou integrados para formarem um pacote de software. Utiliza principalmente as técnicas de teste de caixa preta. 26
  • 27.
    Etapas do Testede Software Testes de Alto Nível (validação e sistema): Os critérios de validação estabelecidos durante a análise de requisitos são testados. Verifica também se todos os elementos combinam- se adequadamente e se a função/ desempenho global do sistema é conseguida. Utiliza as técnicas de caixa preta. 27
  • 28.
    Etapas do Testede Software 28
  • 29.
    Cliquez pour modifierle style du titre Estratégia de Teste em XP
  • 30.
    Estratégia de Testeem XP "O que não pode ser mensurado não existe." [Kent Beck] "Não confio em nada que escrevi até que eu tenha testes para isso." [Kent Beck] "Tests are both resource and responsibility." "Work with human nature, not against it." • Testar é importante mas pensamos mais no código do que nos testes 30
  • 31.
    Estratégia de Testeem XP Testes com XP são isolados e automáticos • Testes isolados: não há efeito "cascata" pois testes não interagem entre si • Testes automáticos: indicam apenas se os testes passaram ou não 31
  • 32.
    Cliquez pour modifierle style du titre Test Driven Development - TDD
  • 33.
  • 34.
    Por Quê Usar? Ênfase na interface Expressão dos requisitos Projeto bottom-up Todo código desenvolvido é coberto por testes Design do programa Redução do tempo de depuração Código modularizado, flexível e extensível 34
  • 35.
    Refatoração Modificar o designde um código sem alterar o seu comportamento Em TDD, isso significa alterar o código de forma que os testes continuem passando. Para saber mais: Refactoring: Improving the Design of Existing Code (The Addison-Wesley Object Technology Series): Martin Fowler,Kent Beck,John Brant,William Opdyke,Don Roberts 35
  • 36.
    Beneficios Alguns estudos mostramimpacto positivo de TDD: Redução de número de defeitos • Um estudo sobre o impacto do uso de desenvolvimento orientado por testes na melhoria da qualidade de software. Projeto de conclusão de curso de Daniela Feitosa, 2007.2. Aumento da produtividade Aumento da qualidade 36
  • 37.
    Limitações Mudança de pensamento Suportegerencial Dependência de testes funcionais para sucesso/falha (interfaces de usuários, interação com bases de dados, sistemas que dependam de configurações específicas da rede) 37