Teste de Software e Utilidades…

O Uso do Record And Play/Replay

Posted in Teste de Software by jppercy on 08/12/2010

Trabalho com AutoIt há quase cinco anos. Não digo que é a melhor ferramenta a ser escolhida, mas, assim como outras, possui falhas e acertos;… neste caso, os prós, contando com uma ajuda impecável; facilidade de compreensão; criação rápida de um executável. Seguindo como contra a falta de um debugger, tendo que ser feito pelo uso de msgbox.

 Pontos relevantes, mas que só são vistos após muita prática e pesquisa.

Resolvi falar desse assunto por conta de comentários que vi durante o mês passado a respeito do uso do “Record and Play/Replay” pelo Camilo Ribeiro (www.bugbang.com.br) e pelo Elias Nogueira (http://sembugs.blogspot.com). Concordo com o que foi dito, e, retirando do twitter, segue o diálogo – Elias: “Porque sempre que automatizamos os testadores ficam preguiçosos e poem a culpa toda nela quando na verdade é no trabalho deles o problema?” – Camilo: “(…) porque exige muito mais do que gravar scripts e muitas vezes os testadores são MUITO dependentes do Record and Replay?”.

 Expondo o meu ponto de vista e dando ênfase às palavras dos dois, acredito que o uso desta funcionalidade deva ser de uso apenas para se inicializar um processo de aprendizagem, nada além disso, justamente por conta de ser um código inteiramente sujo, dependente do estado atual da máquina e dependente de manutenção.

Ao se criar um script de teste, os cuidados devem ser os mesmos que um desenvolvedor precisa ter ao escrever seus códigos, ou seja, dependendo da empresa, o uso constante de comentários e/ou variáveis com nomes fáceis e descritivos devem ser observados; o uso de indentação é imprescindível, visto que a leitura do código é completamente influenciada.

Um exemplo do que ocorre em um código utilizando ´”Record and Play/Replay” é a seguinte:

#region — ScriptWriter generated code Start —

Opt("WinWaitDelay",100)
 Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
WinWait("C:\Users\joao\Desktop\teste.au3 - SciTE [6 of 6]","Source")
If Not WinActive("C:\Users\joao\Desktop\teste.au3 - SciTE [6 of 6]","Source") Then WinActivate("C:\Users\joao\Desktop\teste.au3 - SciTE [6 of 6]","Source")
WinWaitActive("C:\Users\joao\Desktop\teste.au3 - SciTE [6 of 6]","Source")
Send("{LWINDOWN}r{LWINUP}")
WinWait("Executar","Digite o nome de um ")
If Not WinActive("Executar","Digite o nome de um ") Then WinActivate("Executar","Digite o nome de um ")
WinWaitActive("Executar","Digite o nome de um ")
Send("calc{ENTER}")
WinWait("Calculadora","0")
If Not WinActive("Calculadora","0") Then WinActivate("Calculadora","0")
WinWaitActive("Calculadora","0")
MouseMove(111,260)
MouseDown("left")
MouseUp("left")
WinWait("Calculadora","3")
If Not WinActive("Calculadora","3") Then WinActivate("Calculadora","3")
WinWaitActive("Calculadora","3")
MouseMove(151,293)
MouseDown("left")
MouseUp("left")
WinWait("Calculadora","3 +")
If Not WinActive("Calculadora","3 +") Then WinActivate("Calculadora","3 +")
WinWaitActive("Calculadora","3 +")
MouseMove(72,258)
MouseDown("left")
MouseUp("left")
MouseMove(190,278)
MouseDown("left")
MouseUp("left")
WinWait("Calculadora","5")
If Not WinActive("Calculadora","5") Then WinActivate("Calculadora","5")
WinWaitActive("Calculadora","5")
MouseMove(198,15)
MouseDown("left")
MouseUp("left")

#endregion — ScriptWriter generated code End —

 

Neste exemplo estou utilizando a funcionalidade do AutoIt denominada: AU3Record. E apenas peguei o que o programa gerou ao final.

Para fins de compreensão estou abrindo uma Calculadora, clicando em ‘3’, depois no sinal de ‘+’, depois em ‘2’ e finalmente em ‘=’. Logo após ver o resultado, fecho o aplicativo. Simples assim.

Mas, o que vemos é muita coisa que não deveria estar ali. Ajustando o programa e otimizando-o, ficaria assim:

 

; uso desta opção apenas para visualizar os cliques na calculadora neste exemplo
Opt( "MouseClickDelay", 700 )
 
; método de execução padrão em todos os Sistemas Operacionais;
; por conta disso, não é preciso passar o caminho completo do arquivo, e nem a diferenciar de sistema em portugues e ingles
Run( "calc.exe" )
 
$CalcTitle = "[CLASS:SciCalc]"
 
WinWaitActive( $CalcTitle )
 
; clicando em ‘3’
ControlClick( $CalcTitle, "", "Button15" )
 
; clicando em ’+’
ControlClick( $CalcTitle, "", "Button20" )
 
; clicando em ‘2’
ControlClick( $CalcTitle, "", "Button11" )
 
; clicando em ‘=’
ControlClick( $CalcTitle, "", "Button21" )
 
; fechando a calculadora
WinClose( $CalcTitle )

 

Voltando ao primeiro exemplo, e já afirmando que ele não irá funcionar de modo satisfatório, o problema já aparece na 5ª linha, onde: ‘WinWait(“C:\Users\joao\Desktop\teste.au3 – SciTE [6 of 6]”,”Source”) ‘ . O programa está na espera de que o editor de código do AutoIt esteja aberto e na aba 6/6. Ou seja, tentar pegar esse programa e rodar em outro lugar que não tenha essa devida adaptação, não irá funcionar. Enquanto que o segundo exemplo rodará em qualquer Sistema Operacional (Windows – Plataforma 9x/NT exceto Windows 7).

 

Independente do modo como um script será desenvolvido é preciso se atentar à técnica de teste empregada, em específico, o ambiente de teste. Classes de janelas, botões e textos mudam, e às vezes até demais de um sistema para o outro. Cito isso por conta deste programa não rodar no Windows 7 justamente por causa da mudança de classe da janela e os Id’s dos botões, mas, como é só um exemplo, resolvi não me estender muito.

 

Bom, é isso. Espero que este post sirva de ajuda a quem insiste em usar somente o “Record and Play/Replay”. Fazer ajustes no código após utilizar esse método ainda sim é perigoso, pois muita coisa é desnecessária e isso pode confundir quem está iniciando, fazendo com que o mesmo utilize funções erradas durante todo o processo. Caso realmente tenha que utilizar esse método, faça a gravação, veja o resultado e pesquise as funções na ajuda do próprio ambiente de desenvolvimento, buscando funções relacionadas que às vezes podem responder tão bem quanto às utilizadas pelo “gravador”.

2 Respostas

Subscribe to comments with RSS.

  1. Camilo Ribeiro said, on 08/12/2010 at 5:24 PM

    Parabéns pelo Post!

    Resume muito do que eu penso sobre automação. Agente fala tanto sobre desenvolvimento tosko de software e uso de “eXtreme Go Horse” para desenvolver mas esquecemos que somos muito piores quando não pensamos antes de automatizar qualquer funcionalidade.

    Seu exemplo ficou muito interessante também. Acredito que refinar o script ou pelo menos entender ele é o básico.

    Eu uso o Record and Replay, e acho uma invenção fantástica, mas aumenta consideravelmente o retrabalho quando usado sem nenhum planejamento.

    Abraços e parabéns pelo blog.

  2. […] O Uso do Record And Play/Replay – João Paulo Percy (Teste de Software e Utilidades…); […]


Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: