7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Teste de operações com
acesso a base de dados
2
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Agenda
Enquadramento
Porquê?
Tipologia dos testes
Desafios
Ferramentas e técnicas
DbUnit
Introdução Exemplo prático Conclusões
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Enquadramento
Teste de aplicações com acesso a bases de dados • Porquê
• Tipos de teste
• Desafios
• Ferramentas
“Writing a suite of maintainable, automated unit tests without a testing framework is virtually impossible.” http://www-128.ibm.com/developerworks/library/j-test.html
Com a apresentação que estamos a realizar, pretendemos aprofundar os tipos de testes se podem realizar a aplicações com BD, o porquê e que necessidades dtemos de os fazer, desafios e ferramentas para os implementar.
Quando falamos de um assunto como o TAcABD, devemos começar a nossa abordagem com alguma perguntas fundamentais:
PORQUÊ? Quais as necessidades e porque razões queremos investir tempo neste tipo de testes
TIPOS DE TESTE: ainda que seja um tema aparentemente específico, é possível realizar diferentes tipos de teste neste contexto das
aplicações
DESAFIOS: quais os principais obstáculos que irão surgir no processo de desenvolvimento e no contexto organizacional
FERRAMENTAS: perceber o estado de maturação das ferramentas no sentido de avaliar a curva de aprendizagem e o valor dos resultados que essas ferramentas no podem fornecer
Porque é fundamental responder a estas perguntas?
Bem só com resposta objectivas e mais valias bem identificadas será possível construir frameworks que permitam a manutenção e
4
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Porquê?
A maioria dos projectos envolvem bases de dados relacionais para
o armazenamento de dados,
Realização de testes
• Garantia de qualidade e progresso no desenvolvimento de software
TDD - em Metodologias Ágeis,
• Execução automática de testes sempre que possível
Garantir o correcto funcionamento do software
No contexto actual de projectos de software uma grande maioria dos projectos envolvem bases de dados relacionais para o armazenamento de dados. Sendo por isso importante verificar a consistência de dados entre e após as operações e facilitar a regressão a diferentes estados que a BD pode assumir.
Num processo de desenvolvimento de software a qualidade é cada vez mais um dos factores de distinção. Um dos meios para garantir a qualidade e o próprio avanço no processo de desenvolvimento, é a
realização de testes. Sendo qua o acesso a BD uma realidade na maior parte dos projectos, é fundamental que este constexto esteja também coberto por baterias de teste de odo a garantir que a aplicação não falha nesta parte da aplicação.
TDD: A utilização de metodologias ágeis, que promovem o TDD, reforçam a necessidade de execução automática de testes sempre que possível
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Tipologia dos testes
Testes unitários dados de testeGeração de Testes de carga
Teste de aplicações com acesso a base de dados
No que diz respeito a aplicações com acesso a base de dados existem 3 áreas em que podem ser realizados estes:
-Testes unitáios: para testar e garantir o correcto funcionamento das funções de acesso e extração de dados das BD’s
Tools which enable you to regression test your database.
-Geração de dados de teste: criação aleatória de dados, testanto os tipos de dados e integridade referencial
Developers need test data against which to validate their systems. Test data generators can be particularly useful when you need large amounts of data, perhaps for stress and load testing.
-Testes de carga: (que como o próprio nome indica), servem para aferir a performance da BD consoante mediante diferentes cargas de
utilização
Tools simulate high usage loads on your database, enabling you to determine whether your system's architecture will stand up to your true production needs.
A nossa apresentação será focada nos testes unitário ou (como também são conhecidos) testes de regressão
6
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Desafios
Competências em teste insuficientes
Testes unitários insuficientes para bases de dados existentes
Falta de ferramentas de teste
Renitência de alguns profissionais
Database testing is new to many people, and as a result you are likely to face several challenges:
1. Insufficient testing skills. This problem can be overcome through
training, through pairing with someone with good testing skills (pairing a DBA without testing skills and a tester without DBA skills still works), or simply through trial and error. The important thing is that you recognize that you need to pick up these skills.
2. Insufficient unit tests for existing databases. Few organizations have yet to adopt the practice of database testing, so it is likely that you will not have a sufficient test suite for your existing database(s).
Although this is unfortunate, there is no better time than the present to start writing your test suite.
3. Insufficient database testing tools. As I said earlier, we still have
a way to go with respect to tools.
4. Reticent DM groups. My experience is that some data
management (DM) groups may see the introduction of database
regression testing, and agile techniques such as test-first development (TFD) and refactoring, as a threat. Or, as my July 2006 "state of data management" survey shows, a large percentage of organizations are not only not doing any database testing at all they haven't even
discussed it. For many in the data management community the idea of doing database testing is rather new and it's simply going to take a while for them to think it through. I'm not so sure that you should wait to do such obvious process improvement.
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Ferramentas e técnicas
•Data Factory •Datatect •DTM Data Generator •Turbo DataDevelopers need test data against which to validate their systems. Test data generators can be particularly useful when you need large amounts of data, perhaps for stress and load testing.
Test Data Generator
•Empirix
•Mercury Interactive
•RadView
•Rational Suite Test Studio
•Web Performance
Tools simulate high usage loads on your database, enabling you to determine whether your system's architecture will stand up to your true production needs. Testing tools for load
testing
•DBUnit
•NDbUnit
•OUnit for Oracle (being replaced soon by Qute) •SQLUnit
•TSQLUnit (for testing T-SQL in MS SQL Server) •Visual Studio Team Edition for Database Professionals includes testing capabilities Tools which enable you to regression test
your database. Unit testing tools
Examples Description
Category
8
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
DbUnit
Extensão do Junit
Permite exportar e importar dados de e para uma BD para ou de ficheiros XML, respectivamente
Colocar uma BD num estado conhecido, executar operações, comparar o estado da BD depois das operações com o estado previsto.
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
10
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
DbUnit - Exemplo Prático
1. Exportar a base de dados (completa ou subconjunto) – resulta
num XML
2. Alterar o XML gerado de acordo com para o estado esperado
no final da operação
3. Criar e correr o teste
a) Executar a operação pretendida
b) Comparar o estado da base de dados com o XML esperado
(DbUnit)
4. Em caso de falha
a) Corrigir erros
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Conclusões
Fácil instalação e configuração
Simplicidade na implementação e execução de casos de teste
Fundamental no TDD para a automatização e repetição de testes
Dependente das competências e apetência da equipa para este tipo de testes
12
7.12.2006 MEI.TQS.TA1 Hugo Dias e Licínio Mano
Referências
DbUnit - www.dbunit.org Effective Unit Testing with DbUnit
-http://www.onjava.com/pub/a/onjava/2004/01/21/dbunit.html
Database Regression Testing
-http://www.agiledata.org/essays/databaseTesting.html
Simplified Database Unit testing using Enterprise Services - http://weblogs.asp.net/rosherove/articles/dbunittesting.aspx