Você está na página 1de 6

Copyiight Anui Luis Sena Nascimento Pg.

1

Tcnicas de Caixa Preta de Teste de Software

Na maioria de projetos de teste, o tempo para a realizao dos mesmos sempre
curto e os nmeros de testes a serem realizados nas aplicaes so inmeros. Isso sem falar
dos testes No-Funcionais, como por exemplo, os de performance, de usabilidade, de
stress, de escalabilidade, etc. necessrio se ter um planejamento bem elaborado para que
todo o projeto de testes, consiga entregar um produto com no mnimo qualidade esperada
pelo cliente e no prazo que foi acordado.
No intuito de se realizar esse processo com certa eficincia, necessrio utilizar das
tcnicas de teste de software que o tema desse artigo. Para isso, respondemos a pergunta
de como fazer o processo. Entretanto, para responder a pergunta, o que e o que priorizar
primeiro, temos que levar em considerao os riscos associados ao projeto de teste que
devem ser levantados to logo se inicia o projeto de todo o software. Levantados e
analisados os riscos e, fazendo uso correto das tcnicas de teste, muito provvel que todo
o projeto de teste consiga alcanar o mnimo de qualidade esperada.
O nome caixa preta vem do sentido de que nesse tipo de teste, no
necessrio saber a estrutura interna de como o cdigo foi implementado ou a tecnologia que
foi utilizada. Nesse tipo de anlise, essas questes so transparentes para os analistas de
teste. claro que para se ter um projeto de teste bem sucedido, necessrio usar a tcnica
de caixa preta e mais a de caixa branca, isto , analisar, tambm, a estrutura interna da
aplicao.
Na nomenclatura tambm se utiliza o termo em ingls Black Box ou Testes
Funcionais. Aqui, listo as principais tcnicas de caixa preta de teste de software, com
exemplos ilustrativos e, ainda, mostra como se medir a porcentagem de cobertura depois
que os testes so executados para cada uma das tcnicas.

1) Classe de Equivalncia (Equivalent Partioning)

Essa tcnica baseada na premissa que a entrada e sada de um componente podem
ser particionados em classes de equivalncia que, de acordo com a especificao do
componente sero tratados similarmente pelo componente. Assim, o resultado de um teste
usando um simples valor dessa classe de equivalncia considerado representativo em
relao a uma classe.
O modelo deve compreender parties de valores de entrada e sada. Cada partio
deve conter um intervalo de valores, escolhidos de tal maneira, que todos os valores nessa
classe tm o mesmo resultado, da o nome equivalncia. Podem ser usados valores vlidos e
invlidos para serem candidatos classe de equivalncia. desejvel se ter pelo menos um
caso de teste para exercitar cada uma das classes de equivalncia para se ter uma mxima
cobertura da aplicao.
Um exemplo de onde essa tcnica pode ser aplicada a classificao das notas dos
alunos em A, B, C ou D de acordo com a pontuao de cada um. Se, para se conseguir uma
classificao A, o aluno tem que tirar nota entre 90 e 100, B entre 80 e 89, C entre 70 e 79 e
D abaixo de 70, sendo que o sistema s aceita caracteres numricos.
Graficamente, temos:

Copyiight Anui Luis Sena Nascimento Pg. 2

Para exercitar todas as classificaes das notas que so as classes de equivalncia A,
B,C e D necessrio ter como entradas dos casos de teste pelo menos um representante de
cada classe de equivalncia, por exemplo, entradas 69 para ter como sada o valor D, o
valor 75 exercitar a segunda classe de equivalncia e ter a classificao C, o valor 84,
para se obter B e o valor 93 para se obter A. Alm desse conjunto de entradas vlidas,
as entradas invlidas, tambm seriam pertinentes para avaliar o sistema, como por exemplo,
caracteres alfas-numricos e especiais. Esses valores so mostrados na tabela abaixo:

Conjunto de Casos de Teste de Classes de Equivalncia
Caso de Teste 1 2 3 4 5 6
Entrada 69 75 84 93 A &
Sada D C B A Erro Erro

Para medir a cobertura dos testes usando essa tcnica, usa-se a seguinte frmula:

Cobertura Classe de Equivalncia = Nmero de Parties Testadas * 100 %
Total de Parties

2) Valores de Borda (Boundary Value Analysis)

Essa tcnica usa um modelo de componente que particiona as entradas e sadas dos
valores de um componente em conjuntos de classificaes, cujos valores de borda so
exercitados. Esses conjuntos de classificaes so obtidos atravs de especificaes do
comportamento do componente.
Primeiramente, necessrio ter em mente quais os conjuntos de classificaes
compreendidas pelo sistema e, depois, levantar os valores de borda de cada um desses
conjuntos. O objetivo aqui produzir casos de teste com entradas usando os valores de
borda de cada um desses conjuntos.
Essa tcnica uma das mais teis, tanto para testadores quanto para
desenvolvedores, pois atravs dela que so identificados muitos problemas de aceitao
de valores de entradas em um sistema, principalmente, quando se usa o valor nulo ou o
valor zero. Muitos desenvolvedores se valem dela para fazer testes unitrios, pois eles
precisam analisar se o tratamento dado por eles no cdigo est prevendo essas condies.
Como exemplo prtico pode citar o exemplo anterior ou, tambm, para testes de
datas de um sistema. No caso do exemplo anterior, alguns valores vlidos e invlidos para
se testar os valores de borda das classes de equivalncias so mostrados na tabela abaixo:

Conjunto de Casos de Teste de Valores de Borda
Classe de Equivalncia Entradas Sada
D 69, 68,11,1,0 D
C 70, 78, 79 C
B 80, 88, 89 B
A 90, 98, 99, 100 A
Invlida A, Y, *, ^, %, # Erro

Para se testar datas vlidas de um sistema, a tcnica de valores de borda pode ser
aplicada, pois sabe que os meses com trinta dias so: Abril, Junho, Setembro e Novembro,
com trinta e um dias so: Janeiro, Maro, Maio, Julho, Agosto, Outubro e Dezembro e
Copyiight Anui Luis Sena Nascimento Pg. S

Fevereiro com vinte e oito ou vinte e nove dias dependendo se um ano bissexto ou no.
Ento podemos levantar os valores de borda para testar se um sistema est validando ou
no, as entradas de data que deve ter o formato: DD/MM/AAAA. Esses valores so
mostrados abaixo:

Conjunto de Casos de Teste de Valores de Borda
Classe de
Equivalncia
Entradas Vlidas Entradas Invlidas
Janeiro 01/01/2000, 30/01/2000, 31/01/2000 32/01/2000, 31/1/2000, 31/01/00
Fevereiro 01/02/2000, 28/02/2000, 29/02/2000 29/02/2001, 30/02/2000,
31/02/2000
Maro 01/01/2000, 30/01/2000, 31/01/2000 32/03/2000, 31/3/2000, 31/03/00
Abril 01/04/2000, 29/04/2000, 30/04/2000 31/04/2000, 30/4/2000, 30/04/00
Maio 01/05/2000, 30/05/2000, 31/05/2000 32/05/2000, 31/5/2000, 31/05/00
Junho 01/06/2000, 29/06/2000, 30/06/2000 31/06/2000, 30/6/2000, 30/06/00
Julho 01/07/2000, 30/07/2000, 31/07/2000 32/07/2000, 31/7/2000, 31/07/00
Agosto 01/08/2000, 30/08/2000, 31/08/2000 32/08/2000, 31/8/2000, 31/08/00
Setembro 01/09/2000, 29/09/2000, 30/09/2000 31/09/2000, 30/9/2000, 30/09/00
Outubro 01/10/2000, 30/10/2000, 31/10/2000 32/10/2000, 31/0/2000, 31/10/00
Novembro 01/11/2000, 29/11/2000, 30/11/2000 31/11/2000, 30/1/2000, 30/11/00
Dezembro 01/12/2000, 30/12/2000, 31/12/2000 32/12/2000, 31/2/2000, 31/12/00

Para medir a cobertura de cobertura usando essa tcnica, usa-se a seguinte frmula:

Cobertura Valor de Borda = Nmero de Valores de Borda Executados * 100 %
Total de Valores de Borda

3) Transio de Estados (State Transition)

Essa tcnica de caixa preta baseada sobre a anlise da especificao de um
componente para modelar o comportamento dele em transies de estados. Ela usa um
modelo de estados que o componente deve ocupar, as transies entre esses estados, os
eventos que causam essas transies e as aes que resultam dessas transies.
O modelo tipicamente representado por estados, transies de estados, eventos,
entradas e sadas de um componente e todos eles serem identificveis. Os eventos causam
transies entre estados e transies podem retornar para o estado original onde eles
comearam. Eles so causados pelas aes que causam sadas nos mesmos.
Os casos de teste devem ser elaborados para exercitar todas as transies de estados
do componente. Nele deve ser especificado, o primeiro estado do componente, a entrada, as
sadas esperadas, o evento que causa a transio para o prximo estado, a ao esperada
causada pela transio e o prximo estado esperado. Graficamente, podemos ilustrar essa
tcnica da seguinte maneira:
Copyiight Anui Luis Sena Nascimento Pg. 4



Como exemplo de uso dessa tcnica pode citar o sistema de uma companhia area
que mostra todos os lugares de um vo. Os lugares podem estar ocupados, reservados ou
disponveis. So estados que esse componente pode assumir. A entrada a escolha de uma
poltrona por um cliente ou uma reserva. Logo aps isso, o sistema dispara um evento para
atualizar aquele assento que estava disponvel para ocupado ou reservado. O sistema pode
fazer mais algumas validaes (eventos) do tipo, se um assento ficar por mais de um tempo
reservado, volta para disponvel ou, ainda, se a pessoa ocupar a poltrona e no confirmar a
sua escolha volta de reservado para disponvel.
Elaborar casos de teste para esse sistema no uma tarefa muito fcil para os
analistas, pois eles devem cobrir todos os estados que a poltrona pode assumir e as todas as
condies em que elas ocorrem.
Para medir a cobertura de cobertura usando essa tcnica, usa-se o percentual de
todos os valores vlidos que foram exercitados durante o teste.

4) Grfico de Causa e Efeito (Cause & Effect Graphing)

Grfico de causa e efeito usa um modelo de relaes lgicas entre causas e efeitos
para um componente. Cada causa expressa como uma condio, que pode ser verdadeira
ou falsa (condio Booleana) de entrada ou uma combinao de entradas para o
componente. Cada efeito expresso como sendo uma expresso Booleana representando
uma sada, ou uma combinao de sadas para o componente ocorrido.
O modelo tipicamente representado como grfico Booleano relacionando as
entradas e sadas Booleanas, usando os operadores Booleanos: AND, OR, NAND, NOR e
NOT. Desse grfico, produzida uma tabela de deciso representando as relaes lgicas
entre causas e efeitos.
Os casos de teste devem ser projetados para exercitar as regras, que definem a
relao entre as entradas e sadas dos componentes, onde cada regra corresponde a uma
possibilidade nica de entrada para o componente que tem sido expresso como booleano. O
caso de teste deve identificar o estado booleano de cada causa e o estado para cada efeito.
Copyiight Anui Luis Sena Nascimento Pg. S

Como exemplo dessa tcnica pode citar os casos de teste para validar as operaes
bancrias feitas por um correntista. As entradas (causas) para esse projeto de teste seria o
tipo de conta, limite mximo, saldo atual e montante de dbito. Os efeitos so flag para
saber se a operao foi realizada ou no e o saldo atual da correntista. Os casos de teste que
podem ser levantados para validar essa aplicao so inmeros e, o resultado deles,
depende das operaes booleanas para saber se ser possvel ou no realizar a transao.

Para medir a cobertura de cobertura usando essa tcnica, usa-se a seguinte frmula:

Cobertura Causa-Efeito = Nmero de Regras Exercitadas * 100 %
Total de Regras

5) Tcnica de Sintaxe (Syntax Testing)

Essa tcnica de caixa preta baseada sobre a anlise da especificao de requisitos.
Nesse documento so especificados os valores possveis que uma entrada do sistema pode
receber. No entanto, nesse documento, as entradas inesperadas, na maioria das vezes, no
so tratadas. nesse contexto que se insere a tcnica de Tcnica de Sintaxe. Ela consiste
em ter como entradas esperadas e as no esperadas para validar a especificao de
requisitos e avaliar o comportamento de um sistema quando esses valores no especificados
so usados.
nessa tcnica onde so encontrados os principais problemas de tratamentos de
excees, j que ela se divide em Sintaxe Vlida e Sintaxe Invlida. Na primeira,
somente os valores esperados so utilizados, como por exemplo, valores numricos em
campos que remetem a uma quantidade de dias de frias que um funcionrio tem a receber,
saldo de uma conta, livros em um andar de uma biblioteca, valores alfa em campos de
nomes, sobrenomes, endereo, etc. J na segunda tcnica, a Sintaxe Invlida, o objetivo
exercitar as entradas invlidas, como insero de valores alfa em campos numricos,
insero de valores numricos em campos de valores alfa, insero de caracteres especiais,
insero de valores float em campos numricos e inteiros, insero de valores negativos em
campos de valores numricos e inteiros, insero de vrgulas e pontos em campos de
valores numricos. Todas essas entradas visam validar qual ser o tratamento dado pela
aplicao quando esses valores forem usados. desejvel que mensagens de erro e de ajuda
sejam colocadas na tela no sentido de guiar o usurio a usar os valores corretos.
Outro aspecto que vale mencionar que na maioria das especificaes de requisitos,
nem os valores aceitveis so especificados. Nesse caso, seria interessante descobrir quais
os tipos de valores que os campos podem receber dando uma olhada no banco de dados
dessa aplicao. O arquiteto de teste aliado a um desenvolvedor que tenha mais
proximidade consegue levantar essa informao. Nesse caso, o levantamento dessas
informaes essencial para a aplicao dessa tcnica.

Para medir a cobertura de cobertura usando essa tcnica, usa-se a seguinte frmula:

Cobertura Teste Sintaxe = Nmero de Testes Sintaxe Exec * 100 %
Total de Casos de Teste



Copyiight Anui Luis Sena Nascimento Pg. 6

6) Teste Randmico (Random Testing)

Essa tcnica consiste em utilizar um algoritmo pseudo-randmico para se escolher
quais os casos de testes sero usados para validar uma funcionalidade de uma determinada
aplicao dentro um conjunto definido de valores. O objetivo aqui no fazer testes Ad-
Hoc (testes sem resultados previamente esperados e sem um propsito) e, sim,
simplesmente, em uma escolha dos casos de teste que foram previamente elaborados.
Normalmente, se aplica essa tcnica quando o tempo de teste foi reduzido em virtude de
eventualidades que aconteceram no projeto.
Um dos exemplos clssicos para exemplificar essa tcnica o Diagrama de
Pareto. O princpio se baseia em uma anlise quantitativa, ou seja, 80% de todos os
problemas so oriundos de 20% das causas potenciais. No contexto de teste de software, se
baseia em escolher 20% de todos os casos de testes criados, cobrindo 80% das
funcionalidades de todo o projeto. Para ter esse conjunto de casos de teste, necessrio ter
uma relao de requisitos do sistema x testes criados. Depois de feita essa relao, escolher
os casos de testes que mais aparecem nessa relao.
Um exemplo que ilustra essa tcnica mostrado abaixo. Segundo a tabela abaixo,
temos um total de 30 casos de testes criados hipoteticamente ligados aos requisitos bsicos
de um sistema de uma biblioteca. Seguindo o principio de Pareto, se testarmos, os casos de
teste, 2,3,7,18,22 e 25 que so os 20% principais e que mais cobrem funcionalidades,
estaremos cobrindo 80% das funcionalidades totais da aplicao.

Sistema de uma Biblioteca
Funcionalidades Bsicas Casos de Testes criados
Incluso de Dados de Usurio 1,2,3,4,5,14
Edio de Dados de Usurio 2,5,6,7,8,9,13
Deleo de Dados de Usurio 2,3,7,10,11,12
Reserva de Livros 15,16,17,18,19,20,21,22
Adio de Livros 18,22,23,24,25,26
Remoo de Livros 25, 27,28,29,30

Para medir a cobertura de cobertura usando essa tcnica, usa-se a seguinte frmula:

Cobertura Teste Randmico = Nmero de Testes Exec Randomic * 100 %
Total de Casos de Teste