Globalcode – Open4education
Cobertura de código de
procedures T-SQL com SQLCC
Stefan Teixeira
stefanfk@gmail.com / @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: stefanfk@gmail.com
• 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)
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
stefanfk@gmail.com
Obrigado!
stefanteixeira.com.br
stefanteixeira.com

TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC