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

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

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

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

Globalcode – Open4education

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

Stefan [email protected] / @stefan_teixeira

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

• 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: TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC

Stored Procedures

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

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

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

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

• DBFit

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

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

• DBFit

• DB Test Driven

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

Como testar?

• Chamadas diretas ao BD (ex: JDBC)

• DBFit

• DB Test Driven

• SS-Unit / tSQLt (apenas MSSQL)

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

Cobertura de Código

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

Cobertura de código

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

Pontos importantes

• 100% de cobertura != bons testes

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

Pontos importantes

• 100% de cobertura != bons testes

• Importante para saber O QUE está sendo testado (e o que NÃO está)

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

Cobertura de Código para Stored Procedures

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

Ferramentas

• SSDT Dev Pack

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

Ferramentas

• SSDT Dev Pack

• PL SQL Test Coverage

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

Ferramentas

• SSDT Dev Pack

• PL SQL Test Coverage

• SQLCC

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

Motivação

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

Motivação / Contexto

• Aplicação Java

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

Motivação / Contexto

• Aplicação Java

• Mais de 80% das regras de negócio em stored procedures T-SQL

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

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: TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC

Motivação / Contexto

• Suite com mais de 200 testes (com JDBC)

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

Motivação / Contexto

• Suite com mais de 200 testes (com JDBC)

• Dificuldade em saber o que está sendo testado

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

SQLCC

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

SQLCC

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

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

SQLCC

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

• Feito em C#

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

SQLCC

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

• Feito em C#

• Projeto abandonado 😢

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

Como funciona?

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

Como funciona?

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

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

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: TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC

Resultados

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

Resultados

• Dificuldades em configurar o projeto

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

Resultados

• Dificuldades em configurar o projeto → Criado fork com bug crítico corrigido e README atualizado: https://github.com/stefanteixeira/sqlcc

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

Resultados

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

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

Demo

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

https://youtu.be/inZHr63-ec0

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

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: TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC

Globalcode – Open4education

Stefan Teixeira @stefan_teixeira [email protected]

Obrigado!

stefanteixeira.com.br stefanteixeira.com