Dando continuidade a série de “como se tornar um bom tester técnico?!” – sql, antes de entrar em joins, vai uma pergunta: “Devemos testar scripts DDL, DML, DCL e RBK?” Para aqueles que estranharam os nomes, vai a definição:
DDL – Data Definition Language

Quando se é criado um banco de dados, geralmente esse banco vem vazio e é necessário definirmos “onde” e “como” as informações serão gravadas para assim serem consultadas depois, e nesse caso, devemos criar as tabelas definindo o tipo de dados de cada campo, as chaves estrangeiras e primárias, índices, regras e etc. Então, DDL nada mais é que comandos de DEFINIÇÃO, ou seja, em um banco de dados, estamos falando de comandos do tipo CREATE, ALTER ou DROP, comandos utilizados para criar, alterar ou excluir tabelas, objetos, procedures, relacionamentos, índices, etc.

Exemplos de comandos DDL:

CREATE: Cria uma tabela

CREATE TABLE
Pessoa(codigoPessoa char(11),
nomePessoa varchar(50));

ALTER: Altera tabela

ALTER TABLE Pessoa

ADD numeroTelefone varchar(11);

DROP: Exclui tabela

DROP TABLE Pessoa

DML – Data Manipulation Language

Depois que houve a criação das tabelas, índices, relacionamentos, etc, vem a parte de popular o banco, ou seja, colocar informações ou registros dentro das tabelas. São utilizados comandos de manipulação, que são INSERT, UPDATE e DELETE.
DCL – Data control Language

Depois que criamos o banco e o estruturamos, inserimos registros, agora é a hora de definirmos permissões para o nosso banco de dados e deixá-lo mais seguro. Utilizamos os comandos GRANT e DENY para permissão e negação.

Exemplo e sintaxe para dar permissão de seleção em uma determinada tabela para um determinado usuário:

GRANT SELECT ON Pessoa TO Maria;

Obs.: Para facilitar a leitura do comando, vamos pensar dessa forma:

GRANT = Permissão;
SELECT = Para consulta;
ON Pessoa = na tabela Pessoa;
TO Maria = para usuário Maria.

Exemplo e sintaxe para dar permissão de seleção e inserção em uma determinada tabela para um determinado usuário:

GRANT SELECT, INSERT ON Pessoa TO Alberto

Exemplo e sintaxe para negar algum tipo de permissão para um determinado usuário:

DENY INSERT, UPDATE, DELETE ON Pessoa TO GRP_RH;

Obs.: Para facilitar a leitura do comando, vamos pensar dessa forma:
DENY = Negação;
INSERT, UPDATE, DELETE = Para inserção, deleção e update de registros;
ON Pessoa = na tabela Pessoa;
TO Maria = para usuário do grupo GRP_RH
RBK – Rollback

A idéia do rollback nada mais é do que desfazer a transação que acabamos de efetuar, ou seja, faço a inserção de um registro na tabela Pessoa e logo após eu faço a deleção desse registro. Importante ressaltar que o arquivo de RBK deverá ser feito de acordo com a ordem executada no script DML.
O que podemos, como testers ajudar com tudo isso?

Como analista de testes, temos ou deveríamos ter o controle total do ambiente a qual estamos trabalhando, portanto, qualquer pacote que irá “deployar” em “nosso” ambiente deverá passar pelo nosso crivo, ou melhor ainda, devemos fazer esse deploy. No caso de scripts desse tipo, também devemos executar em nossa base de dados de teste, pois dessa forma conseguiremos antecipar, se for o caso, problemas que poderão acontecer e o melhor, testar para ver se o RBK está fazendo corretamente a deleção dos registros, etc. O RBK DEVE sempre acompanhar scripts DML e DDL, se o dev não o fez, cobrem, pois temos que saber que se falhar quando executar em produção, o RBK irá certificar que será feito o rollback corretamente, porém conheço diversos devs que tem “preguiça” de desenvolver um script de rollback e a esses devemos orientar e “educa-los” a essa prática. Caso aconteça algum problema na execução do RBK, informar o dev qual o problema ocorrido para que ele possa ajustar o script, e, caso saiba ajustar, ajuste o script e atualize no repositório e informe a todos o problema que ocorreu.

Eu havia prometido um conteúdo sobre Joins, que irá para a terceira parte de “Como se tornar um bom tester técnico”, senão em um post só ficará maçante =).

Abraços.