45
AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI Vanilton Pinheiro [email protected] 1

Testes Funcionais Orientado a Imagem - Sikuli

Embed Size (px)

DESCRIPTION

A apresentação buscar demostrar o uso da ferramenta Sikuli que realiza testes baseados em imagens expostas na tela principalmente para aplicações Desktop, juntamente com sua aplicação através da linguagem Java.

Citation preview

Page 1: Testes Funcionais Orientado a Imagem - Sikuli

AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI

Vanilton [email protected]

1

Page 2: Testes Funcionais Orientado a Imagem - Sikuli

• 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:

[email protected]

Vanilton Pinheiro

br.linkedin.com/in/vaniltonpinheiro

2

Page 3: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 4: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 5: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 6: Testes Funcionais Orientado a Imagem - Sikuli

• 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

Page 7: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 8: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 9: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 10: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 11: Testes Funcionais Orientado a Imagem - Sikuli

Interface Sikuli IDE

11

Page 12: Testes Funcionais Orientado a Imagem - Sikuli

Menus

12

Page 13: Testes Funcionais Orientado a Imagem - Sikuli

Preferências

13

Page 14: Testes Funcionais Orientado a Imagem - Sikuli

Preferências – More Options

14

Page 15: Testes Funcionais Orientado a Imagem - Sikuli

Configurações de PadrãoEsta tela é exibida quando clicamos em uma imagem já recortada pela IDE do Sikuli.

15

Page 16: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 17: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 18: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 19: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 20: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 21: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 22: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 23: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 24: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo 1 – Arraste arquivo para lixeira

24

Page 25: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo 1 – Arraste arquivo para lixeira

25

Page 26: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 27: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo 2 – Pesquisa no Google Chrome

27

Page 28: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo 2 – Pesquisa no Google ChromeScript IDE

Script gerado em python

28

Page 29: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo 3 – Similaridade

29

Page 30: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo 3 - Similaridade

30

http://notebook:8081/Logo_Windows.png

Page 31: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 32: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 33: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 34: Testes Funcionais Orientado a Imagem - Sikuli

Criação de Projeto Java com Sikuli

1. Utilizando a IDE Eclipse Criar um Novo Projeto Java.

34

Page 35: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 36: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 37: Testes Funcionais Orientado a Imagem - Sikuli

Criação de Projeto Java com Sikuli

8. Clicar no botão Finish.

37

Page 38: Testes Funcionais Orientado a Imagem - Sikuli

Criação de Projeto Java com Sikuli

9. Acessar a tela de criação de uma nova classe java.

38

Page 39: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 40: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 41: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo Drag and Drop com Sikuli em Java

41

Page 42: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo de Pesquisa Google

42

Page 43: Testes Funcionais Orientado a Imagem - Sikuli

Exemplo de Similaridade com Java e framework JUnit

43

Page 44: Testes Funcionais Orientado a Imagem - Sikuli

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

Page 45: Testes Funcionais Orientado a Imagem - Sikuli

AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI

Vanilton [email protected]

45