Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

• 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

Slide 3

Slide 3 text

Stored Procedures

Slide 4

Slide 4 text

Como testar? • Chamadas diretas ao BD (ex: JDBC)

Slide 5

Slide 5 text

Como testar? • Chamadas diretas ao BD (ex: JDBC) • DBFit

Slide 6

Slide 6 text

Como testar? • Chamadas diretas ao BD (ex: JDBC) • DBFit • DB Test Driven

Slide 7

Slide 7 text

Como testar? • Chamadas diretas ao BD (ex: JDBC) • DBFit • DB Test Driven • SS-Unit / tSQLt (apenas MSSQL)

Slide 8

Slide 8 text

Cobertura de Código

Slide 9

Slide 9 text

Cobertura de código

Slide 10

Slide 10 text

Pontos importantes • 100% de cobertura != bons testes

Slide 11

Slide 11 text

Pontos importantes • 100% de cobertura != bons testes • Importante para saber O QUE está sendo testado (e o que NÃO está)

Slide 12

Slide 12 text

Cobertura de Código para Stored Procedures

Slide 13

Slide 13 text

Ferramentas • SSDT Dev Pack

Slide 14

Slide 14 text

Ferramentas • SSDT Dev Pack • PL SQL Test Coverage

Slide 15

Slide 15 text

Ferramentas • SSDT Dev Pack • PL SQL Test Coverage • SQLCC

Slide 16

Slide 16 text

Motivação

Slide 17

Slide 17 text

Motivação / Contexto • Aplicação Java

Slide 18

Slide 18 text

Motivação / Contexto • Aplicação Java • Mais de 80% das regras de negócio em stored procedures T-SQL

Slide 19

Slide 19 text

Motivação / Contexto • Aplicação Java • Mais de 80% das regras de negócio em stored procedures T-SQL • Mudanças frequentes nas procedures

Slide 20

Slide 20 text

Motivação / Contexto • Suite com mais de 200 testes (com JDBC)

Slide 21

Slide 21 text

Motivação / Contexto • Suite com mais de 200 testes (com JDBC) • Dificuldade em saber o que está sendo testado

Slide 22

Slide 22 text

SQLCC

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

SQLCC • Open-source (https://github.com/jbarker7/sqlcc) • Feito em C#

Slide 25

Slide 25 text

SQLCC • Open-source (https://github.com/jbarker7/sqlcc) • Feito em C# • Projeto abandonado

Slide 26

Slide 26 text

Como funciona?

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Como funciona? • SQLCC usa Traces do MSSQL para determinar as linhas de código executadas • Apenas intercepta requests com um determinado Application Name

Slide 29

Slide 29 text

Resultados

Slide 30

Slide 30 text

Resultados • Dificuldades em configurar o projeto

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Demo

Slide 34

Slide 34 text

https://youtu.be/inZHr63-ec0

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Globalcode – Open4education Stefan Teixeira @stefan_teixeira [email protected] Obrigado! stefanteixeira.com.br stefanteixeira.com