testando aplicações datasnap

15
1 Testando Aplicações DataSnap Andreano Lanusse Technical Lead Evangelist, Developer Relations

Upload: andreano-lanusse

Post on 10-Jun-2015

9.966 views

Category:

Technology


0 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: Testando aplicações DataSnap

1

Testando Aplicações DataSnap

Andreano Lanusse

Technical Lead Evangelist, Developer Relations

Page 2: Testando aplicações DataSnap

2

Agenda

• Arquitetura• Melhores Práticas• Testes baseados em Teste Unitário• Demo

Page 3: Testando aplicações DataSnap

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

Page 4: Testando aplicações DataSnap

4

DataSnap Arquitetura

TCP/IP transport

JSON/RPC messaging layer

DataSnap Server

Existing DelphiRDMs, No-COMServerModules

• Middle-tier database driver deployment • Connection Pooling

• Statement, MetaData Caching

Delphi

Connection/Session management and RPC dispatching

Database Accelerator

Remote/ServerData Modules

Server Methods

DBX / ADO.NET

Method Parameters:• Table readers• DB connection• Scalar values

Delphi / C++

Plain Objects

Delphi/C++DBX Client

ADO.NETASP/Desktop

Page 5: Testando aplicações DataSnap

5

DataSnap Server

DSServer gerencia a criação e tempo de vida dos transports e server classes

Transport(socket/http) gerencia a criação e tempo de vida das threads

ServerClass publica os server methods para chamada dinãmica dos métodos

ObjectPooling

Gerenciamento de memória - Lyfe Cicle

Server (Singleton) Todos os clientes compartilham uma única instância da classe servidora.Session (Statefull) Cada cliente tem sua instância da classe no servidorInvocation (Stateless) Novas instâncias de server class são criadas para cada chamada de um server method.

Server Module contém server methods, funciona como um TRemoteDataModule, Suporta IAppServer

Page 6: Testando aplicações DataSnap

6

DataSnap Client

App Cliente

SQLServerMethodClasses ProxyDSProviderConnection

Desktop/Web

DBX ADO.NETDBXClientRESTfull

Server Container

FILTER

Classes Proxy e Teste Unit Test

Page 7: Testando aplicações DataSnap

7

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 (unit testing).

Page 8: Testando aplicações DataSnap

8

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.

Page 9: Testando aplicações DataSnap

9

DataSnap – Teste de Unidade (Unit Testing)

• Delphi está integrado com Dunit• Classes Proxy são facilmente integradas a Unit Test• Unit Test funciona como uma aplicação cliente• Unit Test em Delphi é a melhor opção, permite testar

todos os tipos de retorno• Você pode criar Unit Test em Java, PHP e outras

linguagens, mas estará limitado a testar métodos baseados em JSON (RESTfull)

• Deve ser criado pelo desenvolvedor

Page 10: Testando aplicações DataSnap

10

Unit Test – Dados

• Utilizar dados mais próximos de produção• Fontes de dados:

– Banco de Dados– XML

XML Banco de dados

Elimina variáveis de ambientes, arquivo local e nada mais

Considerar servidor, rede e outras variáveis externas

Difícil manutenção, gerar dados de produção como arquivo XML

Fácil manutenção (backup/restore)

Alta Performance, leitura de arquivos locais

Vai depender do banco de dados

Page 11: Testando aplicações DataSnap

11

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

Page 12: Testando aplicações DataSnap

12

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/

Page 13: Testando aplicações DataSnap

13

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

Page 14: Testando aplicações DataSnap

14

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

Page 15: Testando aplicações DataSnap

15

Dados para Contato

• Email:[email protected]

• Blog:http://www.andreanolanusse.com

• Twitter:http://twitter.com/andreanolanusse