SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Curso de Testes Automatizados
          Unidade IV
        Boas Praticas
Agenda
●   Testes de Software
●   Testes Funcionais
●   Automação de Teste Funcionais
●   Selenium
●   Exemplos
●   Exercícios
Testes de Software
●   Defininições
    ●   Atividade que tem como objetivo verificar se o software
        construido está de acordo com sua especificação e
        atende as expectativas do usuario.
    ●   É uma investigação conduzida para fornecer os
        interessados informações sobre a qualidade do produto
        ou serviço em teste.
    ●   Processo de validação e verificação de que um
        programa de software (aplicativo ou produto).
        –   Cumpre com os requisitos que o orientaram na concepção e
            desenvolvimento
        –   Funciona conforme esperado
Aumentando a Qualidade
            ●   Ao realizarmos testes durante
                o desenvolvimento de software
                adicionamos valor ao produto,
                uma vez que o teste
                corretamente executado tende
                a descobrir defeitos, que
                devem ser corrigidos,
                aumentando assim a qualidade
                e confiabilidade de um sistema.
Tipos de Testes
●   Teste de Unidade
    ●   Teste a menor unidade possível do software
●   Teste de Integração
    ●   Teste de vários componentes dependentes
●   Teste Funcionais
    ●   Verifica se as especificações funcionais estão corretamente implementadas
●   Teste de Desempenho
    ●   Pode verificar se o desempenho do Software está dentro do aceitável
●   Teste de Estresse
    ●   Verifica funcionamento sobre condição anormal de demanda.
●   Teste de Usabilidade
    ●   Verifica se o software é adequado ao uso
Tipo de Testes
●   Teste de Aceitação
    ●   Teste realizado pelo usario para decidir sobre a aceitação do
        produto
●   Teste de Segurança
    ●   Verificar nível de segurança
●   Teste de Regressão
    ●   Mostrar que o software continua funcionando após alguma
        alteração
●   Teste de Instalação
    ●   Verifica se os procedimentos de instalação são corretos e
        bem documentados
Tipo de Testes
●   Teste Alfa
    ●   Liberação do produto para pequenos grupos de
        usuário em um ambiente controlado
●   Teste Beta
    ●   Ambiente não controlado
Testes Funcionais
●   O teste funcional é um teste para avaliar o
    quanto o comportamento observado do
    software está em conformidade com as
    especificações Isso significa que esse teste é
    baseado na análise da especificação de
    funcionalidades do software testado
Engenharia de Software
●   Princípios
●   Planejamento dos Testes
●   Granularidade dos Testes
●   Abordagens de Teste
Princípios
●    Princípio 1: Testes demonstram a presença de
    defeitos, não a ausência.
●   Princípio 2: Teste exaustivo é impossível.
●   Princípio 3: A atividade de teste deve começar o
    mais cedo possível.
●   Princípio 4: Defeitos tendem a estar agrupados.
●   Princípio 5: O paradoxo do pesticida
●   Princípio 6: Testes dependem do contexto.
●   Princípio 7: A ilusão da ausência de falhas.
Princípio 1
                                   ●   A principal finalidade do teste é
                                       detectar falhas de software de
                                       modo que os defeitos poção ser
                                       descobertos e corrigidos. Teste
                                       não pode estabelecer que um
                                       produto funciona corretamente
                                       em todas as condições, mas só
                                       pode demonstrar que ela não
                                       funciona adequadamente em
"Os testes podem apenas mostrar        condições específicas.
a presença de erros, não sua
ausência", Dijkstra, et al. 1972
Princípio 2
●   Teste exaustivo é impossível, Testar todos os
    valores possíveis para todas as entradas,
    efetuando todas as formas de combinação e
    levando em conta diferentes precondições é
    geralmente impossível.
●   Na prática, na maioria das vezes os softwares
    requerem números astronomicamente altos de
    casos de testes. Assim, em vez do teste
    exaustivo, o testador deve levar em conta os
    riscos e prioridades do sistema sob teste para
    focar os casos dos testes.
Princípio 3
●   A atividade de teste deve começar o mais
    cedo possível. E deve ser focado em objetivos
    definidos.
Princípio 4
●   Defeitos tendem a estar agrupados.
    Geralmente a maioria dos defeitos são
    encontrados em algumas partes do software
    sob teste, ou seja, é muito pouco provável que
    os defeitos estejam uniformemente distribuídos
    pelo software
Princípio 5
●   O paradoxo do pesticida Pode ocorrer de um
    mesmo conjunto de testes que são repetidos várias
    vezes não encontrarem novos defeitos após um
    determinado momento.
●   Para superar este “paradoxo do pesticida”, os casos
    de testes necessitam ser frequentemente revisados
    e atualizados.
●   Um conjunto de testes novo e diferente precisa ser
    escrito para exercitar diferentes partes do software
    ou sistema com objetivo de aumentar a
    possibilidade de encontrar mais falhas.
Princípio 6
●   Testes dependem do contexto. Os testes
    devem ser adaptados aos riscos e ambientes
    inerentes da aplicação.
●   Softwares de segurança crítica, como por
    exemplo o do computador de bordo de
    aeronaves, são testados diferentemente de
    softwares do comércio eletrônico
Princípio 7
●    A ilusão da ausência de falhas. Encontrar e
    consertar defeitos não ajuda se o sistema
    construído não atende às expectativas e
    necessidades dos usuários.
Planejamento dos Testes
●   Os testes devem ser planejados com base no objetivo
    principal que é revelar a existência de defeitos
●   O Desenho de dos casos de testes e a preparação dos dados
    de teste constituem atividades fundamentais do testador.
●   Um caso de teste é constituído por um conjunto de dados de
    entrada, condições de execução de uma ou mais operações e
    resultados esperados ou dados de saída, desenvolvidos com
    um objectivo particular.
●   É preciso determinar quais os testes mais importantes devem
    ser executados
Planejamento dos Testes
●   Principais técnicas para implementar casos de
    testes.
    ●   Partição de equivalência
        –   Divide o domínio da entrada em categorias de dados
        –   Cada categoria agrupa os dados que possuem as
            mesma categoria.
    ●   Analise do valor Limite
        –   Os casos de testes são escolhidos próximos ou na
            fronteiras dos domínios da entrada.
        –   Boa parte das falhas tendem a se concentrar próximo a
            esses valores
Granularidade dos Testes
●   Devido a complexidade do sistema as atividades de
    teste devem ser feitas em diferentes estágios.
Abordagens de Teste
●   Testes Black Box ou Testes Funcionais e Testes
    White Box ou Testes Estruturais representam as
    principais abordagens.
●   A abordagem funcional
    ●   Melhor aplicada a componentes do sistema
    ●   Realizada por equipe de testes
●   Abordagem Estrutural
    ●   Melhor aplicada a componentes individuais ou
        coleções de componentes dependentes
    ●   Realizada pela equipe de desenvolvimento
Testes Manuais vs Testes
      Automáticos
Testes Manuais vs Testes
                 Automáticos
●   Teste Manual
    ●   Baseado em casos e procedimentos de testes
    ●   Em geral são cansativos e de difícil repetição
●   Teste Automatizado
    ●   Baseado em casos e procedimentos de testes
    ●   Exige maior esforço para implementar
    ●   Em geral são mais fáceis de executar e repeti-los
Testes Manuais vs Testes
               Automáticos
●   Antes de decidir em automatizar ou não os
    testes, é preciso analisar a aplicação testada e
    quais testes serão construídos
●   A principal razão para automação dos testes é
    a necessidade de reexecução dos mesmos.
Testes Manuais vs Testes
               Automáticos
●   A automação geralmente demanda bem mais
    esforço que sua execução manual.
●   Em determinadas situações, automatizar é a
    melhor maneira de economizar tempo e
    dinheiro.
●   Contudo, nem sempre é vantajoso automatizar
    os testes. Existem situações em que realizar os
    testes manualmente é mais adequado.
Testes Manuais vs Testes
                 Automáticos
●   Recomendações
    ●   A identificação, seleção e desenho dos casos de
        testes funcionais devem ser feitos por um testador
        que domine o domínio da aplicação.
    ●   O automatizador de testes pode ser ou não um
        testador, devendo sempre ter habilidades em
        programação.
    ●   A habilidade do automatizador ditará a qualidade da
        automação, mas será a habilidade do testador quem
        ditará a eficácia dos testes realizados.
Automatização da Atividade de
           Teste
Automatização da Atividade de
                   Teste
●   Identificação
    ●   O testador determinará o que será testado
        identificando as condições de teste (itens ou
        eventos) que precisam ser verificados por cada
        teste.
Automatização da Atividade de
                   Teste
●   Desenho
    ●   O desenho dos casos de teste determinará como
        as condições de testes serão testadas.
Automatização da Atividade de
                   Teste
●   Construção
    ●   Nesta atividade os casos de teste são
        transformados em scripts de teste que quando
        utilizados durante uma execução manual do teste,
        é também chamado de procedimento de teste
Automatização da Atividade de
                   Teste
●   Execução
    ●   Nesta atividade o sistema é executado utilizando os
        scripts de teste. Para testes manuais, esta fase
        pode consistir de testadores a seguirem as
        instruções existentes em um procedimento de
        teste.
Automatização da Atividade de
                   Teste
●   Comparação
    ●   Os resultados obtidos do sistema sob testes são
        usados para determinação do resultado do teste.
        Existem dois possíveis resultados: Sucesso ou
        Falha.
Selenium
●   O Selenium é um conjunto de ferramentas
    OpenSource que pode ser usada para criação de
    testes funcionais automatizados para aplicações
    Web.
●   Principais vantagens
    ●   Possibilidade de executar os testes em qualquer
        navegador com suporte a JavaScript .
    ●   Ferramentas que compõem o Selenium provêm um
        rico conjunto de funções específicas para a
        implementação de testes.
    ●   Gera Scripts para Java, C#, Pytho e Ruby
Ferramentas Selenium
●   Atualmente as principais ferramentas que compõem o
    Selenium são: Selenium-IDE, Selenium RC, Selenium
    WebDriver e Selenium-GRID.
●   O Selenium-IDE
    ●   É um ambiente de desenvolvimento integrado para construção de
        casos de testes. Ele opera como plug-in do Firefox e provê
        interfaces amigáveis para o desenvolvimento e execução de suítes
        de testes (conjunto de testes).
    ●    É uma ferramenta do tipo record-and-playback, ou seja, ela captura
        as ações executadas pelo testador e gera um script que permite a
        reexecução das ações feitas, e assim automatizando o teste.
Ferramentas Selenium
●   Selenium RC (Remote-Control).
    ●   Possibilita uma maior flexibilidade ao testador,
        permitindo a construção de lógicas de teste mais
        complexas, a partir do uso de uma linguagem de
        programação.
    ●   Para isso, ele provê uma API (Application
        Programming Interface) e bibliotecas para cada
        uma das linguagens suportadas: HTML, Java, C#,,
        Python, e Ruby.
Ferramentas Selenium
●   Selenium WebDriver
    ●   Pode chamar o navegador atraves de driver nativo
        da maquina local ou remota
    ●   É o substituto do Selenium RC
    ●   A inclusão do API WebDriver foi declarda pela
        equioe do Selenium a mas recente grande
        mudança.
    ●   “A chamada de um browser nativamente como um
        usuário local ou em uma máquina remota usando o
        Servidor Selenium marca um salto em frente em
        termos de automação browser”.
Ferramentas Selenium
●   Selenium-Grid
    ●   Permite distribuir os testes em múltiplas máquinas,
        reduzindo assim o tempo gasto na execução de
        uma suíte de testes. Ele é ideal para escalonar
        grandes suítes de testes ou suítes de testes que
        devem ser executadas em múltiplos ambientes.
    ●   O Selenium-Grid atua executando múltiplas
        instâncias do Selenium-RC em paralelo de forma
        transparente, fazendo com que os testes não
        precisem se preocupar com a infraestrutura
        utilizada.
Introdução a API
●   Selenium permite realizar uma série de ações
    necessárias para execução de testes em
    páginas web, tais como, entrar com valores em
    campos da página, selecionar itens de uma
    lista de opções, clicar em botões, clicar em
    links e realizar asserções com base nos
    resultados exibidos da página.
●   Os comandos que realizam essas ações são
    divididas em três grupos, veremos a seguir:
Comandos
●   Actions
    ●   São comandos que geralmente causam uma
        mudança no estado da aplicação. Eles
        representam operações realizadas pelo usuário
        durante a execução de um sistema web, tais como
        o comando “click” que indica um clique em um
        determinado botão ou link. A maioria desses
        comandos pode conter o sufixo “AndWait”, o que
        indica que a ação fez uma chamada ao servidor e
        que o Selenium deve esperar a página carregar
        para executar o próximo passo.
Comandos
●   Accessors
    ●   Examinam o estado da aplicação e armazenam o
        resultado em variáveis, como o comando
        “storeTitle” que armazena o titulo da página em
        uma variável determinada por parâmetro.
Comandos
●   Assertions
    ●   São como os Accessors, mas verificaram se o estado da
        aplicação está conforme o esperado. Todas as asserções do
        Selenium podem ser usadas de três modos:
        –   “assert”, “verify” e “waitFor”.
    ●    Para verificar a presença de um certo texto em um
        determinado local, por exemplo, pode-se usar o comando
        “assertText”, “verifyText” ou “waitForText”.
    ●    Com o “assert”, se a verificação falhar o teste para,
        enquanto que com o “verify” a ferramenta acusa a falha mas
        o teste continua executando. Já no modo “waitFor”, que é
        muito útil para testar aplicações com Ajax, o Selenium
        espera o texto aparecer para prosseguir a execução.
Comandos Específicos
●   open: abre uma página usando uma URL que é
    fornecida como parâmetro;
●   click/clickAndWait: executa o clique em um
    botão, link ou imagem;
●   verifyTextPresent/assertTextPresent: verifica
    a presença de um texto em qualquer lugar da
    página;
●   verifyText/assertText: verifica se um texto
    aparece em um determinado local;
Comandos Específicos
●   waitForPageToLoad : pausa uma execução
    do teste até que uma nova página seja
    carregada. Esse comando é chamado
    automaticamente pelos comandos com
    terminação “AndWait”;
●   type: entra com um valor em um determinado
    campo da página;
●   select: seleciona um elemento dentre uma lista
    de opções.
Convenções
●   Quanto aos parâmetros utilizados pelos
    comandos do Selenium, eles tipicamente são:
    ●   i) uma identificação para algum elemento da
        página;
    ●   ii) um texto para verificar se ele aparece na página
        ou para colocá-lo em algum campo da página.
●   O número de parâmetros usados varia de
    acordo com o comando. Alguns exigem dois
    parâmetros, outros exigem somente um, e
    existem aqueles que não utilizam parâmetros.
Exemplo de Script HTML
●   <body>
●   <table cellpadding="1" cellspacing="1" border="1">
●   <thead>
    <tr><td rowspan="1" colspan="3">New Test</td></tr>
    </thead><tbody>
    <tr>
      <td>open</td>
      <td>/</td>
      <td></td>
●   </tr>
●   <tr>
Exemplo de Script HTML
●   <td>clickAndWait</td>
●   <td>link=Plugins</td>
●   <td></td>
●   </tr>
●   <tr>
●   <td>type</td>
●   <td>css=#pluginSearch &gt;
    input[name=&quot;q&quot;]</td>
●   <td>appengine</td>
●   </tr>
Exemplo de Script HTML
●   <td>clickAndWait</td>
      <td>css=input.searchButton</td>
      <td></td>
●   </tr>
●   <tr>
      <td>verifyTextPresent</td>
      <td>Grails AppEngine plugin</td>
●   <tr>
●   <td></td>
●   </tr>
●   </tbody></table></body>
Selenium-IDE
●   Exemplos
●   Exercicio
Livros
Referências
●   Santos Ismayle, Neto, Perdo. Automação de
    testes funcionais com o Selenium. 2008
●   Correia, Simone Silva Alberto.Tecnicas de
    Contrução de Testes Funcionais. 2006
●   Osherove, Roy. The art of unit testing : with
    examples in .NET. 2009
●   Meszaros, Gerard. XUnit test patterns :
    refactoring test code. 2007
Testes Funcionais - Unidade IV

Contenu connexe

Tendances

Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8a34sharm
 
Automated Testing with Agile
Automated Testing with AgileAutomated Testing with Agile
Automated Testing with AgileKen McCorkell
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life CycleUdayakumar Sree
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaFrederico Augusto Do Carmo Moreira
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesSamanta Cicilia
 
Planejamento de testes em um mundo ágil
Planejamento de testes em um mundo ágilPlanejamento de testes em um mundo ágil
Planejamento de testes em um mundo ágilAriane Izac
 
automation testing benefits
automation testing benefitsautomation testing benefits
automation testing benefitsnazeer pasha
 
Test automation principles, terminologies and implementations
Test automation principles, terminologies and implementationsTest automation principles, terminologies and implementations
Test automation principles, terminologies and implementationsSteven Li
 
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...Ankit Prajapati
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentJohn Blum
 
Scrum Testing Methodology
Scrum Testing MethodologyScrum Testing Methodology
Scrum Testing MethodologyGaya1985
 
Automation testing & Unit testing
Automation testing & Unit testingAutomation testing & Unit testing
Automation testing & Unit testingKapil Rajpurohit
 
4 Major Advantages of API Testing
4 Major Advantages of API Testing4 Major Advantages of API Testing
4 Major Advantages of API TestingQASource
 

Tendances (20)

Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8
 
Test Automation
Test AutomationTest Automation
Test Automation
 
Automated Testing with Agile
Automated Testing with AgileAutomated Testing with Agile
Automated Testing with Agile
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life Cycle
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
 
Introduction to Software Test Automation
Introduction to Software Test AutomationIntroduction to Software Test Automation
Introduction to Software Test Automation
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
Planejamento de testes em um mundo ágil
Planejamento de testes em um mundo ágilPlanejamento de testes em um mundo ágil
Planejamento de testes em um mundo ágil
 
automation testing benefits
automation testing benefitsautomation testing benefits
automation testing benefits
 
Test automation principles, terminologies and implementations
Test automation principles, terminologies and implementationsTest automation principles, terminologies and implementations
Test automation principles, terminologies and implementations
 
Automation Testing
Automation TestingAutomation Testing
Automation Testing
 
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
Software Testing - Part 1 (Techniques, Types, Levels, Methods, STLC, Bug Life...
 
Test Automation Pyramid
Test Automation PyramidTest Automation Pyramid
Test Automation Pyramid
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Scrum Testing Methodology
Scrum Testing MethodologyScrum Testing Methodology
Scrum Testing Methodology
 
Automation testing & Unit testing
Automation testing & Unit testingAutomation testing & Unit testing
Automation testing & Unit testing
 
4 Major Advantages of API Testing
4 Major Advantages of API Testing4 Major Advantages of API Testing
4 Major Advantages of API Testing
 

En vedette

Avaliação funcional
Avaliação funcionalAvaliação funcional
Avaliação funcionalHugo Almeida
 
Avaliação cinesiológica funcional
Avaliação cinesiológica funcionalAvaliação cinesiológica funcional
Avaliação cinesiológica funcionalFabio Mazzola
 
Avaliação fisioterapêutica i 2012
Avaliação fisioterapêutica i 2012Avaliação fisioterapêutica i 2012
Avaliação fisioterapêutica i 2012Karina Santaella
 
Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...
Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...
Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...Helen Vieira
 
Transtorno de equilíbrio e quedas (1)
Transtorno de equilíbrio e quedas (1)Transtorno de equilíbrio e quedas (1)
Transtorno de equilíbrio e quedas (1)Potencial Empresário
 
Módulo 4 - Aula 4
Módulo 4 - Aula 4Módulo 4 - Aula 4
Módulo 4 - Aula 4agemais
 
Quedas em idosos - Tratamento Fisioterapêutico
Quedas em idosos -  Tratamento FisioterapêuticoQuedas em idosos -  Tratamento Fisioterapêutico
Quedas em idosos - Tratamento FisioterapêuticoNatasha Freitas
 
Fichade avaliação geriatria
Fichade avaliação geriatriaFichade avaliação geriatria
Fichade avaliação geriatriaLindalva Araujo
 
Aula18 Teste Software
Aula18 Teste SoftwareAula18 Teste Software
Aula18 Teste SoftwareMarco Silva
 
Avaliação postural 2012
Avaliação postural 2012Avaliação postural 2012
Avaliação postural 2012PauloRPSouza
 
Slides dos Curso de Avaliação em Fisioterapia
Slides dos Curso de Avaliação em FisioterapiaSlides dos Curso de Avaliação em Fisioterapia
Slides dos Curso de Avaliação em Fisioterapiaphpalacio
 
Biofísica do ultrassom e laser
Biofísica do ultrassom e laserBiofísica do ultrassom e laser
Biofísica do ultrassom e laserRenan Malaquias
 
Exercício Físico na Prevenção de Quedas em Idosos
Exercício Físico na Prevenção de Quedas em Idosos Exercício Físico na Prevenção de Quedas em Idosos
Exercício Físico na Prevenção de Quedas em Idosos Paulo Bento
 

En vedette (20)

Avaliação funcional
Avaliação funcionalAvaliação funcional
Avaliação funcional
 
Avaliação cinesiológica funcional
Avaliação cinesiológica funcionalAvaliação cinesiológica funcional
Avaliação cinesiológica funcional
 
Avaliação fisioterapêutica i 2012
Avaliação fisioterapêutica i 2012Avaliação fisioterapêutica i 2012
Avaliação fisioterapêutica i 2012
 
Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...
Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...
Fisioterapia aplicada a traumato ortopedia e desporto i cap 8 patologias da c...
 
Fisioterapia Em Traumatofuncional
Fisioterapia Em TraumatofuncionalFisioterapia Em Traumatofuncional
Fisioterapia Em Traumatofuncional
 
Transtorno de equilíbrio e quedas (1)
Transtorno de equilíbrio e quedas (1)Transtorno de equilíbrio e quedas (1)
Transtorno de equilíbrio e quedas (1)
 
Módulo 4 - Aula 4
Módulo 4 - Aula 4Módulo 4 - Aula 4
Módulo 4 - Aula 4
 
Sindrome da fragilidade UERJ - 2013
Sindrome da fragilidade   UERJ - 2013Sindrome da fragilidade   UERJ - 2013
Sindrome da fragilidade UERJ - 2013
 
Quedas em idosos - Tratamento Fisioterapêutico
Quedas em idosos -  Tratamento FisioterapêuticoQuedas em idosos -  Tratamento Fisioterapêutico
Quedas em idosos - Tratamento Fisioterapêutico
 
Teste Regressão
Teste RegressãoTeste Regressão
Teste Regressão
 
Manual laser htm compact
Manual laser htm compactManual laser htm compact
Manual laser htm compact
 
Fichade avaliação geriatria
Fichade avaliação geriatriaFichade avaliação geriatria
Fichade avaliação geriatria
 
Aula18 Teste Software
Aula18 Teste SoftwareAula18 Teste Software
Aula18 Teste Software
 
Avaliação de Interface
Avaliação de InterfaceAvaliação de Interface
Avaliação de Interface
 
Avaliação postural 2012
Avaliação postural 2012Avaliação postural 2012
Avaliação postural 2012
 
Laser Fisioterápico
Laser FisioterápicoLaser Fisioterápico
Laser Fisioterápico
 
Slides dos Curso de Avaliação em Fisioterapia
Slides dos Curso de Avaliação em FisioterapiaSlides dos Curso de Avaliação em Fisioterapia
Slides dos Curso de Avaliação em Fisioterapia
 
Biofísica do ultrassom e laser
Biofísica do ultrassom e laserBiofísica do ultrassom e laser
Biofísica do ultrassom e laser
 
Exercício Físico na Prevenção de Quedas em Idosos
Exercício Físico na Prevenção de Quedas em Idosos Exercício Físico na Prevenção de Quedas em Idosos
Exercício Físico na Prevenção de Quedas em Idosos
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 

Similaire à Testes Funcionais - Unidade IV

Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POAAline Zanin
 
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.pptxRoberto Nunes
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Qualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesQualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesJoaquim Lopes Júnior
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
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áticaFabrício Campos
 
Testes unitários x unit
Testes unitários   x unitTestes unitários   x unit
Testes unitários x unitLucas Marques
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Vanilton Pinheiro
 
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
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 

Similaire à Testes Funcionais - Unidade IV (20)

Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 
Eng de testes
Eng de testesEng de testes
Eng de testes
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
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
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Qualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesQualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testes
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
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
 
Testes unitários x unit
Testes unitários   x unitTestes unitários   x unit
Testes unitários x unit
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Eng de testes aula2
Eng de testes   aula2Eng de testes   aula2
Eng de testes aula2
 
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...
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 

Testes Funcionais - Unidade IV

  • 1. Curso de Testes Automatizados Unidade IV Boas Praticas
  • 2. Agenda ● Testes de Software ● Testes Funcionais ● Automação de Teste Funcionais ● Selenium ● Exemplos ● Exercícios
  • 3. Testes de Software ● Defininições ● Atividade que tem como objetivo verificar se o software construido está de acordo com sua especificação e atende as expectativas do usuario. ● É uma investigação conduzida para fornecer os interessados informações sobre a qualidade do produto ou serviço em teste. ● Processo de validação e verificação de que um programa de software (aplicativo ou produto). – Cumpre com os requisitos que o orientaram na concepção e desenvolvimento – Funciona conforme esperado
  • 4. Aumentando a Qualidade ● Ao realizarmos testes durante o desenvolvimento de software adicionamos valor ao produto, uma vez que o teste corretamente executado tende a descobrir defeitos, que devem ser corrigidos, aumentando assim a qualidade e confiabilidade de um sistema.
  • 5. Tipos de Testes ● Teste de Unidade ● Teste a menor unidade possível do software ● Teste de Integração ● Teste de vários componentes dependentes ● Teste Funcionais ● Verifica se as especificações funcionais estão corretamente implementadas ● Teste de Desempenho ● Pode verificar se o desempenho do Software está dentro do aceitável ● Teste de Estresse ● Verifica funcionamento sobre condição anormal de demanda. ● Teste de Usabilidade ● Verifica se o software é adequado ao uso
  • 6. Tipo de Testes ● Teste de Aceitação ● Teste realizado pelo usario para decidir sobre a aceitação do produto ● Teste de Segurança ● Verificar nível de segurança ● Teste de Regressão ● Mostrar que o software continua funcionando após alguma alteração ● Teste de Instalação ● Verifica se os procedimentos de instalação são corretos e bem documentados
  • 7. Tipo de Testes ● Teste Alfa ● Liberação do produto para pequenos grupos de usuário em um ambiente controlado ● Teste Beta ● Ambiente não controlado
  • 8. Testes Funcionais ● O teste funcional é um teste para avaliar o quanto o comportamento observado do software está em conformidade com as especificações Isso significa que esse teste é baseado na análise da especificação de funcionalidades do software testado
  • 9. Engenharia de Software ● Princípios ● Planejamento dos Testes ● Granularidade dos Testes ● Abordagens de Teste
  • 10. Princípios ● Princípio 1: Testes demonstram a presença de defeitos, não a ausência. ● Princípio 2: Teste exaustivo é impossível. ● Princípio 3: A atividade de teste deve começar o mais cedo possível. ● Princípio 4: Defeitos tendem a estar agrupados. ● Princípio 5: O paradoxo do pesticida ● Princípio 6: Testes dependem do contexto. ● Princípio 7: A ilusão da ausência de falhas.
  • 11. Princípio 1 ● A principal finalidade do teste é detectar falhas de software de modo que os defeitos poção ser descobertos e corrigidos. Teste não pode estabelecer que um produto funciona corretamente em todas as condições, mas só pode demonstrar que ela não funciona adequadamente em "Os testes podem apenas mostrar condições específicas. a presença de erros, não sua ausência", Dijkstra, et al. 1972
  • 12. Princípio 2 ● Teste exaustivo é impossível, Testar todos os valores possíveis para todas as entradas, efetuando todas as formas de combinação e levando em conta diferentes precondições é geralmente impossível. ● Na prática, na maioria das vezes os softwares requerem números astronomicamente altos de casos de testes. Assim, em vez do teste exaustivo, o testador deve levar em conta os riscos e prioridades do sistema sob teste para focar os casos dos testes.
  • 13. Princípio 3 ● A atividade de teste deve começar o mais cedo possível. E deve ser focado em objetivos definidos.
  • 14. Princípio 4 ● Defeitos tendem a estar agrupados. Geralmente a maioria dos defeitos são encontrados em algumas partes do software sob teste, ou seja, é muito pouco provável que os defeitos estejam uniformemente distribuídos pelo software
  • 15. Princípio 5 ● O paradoxo do pesticida Pode ocorrer de um mesmo conjunto de testes que são repetidos várias vezes não encontrarem novos defeitos após um determinado momento. ● Para superar este “paradoxo do pesticida”, os casos de testes necessitam ser frequentemente revisados e atualizados. ● Um conjunto de testes novo e diferente precisa ser escrito para exercitar diferentes partes do software ou sistema com objetivo de aumentar a possibilidade de encontrar mais falhas.
  • 16. Princípio 6 ● Testes dependem do contexto. Os testes devem ser adaptados aos riscos e ambientes inerentes da aplicação. ● Softwares de segurança crítica, como por exemplo o do computador de bordo de aeronaves, são testados diferentemente de softwares do comércio eletrônico
  • 17. Princípio 7 ● A ilusão da ausência de falhas. Encontrar e consertar defeitos não ajuda se o sistema construído não atende às expectativas e necessidades dos usuários.
  • 18. Planejamento dos Testes ● Os testes devem ser planejados com base no objetivo principal que é revelar a existência de defeitos ● O Desenho de dos casos de testes e a preparação dos dados de teste constituem atividades fundamentais do testador. ● Um caso de teste é constituído por um conjunto de dados de entrada, condições de execução de uma ou mais operações e resultados esperados ou dados de saída, desenvolvidos com um objectivo particular. ● É preciso determinar quais os testes mais importantes devem ser executados
  • 19. Planejamento dos Testes ● Principais técnicas para implementar casos de testes. ● Partição de equivalência – Divide o domínio da entrada em categorias de dados – Cada categoria agrupa os dados que possuem as mesma categoria. ● Analise do valor Limite – Os casos de testes são escolhidos próximos ou na fronteiras dos domínios da entrada. – Boa parte das falhas tendem a se concentrar próximo a esses valores
  • 20. Granularidade dos Testes ● Devido a complexidade do sistema as atividades de teste devem ser feitas em diferentes estágios.
  • 21. Abordagens de Teste ● Testes Black Box ou Testes Funcionais e Testes White Box ou Testes Estruturais representam as principais abordagens. ● A abordagem funcional ● Melhor aplicada a componentes do sistema ● Realizada por equipe de testes ● Abordagem Estrutural ● Melhor aplicada a componentes individuais ou coleções de componentes dependentes ● Realizada pela equipe de desenvolvimento
  • 22. Testes Manuais vs Testes Automáticos
  • 23. Testes Manuais vs Testes Automáticos ● Teste Manual ● Baseado em casos e procedimentos de testes ● Em geral são cansativos e de difícil repetição ● Teste Automatizado ● Baseado em casos e procedimentos de testes ● Exige maior esforço para implementar ● Em geral são mais fáceis de executar e repeti-los
  • 24. Testes Manuais vs Testes Automáticos ● Antes de decidir em automatizar ou não os testes, é preciso analisar a aplicação testada e quais testes serão construídos ● A principal razão para automação dos testes é a necessidade de reexecução dos mesmos.
  • 25. Testes Manuais vs Testes Automáticos ● A automação geralmente demanda bem mais esforço que sua execução manual. ● Em determinadas situações, automatizar é a melhor maneira de economizar tempo e dinheiro. ● Contudo, nem sempre é vantajoso automatizar os testes. Existem situações em que realizar os testes manualmente é mais adequado.
  • 26. Testes Manuais vs Testes Automáticos ● Recomendações ● A identificação, seleção e desenho dos casos de testes funcionais devem ser feitos por um testador que domine o domínio da aplicação. ● O automatizador de testes pode ser ou não um testador, devendo sempre ter habilidades em programação. ● A habilidade do automatizador ditará a qualidade da automação, mas será a habilidade do testador quem ditará a eficácia dos testes realizados.
  • 28. Automatização da Atividade de Teste ● Identificação ● O testador determinará o que será testado identificando as condições de teste (itens ou eventos) que precisam ser verificados por cada teste.
  • 29. Automatização da Atividade de Teste ● Desenho ● O desenho dos casos de teste determinará como as condições de testes serão testadas.
  • 30. Automatização da Atividade de Teste ● Construção ● Nesta atividade os casos de teste são transformados em scripts de teste que quando utilizados durante uma execução manual do teste, é também chamado de procedimento de teste
  • 31. Automatização da Atividade de Teste ● Execução ● Nesta atividade o sistema é executado utilizando os scripts de teste. Para testes manuais, esta fase pode consistir de testadores a seguirem as instruções existentes em um procedimento de teste.
  • 32. Automatização da Atividade de Teste ● Comparação ● Os resultados obtidos do sistema sob testes são usados para determinação do resultado do teste. Existem dois possíveis resultados: Sucesso ou Falha.
  • 33. Selenium ● O Selenium é um conjunto de ferramentas OpenSource que pode ser usada para criação de testes funcionais automatizados para aplicações Web. ● Principais vantagens ● Possibilidade de executar os testes em qualquer navegador com suporte a JavaScript . ● Ferramentas que compõem o Selenium provêm um rico conjunto de funções específicas para a implementação de testes. ● Gera Scripts para Java, C#, Pytho e Ruby
  • 34. Ferramentas Selenium ● Atualmente as principais ferramentas que compõem o Selenium são: Selenium-IDE, Selenium RC, Selenium WebDriver e Selenium-GRID. ● O Selenium-IDE ● É um ambiente de desenvolvimento integrado para construção de casos de testes. Ele opera como plug-in do Firefox e provê interfaces amigáveis para o desenvolvimento e execução de suítes de testes (conjunto de testes). ● É uma ferramenta do tipo record-and-playback, ou seja, ela captura as ações executadas pelo testador e gera um script que permite a reexecução das ações feitas, e assim automatizando o teste.
  • 35. Ferramentas Selenium ● Selenium RC (Remote-Control). ● Possibilita uma maior flexibilidade ao testador, permitindo a construção de lógicas de teste mais complexas, a partir do uso de uma linguagem de programação. ● Para isso, ele provê uma API (Application Programming Interface) e bibliotecas para cada uma das linguagens suportadas: HTML, Java, C#,, Python, e Ruby.
  • 36. Ferramentas Selenium ● Selenium WebDriver ● Pode chamar o navegador atraves de driver nativo da maquina local ou remota ● É o substituto do Selenium RC ● A inclusão do API WebDriver foi declarda pela equioe do Selenium a mas recente grande mudança. ● “A chamada de um browser nativamente como um usuário local ou em uma máquina remota usando o Servidor Selenium marca um salto em frente em termos de automação browser”.
  • 37. Ferramentas Selenium ● Selenium-Grid ● Permite distribuir os testes em múltiplas máquinas, reduzindo assim o tempo gasto na execução de uma suíte de testes. Ele é ideal para escalonar grandes suítes de testes ou suítes de testes que devem ser executadas em múltiplos ambientes. ● O Selenium-Grid atua executando múltiplas instâncias do Selenium-RC em paralelo de forma transparente, fazendo com que os testes não precisem se preocupar com a infraestrutura utilizada.
  • 38. Introdução a API ● Selenium permite realizar uma série de ações necessárias para execução de testes em páginas web, tais como, entrar com valores em campos da página, selecionar itens de uma lista de opções, clicar em botões, clicar em links e realizar asserções com base nos resultados exibidos da página. ● Os comandos que realizam essas ações são divididas em três grupos, veremos a seguir:
  • 39. Comandos ● Actions ● São comandos que geralmente causam uma mudança no estado da aplicação. Eles representam operações realizadas pelo usuário durante a execução de um sistema web, tais como o comando “click” que indica um clique em um determinado botão ou link. A maioria desses comandos pode conter o sufixo “AndWait”, o que indica que a ação fez uma chamada ao servidor e que o Selenium deve esperar a página carregar para executar o próximo passo.
  • 40. Comandos ● Accessors ● Examinam o estado da aplicação e armazenam o resultado em variáveis, como o comando “storeTitle” que armazena o titulo da página em uma variável determinada por parâmetro.
  • 41. Comandos ● Assertions ● São como os Accessors, mas verificaram se o estado da aplicação está conforme o esperado. Todas as asserções do Selenium podem ser usadas de três modos: – “assert”, “verify” e “waitFor”. ● Para verificar a presença de um certo texto em um determinado local, por exemplo, pode-se usar o comando “assertText”, “verifyText” ou “waitForText”. ● Com o “assert”, se a verificação falhar o teste para, enquanto que com o “verify” a ferramenta acusa a falha mas o teste continua executando. Já no modo “waitFor”, que é muito útil para testar aplicações com Ajax, o Selenium espera o texto aparecer para prosseguir a execução.
  • 42. Comandos Específicos ● open: abre uma página usando uma URL que é fornecida como parâmetro; ● click/clickAndWait: executa o clique em um botão, link ou imagem; ● verifyTextPresent/assertTextPresent: verifica a presença de um texto em qualquer lugar da página; ● verifyText/assertText: verifica se um texto aparece em um determinado local;
  • 43. Comandos Específicos ● waitForPageToLoad : pausa uma execução do teste até que uma nova página seja carregada. Esse comando é chamado automaticamente pelos comandos com terminação “AndWait”; ● type: entra com um valor em um determinado campo da página; ● select: seleciona um elemento dentre uma lista de opções.
  • 44. Convenções ● Quanto aos parâmetros utilizados pelos comandos do Selenium, eles tipicamente são: ● i) uma identificação para algum elemento da página; ● ii) um texto para verificar se ele aparece na página ou para colocá-lo em algum campo da página. ● O número de parâmetros usados varia de acordo com o comando. Alguns exigem dois parâmetros, outros exigem somente um, e existem aqueles que não utilizam parâmetros.
  • 45. Exemplo de Script HTML ● <body> ● <table cellpadding="1" cellspacing="1" border="1"> ● <thead> <tr><td rowspan="1" colspan="3">New Test</td></tr> </thead><tbody> <tr> <td>open</td> <td>/</td> <td></td> ● </tr> ● <tr>
  • 46. Exemplo de Script HTML ● <td>clickAndWait</td> ● <td>link=Plugins</td> ● <td></td> ● </tr> ● <tr> ● <td>type</td> ● <td>css=#pluginSearch &gt; input[name=&quot;q&quot;]</td> ● <td>appengine</td> ● </tr>
  • 47. Exemplo de Script HTML ● <td>clickAndWait</td> <td>css=input.searchButton</td> <td></td> ● </tr> ● <tr> <td>verifyTextPresent</td> <td>Grails AppEngine plugin</td> ● <tr> ● <td></td> ● </tr> ● </tbody></table></body>
  • 48. Selenium-IDE ● Exemplos ● Exercicio
  • 50. Referências ● Santos Ismayle, Neto, Perdo. Automação de testes funcionais com o Selenium. 2008 ● Correia, Simone Silva Alberto.Tecnicas de Contrução de Testes Funcionais. 2006 ● Osherove, Roy. The art of unit testing : with examples in .NET. 2009 ● Meszaros, Gerard. XUnit test patterns : refactoring test code. 2007