tdc2016sp - trilha banco de dados

Post on 10-Jan-2017

56 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Globalcode – Open4education

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

Stefan Teixeirastefanfk@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

top related