Uma resposta completa para essa pergunta seria muito longa. Vou tentar mencionar os pontos principais.
Para separar preocupações, você pode estar olhando para testes para:
A - Valide o design do banco de dados.
B - Valide se os programas estão interagindo corretamente com o banco de dados.
A validação do design do banco de dados deve ser realizada pelas pessoas que projetaram o banco de dados. Os desenvolvedores (durante o teste de unidade) devem se preocupar mais com a parte (B). A principal diferença que vejo entre os dois tipos de testes são as ferramentas usadas. Para (A), você usaria um ambiente independente do código do projeto, enquanto que em (B), é claro, você usaria o código do projeto. No texto a seguir, misturarei os dois.
Para responder às suas perguntas específicas:
Regras de valor do domínio da coluna
Cada coluna tem um tipo de dados associado. Cada coluna deve ser validada com relação às regras de negócios para provar que representa o tipo de dados correto. Podem surgir problemas se o tipo de dados da coluna não for compatível com os requisitos de negócios ou se o código usar um tipo de dados diferente de como é definido no banco de dados.
Por exemplo:
Se a coluna estiver definida como int pequeno, você não poderá armazenar texto nela. Este é um teste importante, especialmente quando as colunas são opcionais, pois podem passar despercebidas até que alguém realmente insira alguns dados.
Você poderia armazenar um valor negativo em uma coluna onde a empresa exige que isso aconteça?
Regras de valor padrão da coluna
Algumas colunas estão associadas a uma especificação de valor padrão no DDL (Data Def. Language), onde se durante a inserção a inserção não fornecer um valor, o banco de dados assumirá o valor padrão. Isso pode ser testado não passando o valor e observando o valor do resultado que o banco de dados armazena. Esse teste também pode incluir a verificação de colunas Nullable. Isso raramente requer um teste, pois pode ser verificado a partir do DDL, a menos que um índice exclusivo seja criado na coluna.
Regras de existência de valor
Pelo que entendi, você verifica se os dados inseridos ou atualizados são exibidos conforme o esperado no banco de dados.
Regras de valor da linha
Não sei ao certo o que isso significa exatamente.
Regras de tamanho
Cada coluna tem um tamanho no banco de dados com base em como é definido no DDL. você deseja garantir que qualquer valor que atenda aos requisitos (GUI do formulário inserido ou resultante da saída de um cálculo) seja armazenado corretamente na coluna. Por exemplo, um tipo de dados Inteiro Pequeno não permite armazenar um valor de 5 bilhões. Além disso, um nome definido como VARCHAR2 (30) não acomodará 40 caracteres, portanto, as regras de negócios devem ser muito claras aqui, especialmente quando a coluna é usada para agregar dados. Você quer testar o que acontece nessas situações.
diretrizes sobre como / por onde começar
Uma maneira de fazer isso é criar um plano de teste. Você deseja garantir que está usando a versão correta das especificações (como documentos de requisitos e casos de uso) e do software. Você também precisa coordenar esses testes com os testes realizados por Teste de Unidade (se houver). Você pode encontrar testes duplicados que não precisam ser executados novamente. Você deseja tirar uma cópia do banco de dados antes de testar, para poder repetir um teste específico, se precisar. O DBA pode ajudá-lo com isso. Você também precisa verificar com sua equipe como eles documentam esses testes e verificar o escopo dos testes com eles. Você pode dividir seu banco de dados em partes lógicas e iniciar o teste de cada parte lógica separadamente. O processo de teste pode começar estudando a DDL do banco de dados e verificando se as colunas estão definidas corretamente, conforme exigido pelos negócios. Você deve usar o software do aplicativo e não qualquer outra ferramenta para executar a maioria dos testes. Por exemplo, questione o seguinte:
A coluna deveria ser do tipo definido (não faz sentido criar um Nome como Int).
O tamanho é compatível com os requisitos comerciais?
Todas as colunas nos requisitos de negócios foram encontradas no banco de dados?
As colunas nulas são realmente opcionais?
etc.
Em seguida, você pode projetar casos de teste para testar o acima. Você pode usar a GUI para fazer a maioria dos testes.
Existem outros testes importantes do banco de dados que você não mencionou. Aqueles lidam com:
1 - Testar se as chaves primárias são realmente únicas do ponto de vista comercial.
2 - Testar se os índices únicos (exceto o PK) são realmente únicos da perspectiva do negócio.
3 - Testar restrições de chave estrangeira funcionam.
4 - Testar o que acontece quando uma linha é excluída e seu efeito em linhas relacionadas.
5 - Outros testes relacionados a construções especiais de bancos de dados como CHEKC, Triggers, se existirem.
6 - Normalização correta da tabela e que as colunas normalizadas mantêm valores corretos.
A descrição acima não é uma lista completa, mas deve começar.
Eu acho que você está abordando isso da maneira errada.
Qualquer banco de dados que eu conheço verifica os dados antes de inseri-los nas tabelas - ele os valida de acordo com a definição de cada coluna. Você não pode inserir uma sequência de 80 caracteres em uma coluna SMALLINT (3) - o banco de dados falhará nessa tentativa e informará que você cometeu um erro. Você não precisa testar isso inserindo os dados e recuperando-os.
O que você deseja ter são regras de validação / filtragem de dados antes de serem enviadas ao banco de dados.
Essas regras de validação / filtragem devem ser executadas nos dados do seu aplicativo real. Você pode configurar testes para garantir que estejam corretos, alimentando-os com dados corretos e incorretos para garantir que eles sejam aprovados ou reprovados na validação de acordo.
No que diz respeito ao design do banco de dados, você não pode realmente verificá-lo com testes - já que muitos designs funcionam mesmo que não sejam ideais (e a definição de mudanças ideais entre pessoas diferentes). O design adequado do banco de dados vem com experiência e conhecimento, não com testes automatizados.
fonte