Testes Funcionais Orientado a Imagem - Sikuli

4.808 visualizações

Publicada em

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.

Publicada em: Tecnologia
1 comentário
5 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
4.808
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.560
Ações
Compartilhamentos
0
Downloads
86
Comentários
1
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Testes Funcionais Orientado a Imagem - Sikuli

  1. 1. AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI Vanilton Pinheiro vanilton18@gmail.com 1
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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
  11. 11. Interface Sikuli IDE 11
  12. 12. Menus 12
  13. 13. Preferências 13
  14. 14. Preferências – More Options 14
  15. 15. Configurações de Padrão Esta tela é exibida quando clicamos em uma imagem já recortada pela IDE do Sikuli. 15
  16. 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. 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. 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. 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. 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. 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. 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. 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. 24. Exemplo 1 – Arraste arquivo para lixeira 24
  25. 25. Exemplo 1 – Arraste arquivo para lixeira 25
  26. 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. 27. Exemplo 2 – Pesquisa no Google Chrome 27
  28. 28. Exemplo 2 – Pesquisa no Google Chrome Script IDE Script gerado em python 28
  29. 29. Exemplo 3 – Similaridade 29
  30. 30. Exemplo 3 - Similaridade 30 http://notebook:8081/Logo_Windows.png
  31. 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. 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. 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. 34. Criação de Projeto Java com Sikuli 1. Utilizando a IDE Eclipse Criar um Novo Projeto Java. 34
  35. 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. 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. 37. Criação de Projeto Java com Sikuli 8. Clicar no botão Finish. 37
  38. 38. Criação de Projeto Java com Sikuli 9. Acessar a tela de criação de uma nova classe java. 38
  39. 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. 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. 41. Exemplo Drag and Drop com Sikuli em Java 41
  42. 42. Exemplo de Pesquisa Google 42
  43. 43. Exemplo de Similaridade com Java e framework JUnit 43
  44. 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. 45. AUTOMAÇÃO DE TESTES FUNCIONAIS ORIENTADO A IMAGEM - SIKULI Vanilton Pinheiro vanilton18@gmail.com 45

×