SlideShare uma empresa Scribd logo
Desenvolvimento em .Net




         Testes
Objectivos
    identificar diferentes tipos de testes
●


    descrever conceito de teste unitário
●


    perceber vantagens de utilização de testes
●

    unitários
    conhecer estrutura de testes (test-fixtures ou
●

    test-suites)
    conhecer ferramentas disponiveis para .net e
●

    progress
Objectivos
    saber criar testes em .net
●


    saber criar testes em progress
●
Tipos de testes
    Teste de Caixa Branca (qualidade do código)
●


    Teste de Caixa Preta (entradas e saídas)
●


    Teste de Interface (funcional e usabilidade)
●


    Teste de Integração (inter-componentes)
●


    Teste de Sistema (inter-sistemas)
●
A Abordagem Clássica
    A forma mais tradicional de teste consiste em
●

    adoptar um revisor (par ou especialista em
    teste) após cada atividade => Auditoria
                        Nono nonono nono
                        No nonono nono no
                         No nono nono no
                          Nono nono no
                        Nono nonono nono




                       Artefato
     Desenvolvedor                           Revisor

                         Nono nonono nono
                         No nonono nono no
                          No nono nono no
                           Nono nono no
                         Nono nonono nono




                       Log Erros
A Abordagem Clássica
    O Revisor normalmente é alguém com maior
●

    experiência e conhecimento do produto, capaz
    de identificar erros mais complexos
    O Revisor é, normalmente, mais caro para a
●

    empresa
    Desenvolvedores menos experientes geram
●

    mais erros
    Mais erros exigem mais horas de revisão e
●

    setup (além do custo do retrabalho)
    Desenvolvedores Inexperientes => $$$$$$$$$
●
Nova perspectiva
    Testes Unitários
●


        servem para validar um pedaço de código
    –
        (tipicamente um modulo caixa preta).
        devem ser possiveis de correr automaticamente
    –

        devem ser executados muito rapidamente
    –

             (centenas ou milhares de testes em poucos segundos)
         ●



        são sempre preparados pelo programador.
    –

        garantem que um bocado de codigo criado é válido.
    –
                       Exemplo: teste que verifica
                       se a execução de um
                       procedimento que soma dois
                       números funciona
Comparação
    Testes funcionais / de aceitação / integação /
●

    homologação
        preparados por alguém fora da equipa de
    –
        desenvolvimento.
        garantem que a execução do código produzido
    –
        para resolver a tarefa faz sentido, ou seja traduz
        completamente para software o requisito que foi
        definido pelo cliente.
                   Exemplo: na aplicação é
                   necessário existir alguma
                   função que some dois
                   números?
Quando é a fase de testes?
    Durante o desenvolvimento e não após o
●

    desenvolvimento!
        algumas metodologias advogam até a criação dos
    –
        testes antes do desenvolvimento (Test-Driven
        Development)
Porquê Testar durante o
             Desenvolvimento?
    reduz o tempo que se irá gastar com
●

    ferramentas de debug
    esforço de correcção de um defeito cresce
●

    exponencialmente ao longo do tempo
    cria confiança
●


        sabemos que estamos a construir pedaços de
    –
        código em que podemos confiar
Desculpas habituais para não criar
             testes
    Demora muito tempo
●


        é evidente que fazer um teste, ou seja ter mais uma
    –
        tarefa, vai gastar mais tempo do que só fizesse o
        programa
        no entanto se essa tarefa for sendo feita durante o
    –
        periodo de desenvolvimento a produtividade global
        será superior
Desculpas habituais para não criar
             testes
    Não é trabalho do programador criar testes, ou,
●


    o programador é pago para programar e não
●

    para escrever testes
        concordamos que:
    –

              o programador deve criar código
         ●


             mas código que funcione
         ●


             se não o testou como sabe que funciona?
         ●



        será que é mais rentável passar n horas à caça de
    –
        bugs do que n horas a criar os testes que os
        evitem?
Desculpas habituais para não criar
             testes
    Não posso testar porque ainda não tenho os
●

    requisitos todos
        então também não pode criar o código
    –
        correspondente a esse pedido...
Testes Unitários
    formalizam os testes
●


    numa linguagem que o programador domina
●


        porque são feitos na mesma linguagem de
    –
        programação que o programa a testar
    e auto documentam o código
●


        mostram programaticamente exemplos concretos
    –
        da utilização dos módulos a testar
Testes Unitários com .Net
    http://www.nunit.org/
●


        vitorsilvadownloadsprogramasNUnit-2.2.0.msi
    –

    http://www.testdriven.net/
●


        vitorsilvadownloadsprogramasTestDriven.NET-1.0.9
    –
Testes Unitários com .Net
    criar nova solução
●


    criar projecto do tipo class library chamado
●

    testes unitarios
    acrescentar classe chamada Helper
●
Testes Unitários com .Net
    criar projecto do tipo class library chamado
●

    testeprojecto
    adicionar referencia a nunit.framework.dll
●


    adicionar referencia ao projecto testesunitarios
●
Testes Unitários com .Net
    acrescentar nova classe
●
Testes Unitários com .Net
    correr esse teste
●
Testes Unitários com .Net
    erro na inicialização da variável max
●


        vamos mudar para max as integer = 0
    –
Testes Unitários com .Net
    voltar a correr teste
●
Testes Unitários com .Net
    vamos acrescentar mais uma condição que
●

    sabemos que é verdadeira e testar essa
    condição
Testes Unitários com .Net
    depois de olhar atentamente para o código...
●
Revisão – Testes Unitários
    formalizam os testes
●


    numa linguagem que o
●

    programador domina
        porque são feitos na mesma
    –
        linguagem de programação que
        o programa a testar
    e auto documentam o código
●


        mostram programaticamente
    –
        exemplos concretos da
        utilização dos módulos a testar
Testes Unitários com .Net
    já agora experimentem inicializar o array com
●

    -1, -2 e -3 e vejam se continua a funcionar...
Testes Unitários em Progress
    ProUnit
●


        vitorsilvadownloadslibsprounit
    –

    Punit
●


        vitorsilvadownloadslibspunit
    –
Testes Unitários em Progress
    desenvolver o mesmo teste com uma das
●

    frameworks indicada
Objectivos
    identificar diferentes tipos de testes
●


    descrever conceito de teste unitário
●


    perceber vantagens de utilização de testes
●

    unitários
    conhecer estrutura de testes (test-fixtures ou
●

    test-suites)
    conhecer ferramentas disponiveis para .net e
●

    progress
Objectivos
    saber criar testes em .net
●


    saber criar testes em progress
●

Mais conteúdo relacionado

Mais procurados

Teste de software
Teste de softwareTeste de software
Teste de software
Daniel Paulo de Assis
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
guest23778e
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
Osvaldo Santana Neto
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
Guilherme Chapiewski
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
Rodrigo Veiga
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
Paulo Igor Alves Godinho
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
Taís Dall'Oca
 
Teste de software
Teste de softwareTeste de software
Teste de software
Rafael Sanches
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
minastestingconference
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
minastestingconference
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
cejug
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
Dionatan default
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
Israel Santiago
 
Testando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumTestando aplicações Flex com Selenium
Testando aplicações Flex com Selenium
Victor Serta
 
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a SessõesQA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
Thiago Boschese
 

Mais procurados (20)

Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
 
Testando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumTestando aplicações Flex com Selenium
Testando aplicações Flex com Selenium
 
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a SessõesQA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
 

Semelhante a Desenvolvimento em .Net - Testes Unitários

Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
Adriano Bertucci
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
Isaac de Souza
 
Testes
TestesTestes
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
WordCamp Floripa
 
TDD
TDDTDD
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
Simone Pittner
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
Robinson Castilho
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de Selenium
Autotic
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Claudinei Brito Junior
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
Cezar Souza
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
Sérgio Souza Costa
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
Fabrício Campos
 
Eng de testes aula2
Eng de testes   aula2Eng de testes   aula2
Eng de testes aula2
GrupoAlves - professor
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
testedesoftwarepe
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
elliando dias
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de software
Felipe Bugov
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
HoctairBernardino
 
Aula09_TesteSoftware_Parte1_apremdeeghku
Aula09_TesteSoftware_Parte1_apremdeeghkuAula09_TesteSoftware_Parte1_apremdeeghku
Aula09_TesteSoftware_Parte1_apremdeeghku
MoniqueEstevo2
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
Roberto Nunes
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 

Semelhante a Desenvolvimento em .Net - Testes Unitários (20)

Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Testes
TestesTestes
Testes
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
TDD
TDDTDD
TDD
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de Selenium
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Eng de testes aula2
Eng de testes   aula2Eng de testes   aula2
Eng de testes aula2
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de software
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Aula09_TesteSoftware_Parte1_apremdeeghku
Aula09_TesteSoftware_Parte1_apremdeeghkuAula09_TesteSoftware_Parte1_apremdeeghku
Aula09_TesteSoftware_Parte1_apremdeeghku
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 

Mais de Vitor Silva

Cidadania20
Cidadania20Cidadania20
Cidadania20
Vitor Silva
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
Vitor Silva
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
Vitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
Vitor Silva
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
Vitor Silva
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
Vitor Silva
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - Reflection
Vitor Silva
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
Vitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
Vitor Silva
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
Vitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
Vitor Silva
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Vitor Silva
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Vitor Silva
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
Vitor Silva
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
Vitor Silva
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
Vitor Silva
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
Vitor Silva
 

Mais de Vitor Silva (17)

Cidadania20
Cidadania20Cidadania20
Cidadania20
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - Reflection
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 

Desenvolvimento em .Net - Testes Unitários

  • 2. Objectivos identificar diferentes tipos de testes ● descrever conceito de teste unitário ● perceber vantagens de utilização de testes ● unitários conhecer estrutura de testes (test-fixtures ou ● test-suites) conhecer ferramentas disponiveis para .net e ● progress
  • 3. Objectivos saber criar testes em .net ● saber criar testes em progress ●
  • 4. Tipos de testes Teste de Caixa Branca (qualidade do código) ● Teste de Caixa Preta (entradas e saídas) ● Teste de Interface (funcional e usabilidade) ● Teste de Integração (inter-componentes) ● Teste de Sistema (inter-sistemas) ●
  • 5. A Abordagem Clássica A forma mais tradicional de teste consiste em ● adoptar um revisor (par ou especialista em teste) após cada atividade => Auditoria Nono nonono nono No nonono nono no No nono nono no Nono nono no Nono nonono nono Artefato Desenvolvedor Revisor Nono nonono nono No nonono nono no No nono nono no Nono nono no Nono nonono nono Log Erros
  • 6. A Abordagem Clássica O Revisor normalmente é alguém com maior ● experiência e conhecimento do produto, capaz de identificar erros mais complexos O Revisor é, normalmente, mais caro para a ● empresa Desenvolvedores menos experientes geram ● mais erros Mais erros exigem mais horas de revisão e ● setup (além do custo do retrabalho) Desenvolvedores Inexperientes => $$$$$$$$$ ●
  • 7. Nova perspectiva Testes Unitários ● servem para validar um pedaço de código – (tipicamente um modulo caixa preta). devem ser possiveis de correr automaticamente – devem ser executados muito rapidamente – (centenas ou milhares de testes em poucos segundos) ● são sempre preparados pelo programador. – garantem que um bocado de codigo criado é válido. – Exemplo: teste que verifica se a execução de um procedimento que soma dois números funciona
  • 8. Comparação Testes funcionais / de aceitação / integação / ● homologação preparados por alguém fora da equipa de – desenvolvimento. garantem que a execução do código produzido – para resolver a tarefa faz sentido, ou seja traduz completamente para software o requisito que foi definido pelo cliente. Exemplo: na aplicação é necessário existir alguma função que some dois números?
  • 9. Quando é a fase de testes? Durante o desenvolvimento e não após o ● desenvolvimento! algumas metodologias advogam até a criação dos – testes antes do desenvolvimento (Test-Driven Development)
  • 10. Porquê Testar durante o Desenvolvimento? reduz o tempo que se irá gastar com ● ferramentas de debug esforço de correcção de um defeito cresce ● exponencialmente ao longo do tempo cria confiança ● sabemos que estamos a construir pedaços de – código em que podemos confiar
  • 11. Desculpas habituais para não criar testes Demora muito tempo ● é evidente que fazer um teste, ou seja ter mais uma – tarefa, vai gastar mais tempo do que só fizesse o programa no entanto se essa tarefa for sendo feita durante o – periodo de desenvolvimento a produtividade global será superior
  • 12. Desculpas habituais para não criar testes Não é trabalho do programador criar testes, ou, ● o programador é pago para programar e não ● para escrever testes concordamos que: – o programador deve criar código ● mas código que funcione ● se não o testou como sabe que funciona? ● será que é mais rentável passar n horas à caça de – bugs do que n horas a criar os testes que os evitem?
  • 13. Desculpas habituais para não criar testes Não posso testar porque ainda não tenho os ● requisitos todos então também não pode criar o código – correspondente a esse pedido...
  • 14. Testes Unitários formalizam os testes ● numa linguagem que o programador domina ● porque são feitos na mesma linguagem de – programação que o programa a testar e auto documentam o código ● mostram programaticamente exemplos concretos – da utilização dos módulos a testar
  • 15. Testes Unitários com .Net http://www.nunit.org/ ● vitorsilvadownloadsprogramasNUnit-2.2.0.msi – http://www.testdriven.net/ ● vitorsilvadownloadsprogramasTestDriven.NET-1.0.9 –
  • 16. Testes Unitários com .Net criar nova solução ● criar projecto do tipo class library chamado ● testes unitarios acrescentar classe chamada Helper ●
  • 17. Testes Unitários com .Net criar projecto do tipo class library chamado ● testeprojecto adicionar referencia a nunit.framework.dll ● adicionar referencia ao projecto testesunitarios ●
  • 18. Testes Unitários com .Net acrescentar nova classe ●
  • 19. Testes Unitários com .Net correr esse teste ●
  • 20. Testes Unitários com .Net erro na inicialização da variável max ● vamos mudar para max as integer = 0 –
  • 21. Testes Unitários com .Net voltar a correr teste ●
  • 22. Testes Unitários com .Net vamos acrescentar mais uma condição que ● sabemos que é verdadeira e testar essa condição
  • 23. Testes Unitários com .Net depois de olhar atentamente para o código... ●
  • 24. Revisão – Testes Unitários formalizam os testes ● numa linguagem que o ● programador domina porque são feitos na mesma – linguagem de programação que o programa a testar e auto documentam o código ● mostram programaticamente – exemplos concretos da utilização dos módulos a testar
  • 25. Testes Unitários com .Net já agora experimentem inicializar o array com ● -1, -2 e -3 e vejam se continua a funcionar...
  • 26. Testes Unitários em Progress ProUnit ● vitorsilvadownloadslibsprounit – Punit ● vitorsilvadownloadslibspunit –
  • 27. Testes Unitários em Progress desenvolver o mesmo teste com uma das ● frameworks indicada
  • 28. Objectivos identificar diferentes tipos de testes ● descrever conceito de teste unitário ● perceber vantagens de utilização de testes ● unitários conhecer estrutura de testes (test-fixtures ou ● test-suites) conhecer ferramentas disponiveis para .net e ● progress
  • 29. Objectivos saber criar testes em .net ● saber criar testes em progress ●