• Profissional Pós-graduando em Engenharia de Software com Ênfase em Desenvolvimento Web.
• Bacharel em Ciência da Computação.• Experiência de 2 anos em Teste de Software através de Planejamento de
teste, especificação, execução e geração de resultados de teste em arquiteturas Web, Móveis e Desktop.
• Conhecimento em metodologias ágeis e projetos de software ágeis. Aplicação de técnicas de teste Caixa Preta e Caixa Branca.
• Experiência no uso de linguagem Java e ferramentas como Cucumber-JVM, JUnit, Selenium Webdriver, Robotium, Bugzilla, TestLink e Sikuli.
• Autor colaborador no Relato de experiência "Especificação e Automação Colaborativas de Testes utilizando a técnica BDD" publicado no SBQS 2013.
Apresentação
Contatos:
Vanilton Pinheiro
br.linkedin.com/in/vaniltonpinheiro
2
Tópicos
• Introdução • História Sikuli• Conhecendo Sikuli IDE
• Instalação e Configuração• Interface, Menus e Comandos• Interações, condições e funções• Limitações• Exemplos
• Sikuli com Biblioteca Java• Criação de Projeto Java utilizando Sikuli• Casos de teste funcionais com Sikuli script e Junit 4
3
Introdução
• O que é?• Testes funcionais que permitem avaliar as funcionalidades desenvolvidas a
fim de verificar se estão de acordo com as necessidades do cliente.• Para que serve?
• Automatizar a realização de tarefas que envolvem a leitura de dados da tela, de uma aplicação ou mesmo do sistema operacional. Possui diversos elementos que podem ser lidos e utilizados para automatizar a execução de tarefas.
• Como aplicar?• Utilizando ferramentas específicas que fazem análise de imagem para
executar as ações de um usuário. Ex: Sikuli.4
Introdução• Quando utilizar?
• “A automação é útil quando: os resultados podem ser verificados por uma máquina, sem julgamento humano ou esperteza necessária, ou para casos onde os testes são repetitivos, caso contrário, o teste manual é a melhor abordagem.” James Whittaker - How Google Tests Software ( 2012)
5
• O sistema foi projetado sob a licença MIT pelo professor Rob Miller, estudante de graduação Tsung-Hsiang Chang, e Tom Yeh da Universidade de Maryland.
• Sikuli tem este nome, pois foi baseado uma palavra da língua dos Índios Huichol do México que significa “Olho de Deus", ou seja, o poder de ver e entender as coisas desconhecidas.
• O Sikuli foi desenvolvido para atuar em um ambiente de script baseado em captura de tela que pode sinalizar um novo paradigma de programação que utiliza a interface gráfica como uma espécie de API.
História Sikuli
Rob Miller
Tom Yeh6
Lema
• Tom Yeh define o Sikuli com o lema “O que você vê é o que você codifica”. Baseado numa metáfora GUI de “O que você vê é o que obtém“.
7
Conhecendo o Sikuli IDE - (Integrated Development Environment)
O Sikuli possui dois componentes:
•Sikuli IDE: uma ambiente de desenvolvimento integrado (IDE) que possibilita a escrita de scripts visuais utilizando screenshots;
•Sikuli Script: uma API de scripts visuais para Jython, é por meio dele que os scripts criados no Sikuli IDE, são processados. 8
1. Possuir instalado o Java x86/x64 versão 6 ou 7.2. Estar conectado a internet.3. Realizar o download do aplicativo em:
https://launchpad.net/sikuli/+download4. Criar uma pasta chamada Sikuli.5. Copiar o arquivo de instalação para a pasta criada. 6. Executar o arquivo: sikuli-setup.jar e aguardar a geração de
runSetup.cmd7. Executar o arquivo runSetup.cmd8. Marcar a primeira opção e avançar.
Instalação e Configuração
9
9. Acessar as variáveis de ambiente do Windows.10. Variáveis do sistema
– Path
11. Adicionar ao final o caminho da pasta libs do Sikuli.12. Exemplo: C:\Sikuli\libsPronto!
Instalação e Configuração
10
Interface Sikuli IDE
11
Menus
12
Preferências
13
Preferências – More Options
14
Configurações de PadrãoEsta tela é exibida quando clicamos em uma imagem já recortada pela IDE do Sikuli.
15
Comandos Sikuli IDE – Ações do Mouse
• click(imagem)• Clica numa dada imagem com o botão
esquerdo do mouse.
• rightClick(imagem)• Clica numa dada imagem com o botão direito
do mouse.
• doubleClick(imagem)• Realiza a ação de dois cliques numa dada
imagem com o mouse.
• hover(imagem)• Cobre uma dada imagem com o ponteiro do
mouse.
• dragDrop(img1, img2)– Arrasta o objeto definido na img1
para a área definida na img2.
16
Comandos Sikuli IDE – Ações do Teclado• type(imagem,texto)
– Digita o texto passado na área definida na imagem.• paste(imagem,texto)
– Cola o texto passado no parâmetro na área definida na imagem.
• type(texto)– Digita o texto passado onde está o foco do cursor do mouse.
• paste(texto)– Cola o texto passado no parâmetro onde está o foco do cursor do mouse.
• type(Key.ENTER)– Realiza a ação da tecla ENTER em um dado local com foco.
• type(“d”, Key.META)– Realiza a ação em conjunto das teclas “Windows + d”. (Atalho do Windows
que minimiza todas as janelas)17
Comandos Sikuli IDE – Funções de Localização
• exists(imagem)• essa função verifica se é possível encontrar a
imagem que está como parâmetro. Se for possível, uma ação pode ser realizada, caso contrário, poderá ser executada outra ação de preferência.
• wait(imagem, Tempo de espera)• essa função recebe como parâmetro uma
imagem e, opcionalmente, pode receber também um tempo máximo de espera. É responsável por esperar que a imagem parâmetro seja encontrada, para somente depois continuar com suas ações.
• waitVanish(imagem, Tempo de espera)
– tem o objetivo oposto da função wait(Imagem, tempo de espera). Essa função espera a imagem desaparecer para continuar uma ação.
• find(imagem)– função que permite procurar uma única
imagem que pareça com a que está no parâmetro. A Imagem em parâmetro pode ter uma pequena diferença com alguma imagem existente que, mesmo assim, a função a irá encontrar. 18
Comandos Sikuli IDE – Funções de Localização
• findAll(imagem)• mesmo objetivo da função find(Imagem), só
que procura em vários pontos diferentes por uma imagem igual à que foi passada como parâmetro. Essa função pode considerar uma porcentagem maior de diferença entre a imagem parâmetro e a encontrada para considerá-la como válida.
19
Comandos Sikuli IDE – Funções observatórias de eventos• onAppear(Imagem, Handler)
• essa função fica aguardando para ser executada somente quando aparecer uma área igual à área que está representada pela figura em parâmetro. O parâmetro Handler pode ser uma nova função que somente é executada quando a imagem do parâmetro aparecer na tela.
• observe() • função responsável por observar determinada área a fim de permitir ao criador do script tomar
alguma decisão.
• onChange(handler)• essa função tem por objetivo realizar uma determinada tarefa sempre que uma modificação for
realizada em alguma região pré-definida.
• onVanish(Imagem, Handler)• mesmo objetivo da função onAppear(Imagem, Handler), com a diferença de que esta espera a
área correspondente à imagem parâmetro sumir para depois executar uma ação qualquer.20
Comandos Sikuli IDE – Outras Funções
• App.open(path)• essa função abri uma aplicação passando como
parâmetro seu caminho.• popup(‘texto’) • essa função quando utilizada retorna um popup na
tela, e a continuação das demais instruções fica pausada enquanto não finalizar o popup.
• print(‘texto’)• essa função quando utilizada exibi no console da
Sikuli IDE o texto passado como parâmetro.
21
Interações Condições e Funções Sikuli IDE• def NomeDaFuncao():
• Comando1• Comando 2..Chamada da função NomedaFuncao()
• for x in range(vInicial, vFinal):• Comando 1• Comando 2..
• while (find(), exists()): # Devem retornar um boolean• Comando 1• Comando 2...
• If(exists(),find()): # Devem retornar um boolean• Comando1 • Comando 2
• Else:• Comando 1• Comando 2
22
Limitações• Necessidade de ambiente estar visível na tela.• Focus nas aplicações a serem testadas.• Integração de testes • Resoluções de tela• Similaridade
23
Exemplo 1 – Arraste arquivo para lixeira
24
Exemplo 1 – Arraste arquivo para lixeira
25
Executando projetos via linha de comando
• Com o projeto salvo é possível executar via linha de comando o Projeto.sikuli ou o projeto exportado para .skl.
• Opções1.Utilizando o sikuli-script.jar
• java -jar %SIKULI_HOME%\sikuli-script.jar –r path-to-your-script\yourScript.sikuli
2.Utilizando a chamada d Sikuli IDE• %SIKULI_HOME%\RunIDE.cmd -r path-to-your-script\yourScript.skl
26
Exemplo 2 – Pesquisa no Google Chrome
27
Exemplo 2 – Pesquisa no Google ChromeScript IDE
Script gerado em python
28
Exemplo 3 – Similaridade
29
Exemplo 3 - Similaridade
30
http://notebook:8081/Logo_Windows.png
Exemplo 3 – Similaridade
A operação de localização findAll() retorna um objeto iterator que pode ser usado para buscar todas as correspondências encontradas como objetos Matches um por um. Uma referência para o iterator é armazenado na respectiva região e pode ser acessado usando getLastMatches().
31
Sikuli com Biblioteca Java
• Para utilizar o Sikuli no Java iremos utilizar a biblioteca sikuli-script.jar que retiramos do setup de instalação da ferramenta. Esta biblioteca possui todos os métodos utilizados para realizar os comandos feitos na própria IDE do Sikuli.
32
Eclipse IDE (caso já possua na máquina não há necessidade de baixar)https://www.eclipse.org/downloads/
Instalação e Configuração Eclipse
33
Criação de Projeto Java com Sikuli
1. Utilizando a IDE Eclipse Criar um Novo Projeto Java.
34
Criação de Projeto Java com Sikuli
2. Definir o nome para o Projeto.3. Na seção JRE utilizar a opção de
compilação através do JDK.4. Avançar a tela no botão “Next”.
35
Criação de Projeto Java com Sikuli
5. Acessar a Aba Libraries.6. Clicar na opção “Add External JARs”7. Selecionar o sikuli-script.jar.
36
Criação de Projeto Java com Sikuli
8. Clicar no botão Finish.
37
Criação de Projeto Java com Sikuli
9. Acessar a tela de criação de uma nova classe java.
38
Criação de Projeto Java com Sikuli
10. Preencher as informações de Package, Name e marcar a opção para método main.
11. Clicar em Finish.
39
Importando e instanciando Objeto da classe Screen
OBS: Em caso de exibir um erro após a execução referente ao caminho para as libs que contêm as dll’s usadas pelo Sikuli, definir o caminho onde as mesmas estão localizadas na variável de ambiente PATH.Ex: Unidade:\Workspace\NomeProjeto\libs\libs Reiniciar a IDE Eclipse.
40
Exemplo Drag and Drop com Sikuli em Java
41
Exemplo de Pesquisa Google
42
Exemplo de Similaridade com Java e framework JUnit
43
Referências• https://launchpad.net/sikuli/+download• http://www.sikuli.org/• http://doc.sikuli.org/faq/030-java-dev.html• http://aberto.univem.edu.br/bitstream/handle/11077/327/Teste%20funcional
%20baseado%20em%20diagramas%20da%20UML.pdf• http://web.mit.edu/newsoffice/2010/screen-shots-0120.html• http://www.devmedia.com.br/websys.5/webreader.asp?
cat=48&artigo=5028&revista=esmagazine_53#a-5028• http://www.devmedia.com.br/desafios-e-beneficios-da-automacao-de-testes-
engenharia-de-software-magazine-58/28051• http://qualidadebr.wordpress.com/tag/sikuli/• http://www.sikulix.com/
44