SlideShare une entreprise Scribd logo
1  sur  45
AUTOMAÇÃO DE TESTES FUNCIONAIS
ORIENTADO A IMAGEM - SIKULI
Vanilton Pinheiro
vanilton18@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 Yeh
6
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/+download
4. 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.cmd
7. Executar o arquivo runSetup.cmd
8. 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
9. Adicionar ao final o caminho da pasta libs do Sikuli.
10. Exemplo: C:Sikulilibs
Pronto!
Instalação e Configuração
10
Interface Sikuli IDE
11
Menus
12
Preferências
13
Preferências – More Options
14
Configurações de Padrão
Esta 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ções
1.Utilizando o sikuli-script.jar
• java -jar %SIKULI_HOME%sikuli-script.jar –r path-to-your-scriptyourScript.sikuli
1.Utilizando a chamada d Sikuli IDE
• %SIKULI_HOME%RunIDE.cmd -r path-to-your-scriptyourScript.skl
26
Exemplo 2 – Pesquisa no Google Chrome
27
Exemplo 2 – Pesquisa no Google Chrome
Script 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:WorkspaceNomeProjetolibslibs
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 Pinheiro
vanilton18@gmail.com
45

Contenu connexe

Tendances

BDD with CucumberJS and WebdriverIO
BDD with CucumberJS and WebdriverIOBDD with CucumberJS and WebdriverIO
BDD with CucumberJS and WebdriverIOM Rizwanur Rashid
 
Codeception presentation
Codeception presentationCodeception presentation
Codeception presentationAndrei Burian
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
Web Components and Security
Web Components and SecurityWeb Components and Security
Web Components and SecurityTyler Peterson
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018Amazon Web Services Korea
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java worldAshok Kumar
 
QA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumQA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumLyudmil Latinov
 
WebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testingWebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testingDaniel Chivescu
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Prettier - a newer approach to code formatting
Prettier -  a newer approach to code formattingPrettier -  a newer approach to code formatting
Prettier - a newer approach to code formattingMarco Liberati
 
Module 4: Secure your cloud applications - AWSome Day Online Conference 2019
Module 4: Secure your cloud applications - AWSome Day Online Conference 2019Module 4: Secure your cloud applications - AWSome Day Online Conference 2019
Module 4: Secure your cloud applications - AWSome Day Online Conference 2019Amazon Web Services
 
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s ClustersDeploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s ClustersSyah Dwi Prihatmoko
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
Codeception introduction and use in Yii
Codeception introduction and use in YiiCodeception introduction and use in Yii
Codeception introduction and use in YiiIlPeach
 

Tendances (20)

BDD with CucumberJS and WebdriverIO
BDD with CucumberJS and WebdriverIOBDD with CucumberJS and WebdriverIO
BDD with CucumberJS and WebdriverIO
 
Codeception presentation
Codeception presentationCodeception presentation
Codeception presentation
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
Web Components and Security
Web Components and SecurityWeb Components and Security
Web Components and Security
 
Automating with Ansible
Automating with AnsibleAutomating with Ansible
Automating with Ansible
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
QA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumQA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. Selenium
 
Vue.js for beginners
Vue.js for beginnersVue.js for beginners
Vue.js for beginners
 
WebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testingWebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testing
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Docker
DockerDocker
Docker
 
Prettier - a newer approach to code formatting
Prettier -  a newer approach to code formattingPrettier -  a newer approach to code formatting
Prettier - a newer approach to code formatting
 
Module 4: Secure your cloud applications - AWSome Day Online Conference 2019
Module 4: Secure your cloud applications - AWSome Day Online Conference 2019Module 4: Secure your cloud applications - AWSome Day Online Conference 2019
Module 4: Secure your cloud applications - AWSome Day Online Conference 2019
 
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s ClustersDeploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
Codeception introduction and use in Yii
Codeception introduction and use in YiiCodeception introduction and use in Yii
Codeception introduction and use in Yii
 
Sikuli
SikuliSikuli
Sikuli
 

En vedette

Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Vanilton Pinheiro
 
Automatização de testes funcionais com selenium etapa 1
Automatização de testes funcionais com selenium  etapa 1Automatização de testes funcionais com selenium  etapa 1
Automatização de testes funcionais com selenium etapa 1Cintia Armesto
 
How to level-up your Selenium tests with Visual Testing #SeleniumCamp
How to level-up your Selenium tests with Visual Testing #SeleniumCampHow to level-up your Selenium tests with Visual Testing #SeleniumCamp
How to level-up your Selenium tests with Visual Testing #SeleniumCampmoshemilman
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareJeremias Araujo
 

En vedette (9)

Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
 
comex_4
comex_4comex_4
comex_4
 
Automatização de testes funcionais com selenium etapa 1
Automatização de testes funcionais com selenium  etapa 1Automatização de testes funcionais com selenium  etapa 1
Automatização de testes funcionais com selenium etapa 1
 
How to level-up your Selenium tests with Visual Testing #SeleniumCamp
How to level-up your Selenium tests with Visual Testing #SeleniumCampHow to level-up your Selenium tests with Visual Testing #SeleniumCamp
How to level-up your Selenium tests with Visual Testing #SeleniumCamp
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 
Mineração no brasil
Mineração no brasilMineração no brasil
Mineração no brasil
 
A época do ouro no brasil
A época do ouro no brasilA época do ouro no brasil
A época do ouro no brasil
 
Vba cadastro de clientes
Vba   cadastro de clientesVba   cadastro de clientes
Vba cadastro de clientes
 

Similaire à Testes Funcionais Orientado a Imagem - Sikuli

Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumMaximiliano Alves
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Douglas Fischer
 
Testing Mobile - Calabash
Testing Mobile  - CalabashTesting Mobile  - Calabash
Testing Mobile - CalabashJoyce Bastos
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JSNàtali Cabral
 
TDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com RobolectricTDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com RobolectricStefan Teixeira
 
TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric Lucas Albuquerque
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOSDezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOSGrupo de Testes Carioca
 
UI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOSUI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOSSiem Offshore
 
Curso Android 01: Introdução
Curso Android 01: IntroduçãoCurso Android 01: Introdução
Curso Android 01: IntroduçãoAline Borges
 
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.pptRicardo Guerra Freitas
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...GUTS-RS
 

Similaire à Testes Funcionais Orientado a Imagem - Sikuli (20)

Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
Cross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appiumCross testing mobile com ruby, cucumber e appium
Cross testing mobile com ruby, cucumber e appium
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
BDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + JavaBDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + Java
 
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
 
Testing Mobile - Calabash
Testing Mobile  - CalabashTesting Mobile  - Calabash
Testing Mobile - Calabash
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
TDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com RobolectricTDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com Robolectric
 
TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOSDezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
 
UI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOSUI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOS
 
Curso Android 01: Introdução
Curso Android 01: IntroduçãoCurso Android 01: Introdução
Curso Android 01: Introdução
 
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
 

Plus de Vanilton Pinheiro

Potencializando Seu Projeto com Framework Scrum
Potencializando Seu Projeto com Framework ScrumPotencializando Seu Projeto com Framework Scrum
Potencializando Seu Projeto com Framework ScrumVanilton Pinheiro
 
Meus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de SoftwareMeus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de SoftwareVanilton Pinheiro
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Vanilton Pinheiro
 
Carreira, como estou construindo a minha
Carreira, como estou construindo a minhaCarreira, como estou construindo a minha
Carreira, como estou construindo a minhaVanilton Pinheiro
 
FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014
FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014
FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014Vanilton Pinheiro
 
MPS Br Nível F - Gerência de Configuração - GCO
MPS Br Nível F - Gerência de Configuração - GCO MPS Br Nível F - Gerência de Configuração - GCO
MPS Br Nível F - Gerência de Configuração - GCO Vanilton Pinheiro
 

Plus de Vanilton Pinheiro (6)

Potencializando Seu Projeto com Framework Scrum
Potencializando Seu Projeto com Framework ScrumPotencializando Seu Projeto com Framework Scrum
Potencializando Seu Projeto com Framework Scrum
 
Meus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de SoftwareMeus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de Software
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 
Carreira, como estou construindo a minha
Carreira, como estou construindo a minhaCarreira, como estou construindo a minha
Carreira, como estou construindo a minha
 
FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014
FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014
FPF Tech - SCRUM - Framework para desenvolver projetos - Cenartec 2014
 
MPS Br Nível F - Gerência de Configuração - GCO
MPS Br Nível F - Gerência de Configuração - GCO MPS Br Nível F - Gerência de Configuração - GCO
MPS Br Nível F - Gerência de Configuração - GCO
 

Testes Funcionais Orientado a Imagem - Sikuli

  • 1. AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI Vanilton Pinheiro vanilton18@gmail.com 1
  • 2. • 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. • 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 Yeh 6
  • 7. 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
  • 8. 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
  • 9. 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/+download 4. 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.cmd 7. Executar o arquivo runSetup.cmd 8. Marcar a primeira opção e avançar. Instalação e Configuração 9
  • 10. 9. Acessar as variáveis de ambiente do Windows. 10. Variáveis do sistema – Path 9. Adicionar ao final o caminho da pasta libs do Sikuli. 10. Exemplo: C:Sikulilibs Pronto! Instalação e Configuração 10
  • 15. Configurações de Padrão Esta tela é exibida quando clicamos em uma imagem já recortada pela IDE do Sikuli. 15
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. Exemplo 1 – Arraste arquivo para lixeira 24
  • 25. Exemplo 1 – Arraste arquivo para lixeira 25
  • 26. 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ções 1.Utilizando o sikuli-script.jar • java -jar %SIKULI_HOME%sikuli-script.jar –r path-to-your-scriptyourScript.sikuli 1.Utilizando a chamada d Sikuli IDE • %SIKULI_HOME%RunIDE.cmd -r path-to-your-scriptyourScript.skl 26
  • 27. Exemplo 2 – Pesquisa no Google Chrome 27
  • 28. Exemplo 2 – Pesquisa no Google Chrome Script IDE Script gerado em python 28
  • 29. Exemplo 3 – Similaridade 29
  • 30. Exemplo 3 - Similaridade 30 http://notebook:8081/Logo_Windows.png
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. Criação de Projeto Java com Sikuli 1. Utilizando a IDE Eclipse Criar um Novo Projeto Java. 34
  • 35. 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
  • 36. 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
  • 37. Criação de Projeto Java com Sikuli 8. Clicar no botão Finish. 37
  • 38. Criação de Projeto Java com Sikuli 9. Acessar a tela de criação de uma nova classe java. 38
  • 39. 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
  • 40. 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:WorkspaceNomeProjetolibslibs Reiniciar a IDE Eclipse. 40
  • 41. Exemplo Drag and Drop com Sikuli em Java 41
  • 42. Exemplo de Pesquisa Google 42
  • 43. Exemplo de Similaridade com Java e framework JUnit 43
  • 44. 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
  • 45. AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI Vanilton Pinheiro vanilton18@gmail.com 45