testes funcionais orientado a imagem - sikuli

Post on 16-Nov-2014

979 Views

Category:

Technology

17 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

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

Vanilton Pinheirovanilton18@gmail.com

1

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

vanilton18@gmail.com

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

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

Vanilton Pinheirovanilton18@gmail.com

45

top related