0

Importância do Teste Unitário na Qualidade do Software

610

Published on

Trabalho Final da Graduação em Ciência de Computação na Unicarioca em 2006. Foi desenvolvido o Sistema Colaborativo de Tradução para demonstrar os principais conceitos de teste unitário, integração dos processos de desenvolvimento e testes.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
610
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Importância do Teste Unitário na Qualidade do Software"

  1. 1. A Influência dos testes unitáriosA Influência dos testes unitários automatizados na qualidadeautomatizados na qualidade dos softwares desenvolvidosdos softwares desenvolvidos Por : Edison Moreira,Por : Edison Moreira, Luis Octavio Godoy eLuis Octavio Godoy e Michel DavidMichel David Orientação : Prof. Hamilton AthanazioOrientação : Prof. Hamilton Athanazio UNICARIOCA – Ciência da ComputaçãoUNICARIOCA – Ciência da Computação
  2. 2. Objetivos da ApresentaçãoObjetivos da Apresentação  Mostrar a vital importância de testes nosMostrar a vital importância de testes nos componentes do software durante todocomponentes do software durante todo seu ciclo de vida, para a qualidade doseu ciclo de vida, para a qualidade do software desenvolvidosoftware desenvolvido AgendaAgenda  Panorama ConceitualPanorama Conceitual  Demonstrações da Prova de ConceitoDemonstrações da Prova de Conceito  ConclusõesConclusões
  3. 3. MonografiaMonografia ObjetivoObjetivo  Demonstrar a influência dos testes unitáriosDemonstrar a influência dos testes unitários automatizados na melhoria da qualidade dos softwaresautomatizados na melhoria da qualidade dos softwares desenvolvidosdesenvolvidos ““Atualmente as organizações desenvolvedoras de software nãoAtualmente as organizações desenvolvedoras de software não tratam o processo de testes como um verdadeiro processo,outratam o processo de testes como um verdadeiro processo,ou seja, não existe uma gestão formal do mesmo, por isso asseja, não existe uma gestão formal do mesmo, por isso as atividades de testes são confundidas com o próprio processoatividades de testes são confundidas com o próprio processo de desenvolvimento. Sendo assim, os custos para sede desenvolvimento. Sendo assim, os custos para se identificar e corrigir as falhas podem ser 50 a 100 vezesidentificar e corrigir as falhas podem ser 50 a 100 vezes maiores do que se fossem realizadas logo após a suamaiores do que se fossem realizadas logo após a sua inclusão no software. “inclusão no software. “ Emerson Rios e Trayahù MoreiraEmerson Rios e Trayahù Moreira JustificativaJustificativa
  4. 4. Metodologia de TrabalhoMetodologia de Trabalho I – Revisão da LiteraturaI – Revisão da Literatura II – Pesquisa e Análise dos modelos a seremII – Pesquisa e Análise dos modelos a serem seguidosseguidos III – Especificação do Sistema SCTIII – Especificação do Sistema SCT IV – Análise e Definição das ferramentas a seremIV – Análise e Definição das ferramentas a serem utilizadasutilizadas V – Prova de ConceitoV – Prova de Conceito VI - Método de Automação dos Testes junto com oVI - Método de Automação dos Testes junto com o DesenvolvimentoDesenvolvimento VII – ConclusãoVII – Conclusão
  5. 5. ““o ramo da Engenharia relacionado a aplicação práticao ramo da Engenharia relacionado a aplicação prática no projeto e na construção de programas e nano projeto e na construção de programas e na documentação necessária para construir, manter edocumentação necessária para construir, manter e operar estes programas”.operar estes programas”. Barry Boehm (1990)Barry Boehm (1990) Engenharia de softwareEngenharia de software ““os engenheiros de software utilizam o seuos engenheiros de software utilizam o seu conhecimento sobre computadores e aconhecimento sobre computadores e a computação para ajudar a resolver problemas”computação para ajudar a resolver problemas” Pfleeger (2001)Pfleeger (2001)
  6. 6. Engenharia de Software Análise de Sistemas Projeto Codificaçào Teste Manutenção Ciclo de Vida de um Sistema
  7. 7. ““existe uma dificuldade em garantirexiste uma dificuldade em garantir compatibilidade entre as fases de análise ecompatibilidade entre as fases de análise e de projeto e, posteriormente, do projeto parade projeto e, posteriormente, do projeto para a implementação”a implementação” Melo, Ana CristinaMelo, Ana Cristina Orientação a ObjetosOrientação a Objetos JustificativaJustificativa
  8. 8. Linguagens TradicionaisLinguagens Tradicionais Orientadas a ObjetoOrientadas a Objeto Função A Função B Função C Função D Dados Dados X Função X Dados Y Função Y Dados Z Função Z Objeto X Objeto Y Objeto Z
  9. 9. Para entendimento, modelagem e desenvolvimento doPara entendimento, modelagem e desenvolvimento do sistema devem ser trabalhadas as seguintes visões esistema devem ser trabalhadas as seguintes visões e respectivos diagramas :respectivos diagramas : I) Estrutural – que é suportada pelos diagramas de classes,I) Estrutural – que é suportada pelos diagramas de classes, de componentes, de implantação e de objetos, quede componentes, de implantação e de objetos, que registram os estados da classe e seus relacionamentos.registram os estados da classe e seus relacionamentos. Os relacionamentos podem ser de associações, herançaOs relacionamentos podem ser de associações, herança (generalização e especialização), dependência ou(generalização e especialização), dependência ou refinamentos.refinamentos. UMLUML II) Dinâmica – que é suportada pelos diagramas deII) Dinâmica – que é suportada pelos diagramas de atividades, diagramas de estado, seqüência eatividades, diagramas de estado, seqüência e colaboração.colaboração. III) Comportamental (“Behavorial”) - que é representadoIII) Comportamental (“Behavorial”) - que é representado pelos Diagramas e Descrição de Casos de Uso.pelos Diagramas e Descrição de Casos de Uso.
  10. 10. Norma 12207 – Ciclo de Vida do SoftwareNorma 12207 – Ciclo de Vida do Software
  11. 11. CMMI - Modelo Integrado de Maturidade de CapacidadeCMMI - Modelo Integrado de Maturidade de Capacidade
  12. 12. SpiceSpice SPICESPICE
  13. 13. XP – Extreme ProgrammingXP – Extreme Programming ConceitosConceitos Simplificação do processo de desenvolvimentoSimplificação do processo de desenvolvimento Integração dos processos de testes e de desenvolvimentoIntegração dos processos de testes e de desenvolvimento Desenvolvimento e liberação rápida de requisitosDesenvolvimento e liberação rápida de requisitos
  14. 14. Model-View-Controller MVCModel-View-Controller MVC É um Padrão de ProjetoÉ um Padrão de Projeto Características principaisCaracterísticas principais  Isolamento das camadasIsolamento das camadas  Facilidade de mudançaFacilidade de mudança Diagrama de ComponentesDiagrama de Componentes
  15. 15. SCTSCT Sistema Colaborativo de TraduçãoSistema Colaborativo de Tradução ObjetivoObjetivo Ser uma ferramenta de trabalho em grupo colaborativo que ofereça apoio ao processo de tradução entre idiomas existentes ou que estejam em construção.
  16. 16. Diagrama de casos de usoDiagrama de casos de uso
  17. 17. Ferramentas UtilizadasFerramentas Utilizadas  Ambiente de Desenvolvimento Eclipse versãoAmbiente de Desenvolvimento Eclipse versão 3.13.1  Ambiente de Testes JunitAmbiente de Testes Junit  Ferramenta de automatização ANTFerramenta de automatização ANT  Ferramenta de Modelagem UML JUDE TAKEFerramenta de Modelagem UML JUDE TAKE  Linguagem de desenvolvimento JAVA versãoLinguagem de desenvolvimento JAVA versão 1.51.5  Linguagem XMLLinguagem XML  SGBDR MySql versão 4.1SGBDR MySql versão 4.1  FrameWork STRUTsFrameWork STRUTs  FrameWork Hibernate 2.0FrameWork Hibernate 2.0  Servidor de Aplicação Web Apache TomcatServidor de Aplicação Web Apache Tomcat
  18. 18. ProcedimentoProcedimento Uso do método assertEquals, disponívelUso do método assertEquals, disponível no JUNIT, para comparação de entrada deno JUNIT, para comparação de entrada de dados com a informação de um objeto nadados com a informação de um objeto na camada de persistênciacamada de persistência Prova de ConceitoProva de Conceito Testes UnitáriosTestes Unitários
  19. 19. JunitJunit  Estão disponíveis as interfaces: uma para textoEstão disponíveis as interfaces: uma para texto (junit.textui.TestRunner), uma para AWT(junit.textui.TestRunner), uma para AWT (junit.awtui.TestRunner) e uma para Swing(junit.awtui.TestRunner) e uma para Swing (junit.swingui.TestRunner)(junit.swingui.TestRunner)  Para se testar uma classe específica, basta criar uma classePara se testar uma classe específica, basta criar uma classe que deve ser herdeira da classe junit.framework.TestCaseque deve ser herdeira da classe junit.framework.TestCase  O JUnit cria as classes de testes. Estas contêm um ou maisO JUnit cria as classes de testes. Estas contêm um ou mais métodos para testes, podendo ser organizados de formamétodos para testes, podendo ser organizados de forma hierárquica, para que o sistema seja testado em parteshierárquica, para que o sistema seja testado em partes separadas (testes unitários), algumas integradas ou todas deseparadas (testes unitários), algumas integradas ou todas de uma só vez.uma só vez.  Ele permite escrever testes que retenham seu valor ao longoEle permite escrever testes que retenham seu valor ao longo do tempo, ou seja, que possam ser reutilizáveis, o quedo tempo, ou seja, que possam ser reutilizáveis, o que implementa a automatização dos mesmos.implementa a automatização dos mesmos.
  20. 20. Resultado de Teste correto no JUNITResultado de Teste correto no JUNIT
  21. 21. Testes de Infra-estruturaTestes de Infra-estrutura Prova de ConceitoProva de Conceito
  22. 22. Diagrama de ComponentesDiagrama de Componentes Struts (MVC)Struts (MVC) ⇔⇔ HibernateHibernate
  23. 23. ProcedimentoProcedimento Criação de classe de teste para inclusãoCriação de classe de teste para inclusão de dados no banco de dadosde dados no banco de dados FerramentasFerramentas AntAnt StrutsStruts HibernateHibernate
  24. 24. StrutsStruts  Ambiente baseado no MVCAmbiente baseado no MVC  Principais funcionalidades utilizadas noPrincipais funcionalidades utilizadas no SCTSCT Mapeamento dos métodosMapeamento dos métodos Funcionalidades da Classe ActionFuncionalidades da Classe Action
  25. 25. HibernateHibernate  ““Framework” paraFramework” para implementar aimplementar a persistência dos objetospersistência dos objetos
  26. 26. HibernateHibernate  Principais ComponentesPrincipais Componentes  Mapeamento Objeto/RelacionalMapeamento Objeto/Relacional  É uma descrição XML (Extended Markup Language) queÉ uma descrição XML (Extended Markup Language) que mapeia o modelo de objetos no modelo relacionalmapeia o modelo de objetos no modelo relacional (tabelas)(tabelas)  Preserva no SGBDR as características dos objetos (porPreserva no SGBDR as características dos objetos (por exemplo :atributos multivalorados, coleções de objetos)exemplo :atributos multivalorados, coleções de objetos)  Linguagem para consulta HQLLinguagem para consulta HQL Disponibiliza acesso natural as associaçõesDisponibiliza acesso natural as associações Semelhante ao SQLSemelhante ao SQL  APIAPI (pacotes org.hibernate e org.hibernate.cfg)(pacotes org.hibernate e org.hibernate.cfg)  Principais interfacesPrincipais interfaces  Configuration, Session FactoryConfiguration, Session Factory,, Session,Session, TransactionTransaction e Querye Query
  27. 27. Modelo Proposto para Integração dos Processos de Desenvolvimento e Testes P L A N E JA M E N T O Modelo Proposto para Integração dos Processos de Desenvolvimento e Testes Gerência dos Requisitos Especificação Teste Iteração 1 Iteração 2 Entrega Desenho Lógico e Especificação Desenvolvimento Construção Implementação Entrega P L A N E J A M E N T O P L A N E J A M E N T O
  28. 28. ConclusãoConclusão  os pré-requisitos para um bom funcionamento dos testesos pré-requisitos para um bom funcionamento dos testes automatizados são :automatizados são :  Implementação dos ambientesImplementação dos ambientes  Configuração correta dos inúmeros parâmetrosConfiguração correta dos inúmeros parâmetros  Pelas limitações e pela complexidade e esforço houvePelas limitações e pela complexidade e esforço houve necessidade de diminuir o escopo, reduzindo a prova conceitualnecessidade de diminuir o escopo, reduzindo a prova conceitual para testes unitários;para testes unitários;  A UML atendeu a necessidade de especificação conjuntaA UML atendeu a necessidade de especificação conjunta das Classes de Negócio e de Testes;das Classes de Negócio e de Testes;
  29. 29. ConclusãoConclusão  É viável e necessária a integração dosÉ viável e necessária a integração dos processos de desenvolvimento e de testesprocessos de desenvolvimento e de testes  Pesquisa, estudo, instalação e configuração dos ambientesPesquisa, estudo, instalação e configuração dos ambientes foram muito trabalhosos, porém mostraram que a curva deforam muito trabalhosos, porém mostraram que a curva de aprendizado é mais rápidaaprendizado é mais rápida  Implantados o núcleo da Infra-estrutura e a automatizaçãoImplantados o núcleo da Infra-estrutura e a automatização dos testes, aumentam a produtividade dos profissionais e ados testes, aumentam a produtividade dos profissionais e a qualidade do softwarequalidade do software  Os ambientes Struts e Hibernate facilitam e agilizam oOs ambientes Struts e Hibernate facilitam e agilizam o desenvolvimento de softwaredesenvolvimento de software  As ferramentas JUnit e ANT usadas juntas automatizam osAs ferramentas JUnit e ANT usadas juntas automatizam os testes, reduzindo o re-trabalho dos desenvolvedorestestes, reduzindo o re-trabalho dos desenvolvedores
  30. 30. AgradecimentosAgradecimentos Orientador Hamilton AthanazioOrientador Hamilton Athanazio Coordenador Manuel MartinsCoordenador Manuel Martins Conjunto de professores, funcionários e alunos dos CursosConjunto de professores, funcionários e alunos dos Cursos de Ciência de Computação e Tecnologia da Informaçãode Ciência de Computação e Tecnologia da Informação
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×