Upload
stefan-teixeira
View
310
Download
0
Embed Size (px)
Citation preview
Globalcode – Open4education
Cobertura de código de procedures T-SQL com SQLCC
Stefan [email protected] / @stefan_teixeira
• 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
Stored Procedures
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
• DBFit
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
• DBFit
• DB Test Driven
Como testar?
• Chamadas diretas ao BD (ex: JDBC)
• DBFit
• DB Test Driven
• SS-Unit / tSQLt (apenas MSSQL)
Cobertura de Código
Cobertura de código
Pontos importantes
• 100% de cobertura != bons testes
Pontos importantes
• 100% de cobertura != bons testes
• Importante para saber O QUE está sendo testado (e o que NÃO está)
Cobertura de Código para Stored Procedures
Ferramentas
• SSDT Dev Pack
Ferramentas
• SSDT Dev Pack
• PL SQL Test Coverage
Ferramentas
• SSDT Dev Pack
• PL SQL Test Coverage
• SQLCC
Motivação
Motivação / Contexto
• Aplicação Java
Motivação / Contexto
• Aplicação Java
• Mais de 80% das regras de negócio em stored procedures T-SQL
Motivação / Contexto
• Aplicação Java
• Mais de 80% das regras de negócio em stored procedures T-SQL
• Mudanças frequentes nas procedures
Motivação / Contexto
• Suite com mais de 200 testes (com JDBC)
Motivação / Contexto
• Suite com mais de 200 testes (com JDBC)
• Dificuldade em saber o que está sendo testado
SQLCC
SQLCC
• Open-source (https://github.com/jbarker7/sqlcc)
• Feito em C#
SQLCC
• Open-source (https://github.com/jbarker7/sqlcc)
• Feito em C#
• Projeto abandonado 😢
Como funciona?
Como funciona?
• SQLCC usa Traces do MSSQL para determinar as linhas de código executadas
Como funciona?
• SQLCC usa Traces do MSSQL para determinar as linhas de código executadas
• Apenas intercepta requests com um determinado Application Name
Resultados
Resultados
• Dificuldades em configurar o projeto
Resultados
• Dificuldades em configurar o projeto → Criado fork com bug crítico corrigido e README atualizado: https://github.com/stefanteixeira/sqlcc
Resultados
• Tornou muito mais fácil saber o que está ou não está sendo testado
Demo
https://youtu.be/inZHr63-ec0
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
Globalcode – Open4education
Stefan Teixeira @stefan_teixeira [email protected]
Obrigado!
stefanteixeira.com.br stefanteixeira.com