Testando aplicações DataSnap

11.606 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
11.606
No SlideShare
0
A partir de incorporações
0
Número de incorporações
868
Ações
Compartilhamentos
0
Downloads
179
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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.
  • Testando aplicações DataSnap

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

    ×