tdc2016sp - trilha banco de dados
TRANSCRIPT
![Page 1: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/1.jpg)
Globalcode – Open4education
Cobertura de código de procedures T-SQL com SQLCC
Stefan [email protected] / @stefan_teixeira
![Page 2: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/2.jpg)
• QA Automation Engineer @ Toptal • Blogs técnicos: stefanteixeira.com.br (pt-br) /
stefanteixeira.com (en) • Co-organizador dos meetups DevOps Carioca e Grupo de
Testes Carioca
Contatos: • E-mail: [email protected] • Twitter: twitter.com/stefan_teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira
Sobre
![Page 3: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/3.jpg)
Stored Procedures
![Page 4: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/4.jpg)
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
![Page 5: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/5.jpg)
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
• DBFit
![Page 6: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/6.jpg)
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
• DBFit
• DB Test Driven
![Page 7: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/7.jpg)
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
• DBFit
• DB Test Driven
• SS-Unit / tSQLt (apenas MSSQL)
![Page 8: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/8.jpg)
Cobertura de Código
![Page 9: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/9.jpg)
Cobertura de código
![Page 10: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/10.jpg)
Pontos importantes
• 100% de cobertura != bons testes
![Page 11: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/11.jpg)
Pontos importantes
• 100% de cobertura != bons testes
• Importante para saber O QUE está sendo testado (e o que NÃO está)
![Page 12: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/12.jpg)
Cobertura de Código para Stored Procedures
![Page 13: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/13.jpg)
Ferramentas
• SSDT Dev Pack
![Page 14: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/14.jpg)
Ferramentas
• SSDT Dev Pack
• PL SQL Test Coverage
![Page 15: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/15.jpg)
Ferramentas
• SSDT Dev Pack
• PL SQL Test Coverage
• SQLCC
![Page 16: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/16.jpg)
Motivação
![Page 17: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/17.jpg)
Motivação / Contexto
• Aplicação Java
![Page 18: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/18.jpg)
Motivação / Contexto
• Aplicação Java
• Mais de 80% das regras de negócio em stored procedures T-SQL
![Page 19: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/19.jpg)
Motivação / Contexto
• Aplicação Java
• Mais de 80% das regras de negócio em stored procedures T-SQL
• Mudanças frequentes nas procedures
![Page 20: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/20.jpg)
Motivação / Contexto
• Suite com mais de 200 testes (com JDBC)
![Page 21: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/21.jpg)
Motivação / Contexto
• Suite com mais de 200 testes (com JDBC)
• Dificuldade em saber o que está sendo testado
![Page 22: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/22.jpg)
SQLCC
![Page 24: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/24.jpg)
SQLCC
• Open-source (https://github.com/jbarker7/sqlcc)
• Feito em C#
![Page 25: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/25.jpg)
SQLCC
• Open-source (https://github.com/jbarker7/sqlcc)
• Feito em C#
• Projeto abandonado 😢
![Page 26: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/26.jpg)
Como funciona?
![Page 27: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/27.jpg)
Como funciona?
• SQLCC usa Traces do MSSQL para determinar as linhas de código executadas
![Page 28: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/28.jpg)
Como funciona?
• SQLCC usa Traces do MSSQL para determinar as linhas de código executadas
• Apenas intercepta requests com um determinado Application Name
![Page 29: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/29.jpg)
Resultados
![Page 30: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/30.jpg)
Resultados
• Dificuldades em configurar o projeto
![Page 31: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/31.jpg)
Resultados
• Dificuldades em configurar o projeto → Criado fork com bug crítico corrigido e README atualizado: https://github.com/stefanteixeira/sqlcc
![Page 32: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/32.jpg)
Resultados
• Tornou muito mais fácil saber o que está ou não está sendo testado
![Page 33: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/33.jpg)
Demo
![Page 35: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/35.jpg)
Referências• SQLCC
• https://github.com/jbarker7/sqlcc (repo original) • https://github.com/stefanteixeira/sqlcc (fork atualizado)
• Fighting the Monster (experiências com teste de procedures): https://gojko.net/2007/11/20/fighting-the-monster/
• DBFit: http://dbfit.github.io/dbfit/index.html • tSQLt: http://tsqlt.org/ • SS-Unit: http://www.chrisoldwood.com/sql/ss-unit/manual/SS-Unit.html • DB Test Driven: http://dbtestdriven.com/
• SSDT Dev Pack: https://the.agilesql.club/blog/Ed-Elliott/2016-01-14/T-SQL-Code-Coverage-In-SSDT
• PL SQL Test Coverage: http://www.semdesigns.com/Products/TestCoverage/PLSQLTestCoverage.html
![Page 36: TDC2016SP - Trilha Banco de Dados](https://reader031.vdocuments.pub/reader031/viewer/2022020203/58743b8c1a28ab0e6c8b58a3/html5/thumbnails/36.jpg)
Globalcode – Open4education
Stefan Teixeira @stefan_teixeira [email protected]
Obrigado!
stefanteixeira.com.br stefanteixeira.com