tdc2016sp - trilha banco de dados

36
Globalcode – Open4education Cobertura de código de procedures T-SQL com SQLCC Stefan Teixeira [email protected] / @stefan_teixeira

Upload: tdc-globalcode

Post on 10-Jan-2017

56 views

Category:

Education


4 download

TRANSCRIPT

Page 1: TDC2016SP - Trilha Banco de Dados

Globalcode – Open4education

Cobertura de código de procedures T-SQL com SQLCC

Stefan [email protected] / @stefan_teixeira

Page 2: TDC2016SP - Trilha Banco de Dados

• 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

Stored Procedures

Page 4: TDC2016SP - Trilha Banco de Dados

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

Page 5: TDC2016SP - Trilha Banco de Dados

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

• DBFit

Page 6: TDC2016SP - Trilha Banco de Dados

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

• DBFit

• DB Test Driven

Page 7: TDC2016SP - Trilha Banco de Dados

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

• DBFit

• DB Test Driven

• SS-Unit / tSQLt (apenas MSSQL)

Page 8: TDC2016SP - Trilha Banco de Dados

Cobertura de Código

Page 9: TDC2016SP - Trilha Banco de Dados

Cobertura de código

Page 10: TDC2016SP - Trilha Banco de Dados

Pontos importantes

• 100% de cobertura != bons testes

Page 11: TDC2016SP - Trilha Banco de Dados

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

Cobertura de Código para Stored Procedures

Page 13: TDC2016SP - Trilha Banco de Dados

Ferramentas

• SSDT Dev Pack

Page 14: TDC2016SP - Trilha Banco de Dados

Ferramentas

• SSDT Dev Pack

• PL SQL Test Coverage

Page 15: TDC2016SP - Trilha Banco de Dados

Ferramentas

• SSDT Dev Pack

• PL SQL Test Coverage

• SQLCC

Page 16: TDC2016SP - Trilha Banco de Dados

Motivação

Page 17: TDC2016SP - Trilha Banco de Dados

Motivação / Contexto

• Aplicação Java

Page 18: TDC2016SP - Trilha Banco de Dados

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

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

Motivação / Contexto

• Suite com mais de 200 testes (com JDBC)

Page 21: TDC2016SP - Trilha Banco de Dados

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

SQLCC

Page 23: TDC2016SP - Trilha Banco de Dados

SQLCC

• Open-source (https://github.com/jbarker7/sqlcc)

Page 24: TDC2016SP - Trilha Banco de Dados

SQLCC

• Open-source (https://github.com/jbarker7/sqlcc)

• Feito em C#

Page 25: TDC2016SP - Trilha Banco de Dados

SQLCC

• Open-source (https://github.com/jbarker7/sqlcc)

• Feito em C#

• Projeto abandonado 😢

Page 26: TDC2016SP - Trilha Banco de Dados

Como funciona?

Page 27: TDC2016SP - Trilha Banco de Dados

Como funciona?

• SQLCC usa Traces do MSSQL para determinar as linhas de código executadas

Page 28: TDC2016SP - Trilha Banco de Dados

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

Resultados

Page 30: TDC2016SP - Trilha Banco de Dados

Resultados

• Dificuldades em configurar o projeto

Page 31: TDC2016SP - Trilha Banco de Dados

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

Resultados

• Tornou muito mais fácil saber o que está ou não está sendo testado

Page 33: TDC2016SP - Trilha Banco de Dados

Demo

Page 34: TDC2016SP - Trilha Banco de Dados

https://youtu.be/inZHr63-ec0

Page 35: TDC2016SP - Trilha Banco de Dados

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

Globalcode – Open4education

Stefan Teixeira @stefan_teixeira [email protected]

Obrigado!

stefanteixeira.com.br stefanteixeira.com