Your SlideShare is downloading. ×
Testando aplicações DataSnap
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Testando aplicações DataSnap

9,655
views

Published on

A nova arquitetura do DataSnap permite disponibilizar regras de negócios através de Server Methods, esta arquitetura facilita a integração com frameworks de testes, com isso podemos automatizar os …

A nova arquitetura do DataSnap permite disponibilizar regras de negócios através de Server Methods, esta arquitetura facilita a integração com frameworks de testes, com isso podemos automatizar os testes a cada nova versão dos servidores DataSnap, durante esta apresentação vamos aprender como implementar testes em projetos DataSnap.

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,655
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
151
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Server connectionsMiddle-tier connectivity solutionSingle client side driver (100% Object Pascal)DB vendor clients installed on middle tierEnables middle tier connection, command caching.Easy to create new transports (ie Http(s), SSL/TLS, etc)Server Method Memory ManagementTDSServerClass.LifeCycle property controls the creation and destruction of server class instancesTDSLifeCycle.Server. Singleton. All clients share single server class instance.TDSLifeCycle.Session. Statefull. Each client has its own server class instance.TDSLifeCycle.Invocation. Stateless. New server class instance is created for every invocation of a server method.TDSServerClass events OnCreateInstance and OnDestroyInstance can be used for custom server class instance lifecycle managementServer methodsRemote method invocation for DelphiSimple. No IDL, just regular Delphi methodsPublic methods on any TPersistent class including TServerModule and TRemoteDataModule
  • TSQLServerMethod componentSimilar to TSQLStoredProcAllows server method to be used like a stored procStrongly typed client classesClient proxy generator that provides strongly typed classes to call server methodsTDSProviderConnection componentDS2009 replacement for TDCOMConnection, TSocketConnection, etc
  • Os testes de caixa-preta mais comuns são o teste funcional e o teste de aceitação, que é semelhante ao teste funcional, a diferença é que esse teste é executado diretamente pelo cliente. Há também os testes mistos, que tanto são de caixa-branca quanto de caixa-preta, que são os testes de regressão e de integração.Os testes de regressão devem ser realizados sempre que o sistema sofrer alterações consideráveis que podem gerar bugs, geralmente é necessário re-executar todo o roteiro de teste criado para o teste funcional, desde que o sistema não seja muito grande.O teste de integração é importante para garantir que os dados não se perdem entre a camada de apresentação e a camada de negócio. Para realizar estes testes é necessário que o testador verifique tanto os documento de design de baixo nível como de alto nível.Há também um teste muito importante, que é o teste de cobertura ou estrutural, este teste tem a finalidade de verificar se o roteiro de teste executado, tanto nos testes de unidade quanto nos testes funcionais, estão abrangendo 100% do código implementado. Há ferramentas que auxiliam na execução destes testes, como por exemplo, um plugin para o Eclipse IDE, o EmmaCoverage.
  • Transcript

    • 1. Testando Aplicações DataSnap
      Andreano Lanusse
      Technical Lead Evangelist, Developer Relations
    • 2. Agenda
      Arquitetura
      Melhores Práticas
      Testes baseados em Teste Unitário
      Demo
    • 3. Multicamada - Conceito
      Divisão da aplicação em N camadas, geralmente são divididas em:
      Banco de dados
      Regras de Negócios (Servidor de Aplicação)
      Interface Cliente
      Vantagens deste modelo
      Fácil manutenção da aplicação
      Aplicação cliente contém configurações mínimas ou quase zero
      Mínima atualização da aplicação cliente
      Performance distribuída no servidor de banco de dados e de aplicação
      Redução de custo no investimento de hardware
      Alta performance entre Cliente e Servidor de Aplicação, suportando até conexões Dial-Up
    • 4. DataSnap Arquitetura
      DataSnap Server
      Server Methods
      Database Accelerator
      • Middle-tier database driver deployment
      • 5. Connection Pooling
      • 6. Statement, MetaData Caching
      Remote/Server
      Data Modules
      Plain Objects
      Existing Delphi
      RDMs, No-COM
      ServerModules
      Method Parameters:
      • Table readers
      • 7. DB connection
      • 8. Scalar values
      Delphi
      DBX / ADO.NET
      Delphi / C++
      Connection/Session management and RPC dispatching
      JSON/RPC messaging layer
      TCP/IP transport
      Delphi/C++
      DBX Client
      ADO.NET
      ASP/Desktop
    • 9. DataSnap Server
      Transport(socket/http) gerencia a criação e tempo de vida das threads
      ServerClass publica os servermethods para chamada dinãmica dos métodos
      DSServer gerencia a criação e tempo de vida dos transports e server classes
      Object
      Pooling
      Gerenciamento de memória - LyfeCicle
      Server (Singleton)  Todos os clientes compartilham uma única instância da classe servidora.
      Session (Statefull)  Cada cliente tem sua instância da classe no servidor
      Invocation (Stateless)  Novas instâncias de serverclass são criadas para cada chamada de um servermethod.
      Server Module contém servermethods, funciona como um TRemoteDataModule,
      Suporta IAppServer
    • 10. DataSnap Client
      App Cliente
      FILTER
      DBX ADO.NET
      DBXClient
      RESTfull
      Desktop/Web
      SQLServerMethod
      Classes Proxy
      DSProviderConnection
      Classes Proxy e Teste UnitTest
      Server Container
    • 11. Testes - Caixa Preta vs Caixa Branca
      Caixa Preta
      Executados de maneira funcional, onde o testador não tem contado direto com o código do sistema, entende-se o sistema como uma caixa onde ao inserir valores de entrada, retorna valores de saída, geralmente estes testes são realizados por uma equipe específica de teste, que utiliza a especificação dada pelo cliente para fazer o roteiro de casos de teste.
      Caixa Branca
      Realizados diretamente no código e geralmente são feitos pelo implementador do sistema, um exemplo deste tipo de teste são os testes de unidade (unittesting).
    • 12. Testes
      Teste de Unidade  Caixa Branca
      Teste de Integração  Caixa Branca e Preta
      Teste Funcional  Caixa Preta
      Teste de Aceitação  Caixa Preta
      Teste de Regressão  Caixa Branca e Preta
      Teste de Cobertura  Caixa Branca e Preta
      A partir do entendimento mais aprofundado sobre cada tipo de teste, é que pode-se obter uma forma mais prática e técnica de testar cada parte do sistema, a fim de garantir uma maior qualidade do software.
    • 13. DataSnap – Teste de Unidade (UnitTesting)
      Delphi está integrado com Dunit
      Classes Proxy são facilmente integradas a UnitTest
      UnitTest funciona como uma aplicação cliente
      UnitTest em Delphi é a melhor opção, permite testar todos os tipos de retorno
      Você pode criar UnitTest em Java, PHP e outras linguagens, mas estará limitado a testar métodos baseados em JSON (RESTfull)
      Deve ser criado pelo desenvolvedor
    • 14. UnitTest – Dados
      Utilizar dados mais próximos de produção
      Fontes de dados:
      Banco de Dados
      XML
    • 15. Dicas Server Methods e Data Modules
      Server Methods
      Gerar teste unitário com base nas classes proxies
      Adequar os métodos para os testes
      Para cada server methods não necessariamente um método de teste
      Métodos de testes por funcionalidade
      Data Modules
      Envolvem DataSetProvider + SQLQuery, que não se encaixa neste modelo de testes
      Trabalhoso para codificar, tendo que investir muito tempo do desenvolvedor
      Teste Funcional irá cobrir as áreas de testes onde Data Modules são utilizados
    • 16. Build automatizado e Integração Continua
      Delphi e MSBuild
      Extensão .dproj está no formato padrão msbuild
      Múltiplas configurações de build no projeto
      Executado através de linha de comando
      Teste Unitário
      Integrado ao Delphi
      Opção de execução GUI ou linha de comando
      Algumas ferramentas para unificar e automatizar o processo de build
      Final Builder  http://www.finalbuilder.com/
      Hudson  http://wiki.hudson-ci.org/
    • 17. Demo
      Teste Unitário em aplicação DataSnap simples
      Teste Unitário baseado em dados dinâmicos
      Teste Unitário e cenários diversos
      Teste Unitário em aplicações DataSnap complexas
    • 18. Perguntas
      EDN – Embarcadero Developer Network
      http://edn.embarcadero.com/br (Artigos e Vídeos)
      Trial Download
      http://www.embarcadero.com/downloads
      Código fonte disponível para download
      http://cc.embarcadero.com/Item/27391
    • 19. Dados para Contato
      Email:Andreano.Lanusse@embarcadero.com
      Blog:http://www.andreanolanusse.com
      Twitter:http://twitter.com/andreanolanusse