sexta-feira, 23 de maio de 2008

Teste Caixa Cinza (Gray Box)

Nesta estratégia de teste o testador tem acesso a algumas das operações internas do sistema, mas normalmente a uma base de dados através de consultas SQL, não visualizando seu código.

Como sabemos a técnica de Caixa Branca tem acesso direto ao código-fonte da aplicação, validando assim sua estrutura interna, mas na técnica de Caixa Preta não conhecemos sua estrutura interna, sabendo só as entradas e saídas sem conhecer o que é feito com a entrada.
Ainda sobre as duas abordagens, sabemos que no Caixa Branca quem cria e executa é o próprio desenvolvedor testando através de testes unitários e no Caixa Preta quem cria e executa é o testador.

Nos testes de Caixa Cinza juntamos estas duas estratégias: conhecimento interno do produto e saídas esperadas. Não vamos confundi-lo com os testes de Caixa Branca, que cobre com testes a estrutura interna.

"Testes baseados no conhecimento do algoritmo, estados internos, arquitetura ou outras descrições mais alto-nível do comportamento do programa" [Doug Holffman]

Analisar as atividades por trás dos componentes durante o processo de execução de teste.
Dois tipos de problemas podem ser encontrados durante os testes de caixa-cinza:
- O componente encontra uma falha de algum tipo, fazendo com que a operação seja abortada. A interface com o usuário (front-end) ira indicar que ocorreu algum problema
- Os testes executam com sucesso, mas o conteúdo dos resultados está incorreto. Um sistema processando dados incorretos causa erro no resultado. [Elfriede Dustin]

Para aplicar esta estratégia utilizamos como suporte, por exemplo, consultas no banco de dados para confirmar que a consulta que os dados da consulta ou filtro que executamos na tela está de acordo com os dados existente no banco.
Esta estratégia é aplicada aos testes de WebServices, mesmo sem você se dar conta, pois você necessita conhecer a estrutura interna (arquido wsdl) e saber os resultados que devem ser obtidos neste tipo de teste.

O conhecimento interno do funcionamento pode ser de:

* Modelo de Arquitetura da aplicação
* Diagrama UML (diagrama de classe e/ou diagrama de sequência)
* Diagrama ER

Muita atenção: o testador não precisa conhecer o código-fonte da aplicação, e na minha opinião nem deve pois não é o seu papel. Mas conhecer a estrutura da aplicação é interessante para aprimorar a abrangência dos testes.

Por enquanto é isso!
Abraços e qualquer duvida: comentários!

quarta-feira, 21 de maio de 2008

Visualizando gráficos de sumário no Mantis

No Mantis BugTracket temos o Summary, ou Resumos a tradução do português da ferramenta. Este resumo é composto por algumas tabelas de nos exibem diversas informações do tipo:
  • Issues abertas, resolvidas e testadas na perspectiva de
  • Projeto
  • Status
  • Gravidade
  • Categoria
  • Por dia
  • Por resolução
  • Por prioridade

Além de trazer alguns dados estatísticos como:
  • Tempo para casos resolvidos
  • Estatísticas de relatores
  • Estatísticas de Desenvolvedores
  • Eficiência do relator
  • Mais ativos
  • Aberto a x tempo

Isso nos traz uma base para criar novas métricas, atacar algum ponto que necessitamos e gerar gráficos....
Mas porque não fazer com que o próprio Mantis gere os gráficos?

Podemos inserir dentro do Mantis a aplicação JPGraph que é um conjunto de bibliotecas para a criação de gráficos para o PHP.

Para que o Mantis possa gerar estes gráficos faremos basicamente três passos:
  1. Baixar e submeter o JPGrath a pasta de instalação do Mantis
  2. Configurar o arquivo confir_inc_defaults.php do Mantis
  3. Testar a solução

Para atacarmos o item 1 vamos até a página do JPGraph , clicar no link Download. Teremos que clicar sobre o link jpgraph-1.22.1.tar.gz. Baixe este arquivo e descompacte ele numa pasta de sua escolha.

Atenção: note que existirão dois arquivos para download. O jpgraph-1.22.1.tar.gz é referente ao PHP4 e jpgraph-2.3.tar.gz é referente ao ao PHP5. No caso deste tutorial estamos utilizando a versão 1.22.1 pelo servidor que estou utilizando é PHP4.
Para verificar qual versão o Mantis deverá usar do PHP consulte este link: http://www.mantisbt.org/requirements.php

Quando descompactamos o arquivo veremos a pasta jpgraph-1.22.1 e dentro dela alguns arquivos de informação do jpgraph e duas pastas: doc e src. A pasta doc não é necessária para a cópia que faremos logo mais, mas fica a critério de cada um transportar esta pasta.

Copie a pasta jpgraph-1.22.1 para o diretório raiz do Mantis.

Agora iremos alterar o arquivo de configuração do Mantis.
Abra o arquivo config_defaults_inc.php e procure pelo atributo $g_use_jpgraph (esta na linha 569 do arquivo).
Estamos no grupo de configurações especificas do gráfico no Mantis.
O atributo $g_use_jpgraph diz se teremos a visualização dos gráficos no Mantis, o valor default é OFF. Mude este valor para ON.
O atributo $g_jpgraph_path monta o caminho para o jpgraph. Se você não renomeou a pasta do jpgraph (jpgraph-2.3) altere o valor deste atributo ficando como mostra abaixo:
$g_jpgraph_path = '.' . DIRECTORY_SEPARATOR . 'jpgraph-1.22.1' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR;

Agora basta acessar o Mantis e clicar sobre o link Summary.
Note que a tela terá as seguintes alterações:
Novo link Advanced Summary
Novos links na pagina Summary:
  • Syntesys
  • Per State
  • Per Pryority
  • Per Severity
  • Per Category
  • Per Solution



Na página Advanced summary temos os gráficos:
  • Cumulative By Date
  • By Developer
  • By Reporter
  • By Severity
  • By Status
  • By Resolution
  • By Category
  • By Priority



Bom, não vou mostrar as demais opções aqui pelo foco ser colocar a visualização de gráficos no Mantis.

Espero que este mini-tutorial tenha ajudado.
Abraços!

terça-feira, 13 de maio de 2008

Manual do TestLink 1.7 em português

Pessoal,
Está disponível pelo grupo DFTestes (grupo do Yahoo) o manual da ferramenta TestLink 1.7 em português (pt-br) para download.
Agradecimentos a estas moças pela tradução:
  • Marcela Batista Freire
  • Lizandra Carl Nascimento
  • Danielle Rangel
E a Ricardo Castilho.
Para baixar o documento é necessário fazer parte do grupo DFTestes

O TestLink é uma ferramenta web opensource para gerenciar Casos de Teste, bem como organizá-los em Planos de Teste.

Fora este documeto existem muitos outros que valem a pena serem baixados e estudados.

DFTestes: http://br.groups.yahoo.com/group/DFTestes/
TestLink: http://www.teamst.org/

sábado, 3 de maio de 2008

Conhecendo o BadBoy - parte 2

Nesse post iremos aprender a utilizar as ferramentas Data Source e FormPopulator do BadBoy e aplicar um exemplo.
Primeiro explicarei brevemente como funciona cada uma destas ferramentas no BadBoy e depois faremos um exemplo pratico.
No final do post existe uma video-aula mostrando como foi criado o scrip. Você também pode visualizar os scripts diretamente no Youtube pelo link http://br.youtube.com/sembugs


Data Source
Muitas vezes precisamos interagir com um banco de dados ou efetuar consultas para verificar resultados dos nossos testes manuais. O BadBoy traz este ferramenta para que possamos carregar dados de um banco de dados através de uma conexão ODBC do Windows.
Inserimos um Data Source no script arrastando e soltando ele da aba Tools até o ponto que desejamos. Um ponto importante é colocarmos o Data Source ligado a um step sem qualquer outro item no step. Existem alguns requisitos que devem ser atendidos para a correta utilização do Data Source:


  • Todos os valores para todas as variáveis devem aparecer um uma única tabela
  • O nome das colunas deve ser idênticos as das variáveis
  • Se existiram dados repetidos em uma coluna, crie uma coluna de identificação com um numero seqüencial
Quando adicionamos um Data Source podemos ter a conexão ODBC criada ou simplesmente criá-la pela própria interface do BadBoy. A janela de propriedades do Data Source apresenta quatro itens importantes:

  • DataSource: é nele que selecionamos ou criamos a conexão ODBC. No momento que você insere o Data Source (item) é apresentada a tela para criar ou selecionar a conexão ODBC. Se você necessitar alterar a conexão clique no botão Change..
  • Load from Table: Selecione a tabela ou planilha apresentada pela conexão ODBC. É desta tabela que os dados serão carregados
  • Load Using SQL: Se necessitarmos carregar parte dos dados de uma tabela podemos escrever um comando em SQL para carregar estes dados
  • Map Columns to Variables: Se marcado como Automatic o BadBoy pressupõe que o nome das colunas da tabela e das variáveis são idênticas. Com Custom nos selecionamos somente as colunas que desejarmos.



A utilização correta do Data Source para efetuarmos loops no script tem de estar ligada a um step. Para isso devemos entrar nas propriedades do step e marcar o item Repeat for each value of variable e informar a variável. Note que já devemos ter a variável criada. Outro item a ser levado em consideração é que toda a ação na pagina que dependa do loop deve Ester contida neste step.






Form Populator

Em praticamente todas as paginas web que necessitam que o usuário entre com dados nele são utilizados um elemento HTML chamado Form. O Form HTML consiste em caixas de entrada de dados e um botão de submissão destes dados.

O BadBoy trabalha muito bem com esse elemento HTML através do Form Populator. Ele basicamente verifica se existe algum elemento Form na pagina e pega todos os dados dele, trazendo a informação consigo para poder popular com dados.
Não precisamos utilizar o Form Populator para a maioria dos scripts criados, uma vez que os dados já são transmitidos por parâmetros no request (requisição). Utilizamos ele em casos que não conseguimos, de forma fácil, entrar com dados em um formulário.





Para inserir um Form Populator devemos inseri-lo abaixo da requisição que contem o Form.
Podemos clicar sobre cada informação carregada pelo Form e inserir um dado ou atribuir a ele uma variável, como mostra a figura acima. Na propriedade do Form podemos informar o elemento Form alvo e se o método é Populate ou Clear, ou seja, inserir valores ou limpar o Form.

Exemplo de utilização do Data Source e Form Populator
Agora veremos um exemplo pratico de como utilizar estas duas ferramentas. Nosse exemplo será sobre o site de demonstração da ferramenta TestLink, onde criaremos um script que efetua o login com dois usuários, um de cada vez, e no momento do login verificarmos se o usuário que entrou no sistema é o correto. Primeiro teremos que criar um banco de dados no MS Access com duas colunas: login e password e inserir os valores abaixo. A vídeo-aula mostra como criar o banco.

login password
admin testlink
leader leader


Agora é necessário criar uma conexão ODBC com qualquer nome, vamos escolher “BanocBadBoy”. A video-aula mostra como criar a conexão ODBC.
Depois do banco e a conexão ODBC criada vamos partir para a criação do script:



  1. Abra o BadBoy e no primeiro step arraste e solte o item Data Source para ele. Será apresentada a tela para selecionarmos ou criarmos a conexão ODBC. Como já criamos selecionamos a conexão criada (BancoBadBoy ou o nome escolhido por você)
  2. Após selecione a tabela criada segundo a estrutura que falamos acima. Feche a janela de propriedades do Data Source.
  3. Agora insira um step e digite o seguinte endereço na barra de URL: http://testlink.org/demo/login.php. Será criada uma requisição para a página.
  4. Arraste a ferramenta Form Populator para baixo da requisição criada. Será apresentada sua tela de propriedades. Feche a janela. O Form Populator deve apresentar os campos de login e password abaixo dela.
  5. Insira o usuário admin e senha testlink para autenticação no TestLink. Sera criada uma nova requisição.
  6. Seleciona o texto “Role :: [ admin ]” e clique no botão Easy Assertion. Isso servirá depois para validarmos o usuário.
  7. Depois da asserção criada efetue um logoff no sistema.
  8. Agora vá até a requisição abaixo do Form Populate e crie duas variáveis para os parâmetros de login e password clicando com o botão direito sobre cada uma e selecionando Add as variable
  9. Entre nas propriedades do Check da Assertion criada. Dentro do texto do Check substitua “admin” por “${login}”.
  10. Em cada item do Form Populator insira a variável correspondente digitando o nome dela para cada um.
  11. Agora entre nas propriedades do Data Source, selecione o item Custom no painel Map columns to variables e deixe marcado os dois itens: login e password.
  12. Agora basta fazem a repetição do step que contem todas as ações na pagina. Fazemos isso abrindo a janela de propriedades do step e selecionando o item For each value of variable com o valor login.
    Fazendo isso dizemos que o step vai ser executado novamente para cada valor de login diferente no banco de dados.

Agora é só executar o script, na primeira iteração ele ira preencher os dados com o usuário admin e verificar pela Assertion se o nome do usuário é igual ao mostrado na tela. Depois do logoff o valor de login é alterado e o step é executado novamente.


Fontes do exemplo (banco e script) aqui.


Como criar o banco com MS Access



Como criar a conexão ODBC no Vista (semelhando no Windows XP)


Como criar o script de exemplo