quarta-feira, 31 de julho de 2013

Laço condicional: while

É raro um código hoje que não exista pelo menos um laço condicional. Aquela repetição que se não for feita de forma correta acarretará em um erro impeditivo, podendo se repetir até que o projeto seja cancelado (o famoso loop infinito) e o problema corrigido.
 
Dentre as formas de fazer loop a que mais me agrada é o while (que traduzido para português, significa enquanto).
 
Mesmo sendo simples, existem algumas pessoas que ainda se perguntam quando e como usá-lo. Algumas até o confundem com o IF, com o CASE... Mas aqui vou mostrar um exemplo de utilização desse laço aplicado no contexto de Automação, novamente com o TestComplete.
 
No projeto em que estou atuando no momento, precisei fazer inúmeras vezes, e vou provar que não há segredo.
 
Quando devemos usá-lo?
 
Sempre que precisar repetir determinada ação, validar se algo existe ou não, contar o tempo que determinado componente está gastando para sumir da tela..., o uso do laço condicional while será bem vindo!
 
Vamos ao exemplo
 
Suponhamos que um componente Button demora um pouco para aparecer pois nosso sistema é muito pesado, ou a funcionalidade para abrir faz muitas consultas ao banco. Portanto, precisamos aguardar até que ele apareça na tela para que outra ação seja executada, digamos que um evento Click() no mesmo.
 
Em bom português, a lógica está escancarada, bastando ler com atenção: 
 
Enquanto Button Não Existe Aguarde
 
No TestComplete, dependendo das propriedades do objeto Button, o código, em JScript, ficaria da seguinte forma:
 
 
É isso, simples, rápido e prático!
 
Existem outras formas de validar ou não a existência de um objeto, tais como o WaitChild(parametros) e o WaitWindow(parametros), sobre os quais falarei separadamente em posts futuros.
 
Dúvidas, estou à disposição.

segunda-feira, 22 de julho de 2013

Data-Driven Testing com TestComplete 9.30

De acordo com Leonardo Molinari, autor do livro Inovação e Automação de Testes de Software, "Data-Driven test ou teste dirigido a dados consiste na criação de um script e depois fazer uso de uma massa de dados que será executada no script, dirigindo a forma como o script será executado, bem como a quantidade de vezes que ele será executado."

No exemplo que mostrarei a seguir, através de uma tabela (ou conjunto de tabelas) de um banco de dados (SQL Server 2008), faremos a inserção de dados via script para que nossa aplicação seja testada. Ou seja, ao invés de atribuir um valor fixo para determinado campo,


vamos atribuir para esse campo o que estiver na coluna/linha de determinada tabela do banco de dados,


fazendo com que nosso código seja dirigido a dados, nesse caso, do banco SQL Server.

Vamos ao exemplo.

----

Para começar, precisamos de uma conexão com o banco de dados. Para isso usaremos o objeto ADO que o TestComplete disponibiliza e criaremos uma função conforme abaixo (note que cada linha está comentada com o que a linha logo abaixo está fazendo):


Agora que temos uma função responsável por acessar o banco de dados, iremos chamá-la em uma nova função que será responsável por retornar os registros de uma dada tabela:



E para finalizar, faremos uma simples atribuição dos valores encontrados em uma tabela qualquer para os campos de uma página web. Suponhamos que os campos dessa página já estejam mapeados sob os nomes txtLogin e txtSenha.


Existem inúmeras opções de variações para o que fizemos. Poderíamos: 
  • fazer um loop usando while para buscar todos os registros da tabela USUARIO;
  • criar regras para selecionar determinados registros, e deixar outros sem usar;
  • usar uma planilha do Excel para fazer o DDT, mas mostrarei em outro post.
Pronto! Espero que tenha ficado claro.
 
Quaisquer dúvidas, fiquem à vontade para questionamentos nos comentários.

quinta-feira, 11 de julho de 2013

O que é um Arquiteto de Teste de Software?

Muitos pensam (vários até afirmam) que para ser um Arquiteto de Teste de Software, primeiro você precisa de experiência como Analista de Testes. Posso afirmar com propriedade que isso não é verdade, pois sou a prova viva de que isso não é um requisito obrigatório.
 
Trabalho há mais de anos na mesma empresa, fui contratado inicialmente para atuar como Analista de Testes, mas no primeiro dia de trabalho já fui alocado como Arquiteto. O motivo? Extrema facilidade com lógica de programação, auto-desenvolvimento acima da média, conhecimento satisfatório em consultas SQL e muita vontade de aprender.
 
Mas o que faz um Arquiteto? Tudo que um Analista faz, e mais um pouco, mas mais focado para a infraestrutura do processo de desenvolvimento.
 
Dentre as minhas principais atividades, estão:
  • Automação de testes funcionais e não-funcionais
  • Execução de testes não-funcionais
  • Preparação e manutenção de ambientes virtuais
  • Gerenciamento e manutenção de bancos de dados¹
  • Desenvolvimento de ferramentas para uso interno
 
Para as atividades citadas, são necessários conhecimentos específicos em várias ferramentas. Em uma infinidade delas para ser sincero.
 
Para se ter idéia:
  •  na Automação usamos TestComplete* (para ambiente desktop e web) e Selenium WebDriver** (exclusivamente web);
  • nos testes não-funcionais, JMeter**, LoadComplete*, WebLoad*, dentre outros;
  • na preparação de ambientes virtualizados, usamos o Hyper-V*, ferramenta da Microsoft, e em casos excepcionais, o VirtualBox** e com menos frequência o VMWare*;
  • quando o assunto é banco de dados, a empresa em que trabalho fornece suporte para duas plataformas: Oracle**, gerenciada por ferramentas como SQLDeveloper, Oracle Enterprise Manager, Toad, WinSQL, linhas de comando com SQLPlus, dentre outras; e SQL Server**, principalmente através do Management Studio e também por linha de comando usando o sqlcmd;
  • e por fim, no caso de surgir a necessidade de desenvolver ferramentas, somos livres para usar o que precisar (mas isso pode variar nas empresas): no meu caso, quando entrei aqui, trabalhei em um projeto desenvolvido em VB6*. Recentemente trabalhei no desenvolvimento de um framework escrito em Java**.
 
Ser Arquiteto de Testes exige muito do profissional. Não falo isso para diminuir outros cargos; muito menos para superestimar o meu.
 
Portanto, se você pretende seguir essa maravilhosa carreira, prepare-se para estudar e seja muito bem vindo!
 
---------------------------
¹ Temos um DBA na equipe, mas para o caso de ele não estar presente um dia, temos que estar à altura para substitui-lo. 
* Ferramentas pagas
** Ferramentas Open Source