54
Danilo Yoshio Marques dos Santos DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM PLATAFORMAS WEB Assis 2011 Av. Getúlio Vargas, 1200 – Vila Nova Santana – Assis – SP – 19807-634 Fone/Fax: (0XX18) 3302 1055 homepage: www.fema.edu.br

Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

1

Danilo Yoshio Marques dos Santos

DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM

PLATAFORMAS WEB

Assis 2011

Av. Getúlio Vargas, 1200 – Vila Nova Santana – Assis – SP – 19807-634 Fone/Fax: (0XX18) 3302 1055 homepage: www.fema.edu.br

Page 2: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

2

Danilo Yoshio Marques dos Santos

DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM

PLATAFORMAS WEB

Trabalho de Conclusão de Curso apresentado ao Instituto Municipal de Ensino Superior de Assis como requisito do Curso de Graduação

Orientadora: Prof.a Ms. Regina Fumie Etó

Área de Concentração:

Grande área: Ciências Exatas e da Terra,

Área : Ciência da Computação

Assis 2011

Page 3: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

3

FICHA CATALOGRÁFICA

Marques dos Santos, Danilo Yoshio Desenvolvimento de Robô (Scripts) de automatização de processos produtivos em plataforma WEB / Danilo Yoshio Marques dos Santos. Fundação Educacional do Município de Assis – FEMA -- Assis, 2011. 54 p. Orientadora : Prof.ª Ms Regina Fumie Etó Trabalho de Conclusão de Curso – Instituto Municipal de Ensino Superior de Assis – IMESA. 1 - Automatização de processos Web; 2– Robô automatizador

CDD:001.6 Biblioteca da FEMA

Page 4: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

4

DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE

AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM PLATAFORMAS WEB

Danilo Yoshio Marques dos Santos

Trabalho de Conclusão de Curso apresentado Instituto Municipal de Ensino Superior de Assis – IMESA e a Fundação

Educacional do Município de Assis – FEMA, como requisito do Curso de Graduação

analisado pela seguinte comissão examinadora

Orientadora:___Prof.ª Ms. Regina Fumie Etó

Analisador (1):___Prof. Ms. Felipe Alexandre Cardoso Pazinatto

Assis 2011

Page 5: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

5

DEDICATÓRIA

Dedico este trabalho a

Toda equipe que desenvolveu o Cacique, Fernando Crosa, Horacio Branciforte,

Brenda Guerra e Juan Luna e José Carlos Rodrigues, coordenador da área de

Desenvolvimento de Produto do Mercadolivre.com® no Brasil por me apresentarem o

Cacique;

Patricio Traverso, gerente da área de Desenvolvimento de Produto do

Mercadolivre.com® e equipe Brasil e Argentina.

A Lucila Yumico Inoue dos Santos, Laercio Marques dos Santos, Guilherme Yukio

Marques dos Santos, Vanessa Tieko Marques dos Santos, Glaucia Medeiros Vieira da

Silva, Regina Fumie Eto e a todos meus amigos.

Page 6: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

6

AGRADECIMENTOS

Minha mãe Lucila, meu pai Laercio, minha irmã Vanessa, meu irmão Guilherme,

que sempre me apoiou e está sempre ao meu lado para ajudar em todas as dificuldades e

desafios que aparecem pelo caminho.

Minha namorada, Glaucia, que sempre está ao meu lado ajudando atingir meus

objetivos, a me desenvolver como pessoa e que me faz sentir forte para a vida.

Meus amigos, que sempre são inspiração para mim.

José Carlos Rodrigues e equipe, que sempre me ensinam, ajudam e inspiram no

desenvolvimento pessoal e principalmente profissional.

Equipe Cacique e amigos argentinos, Fernando Crosa, Horacio Branciforte, Brenda

Guerra e Juan Luna, por me ensinar e ajudar com a ferramenta Cacique para o

desenvolvimento do trabalho de conclusão de curso e até no dia a dia de trabalho.

Regina Fumie Eto, por me ajudar durante todo o período da faculdade me

ensinando, ajudando e me agüentando e pela orientação do trabalho de conclusão de

curso.

Page 7: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

7

RESUMO

O tema proposto tem o objetivo de mostrar um estudo e também uma automação

através de um “robô” de um processo de trabalho manual para um sistema desenvolvido

para web.

Para tanto, foi desenvolvido robôs (scripts) em linguagens Ruby e Selenium para

serem executados em um servidor Cacique que irá interpretá-los.

Este trabalho irá demonstrar as vantagens da automação de processos que

resultarão em melhorias para uma empresa que ainda utiliza o trabalho de forma manual

para processos em sistema web ZOHO CRM.

Esta automação não só trará um aumento de produtividade e segurança, como

também irá reduzir tempo e custo para a realização dos processos.

Palavras Chaves: 1 – Automatização de processos Web; 2– Robô automatizador

Page 8: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

8

ABSTRACT

The proposed theme has the objective of showing a study and also an automation

with a “robot” of a handwork process on a system developed for web.

To this end it was developed robots (scripts) in Ruby and Selenium languages to be

executed on a server called Cacique where this server itself will interpret them.

This work will demonstrate the benefits of a process automation that will result in

improvements to a company which still uses handwork in web system process.

This automation will not only bring an increase of productivity and safety but also it

will reduce time and cost for carrying out the processes.

Keywords:

1 - Ruby, Ruby on Rails 2 - Process Automation Web 3 - automated robot

Page 9: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

9

LISTA DE ILUSTRAÇÕES

Figura 2.1 – Arquitetura básica de uma aplicação Web .........................17

Figura 2.2 – Camadas do padrão MVC ..................................................21

Figura 2.3 – Estrutura básica da utilização do cacique ..........................23

Figura 2.4 – Selenium IDE 1.0.10 ..........................................................25

Figura 3.1 – Editor de scripts do Cacique ...............................................27

Figura 3.2 – Criando variáveis no projeto do Cacique ............................27

Figura 3.3 – Ambiente do set de dados ..................................................28

Figura 3.4 – Ambiente de execução .......................................................28

Figura 3.5 – Configurando uma Suite Figura ..........................................29

Figura 3.6 – Configuração de uma Suite ................................................30

Figura 3.7 - Histórico de execução dos Scripts ......................................30

Figura 4.1 – Estrutura básica do funcionamento do Robô. .....................39

Figura 4.2 – Automatização do sistema CRM da empresa Mercado

Livre.com®. ............................................................................................40

Figura 4.3 – Respondendo o contato de um cliente no sistema CRM

da empresa Mercado Livre.com®. ..........................................................41

Figura 4.4 – Alterando o contato de um cliente para um outro

processo no sistema CRM da empresa Mercado Livre.com® ................41

Figura 4.5 – Automatizando o sistema CRM ZOHO ...............................43

Figura 4.6 – Executando o processo de criação de tarefas ....................44

Figura 4.7 – Relatório de execução do robô .........................................445

45

Page 10: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

10

LISTA DE TABELAS

Tabela 1 – Palavras reservadas do Ruby ...............................................20

Tabela 2 – Operadores lógicos do Ruby .................................................20

Tabela 3 – Comparação dos tempos de execução do robô ....................46

Page 11: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

11

SUMÁRIO

1 – INTRODUÇÃO ..................................................................................... 12

1.1 - CONTEXTO .................................................................................... 12

1.2 - OBJETIVO ...................................................................................... 12

1.3 - JUSTIFICATIVA.............................................................................. 13

1.4 - MOTIVAÇÃO .................................................................................. 14

1.5 - ESTRUTURA DO TRABALHO ....................................................... 14

2 – Fundamentação Teórica ....................................................................... 15

2.1 - Tecnologias para processos na web .............................................. 15

2.2 - Linguagem Ruby............................................................................. 19

2.3 - Cacique .......................................................................................... 22

2.4 - Selenium IDE .................................................................................. 23

3 – Aplicativos Web para configuração do “Robô”. .................................... 26

3.1 – Utilização da Ferramenta Cacique ................................................. 26

3.2 - Instalação do Cacique .................................................................... 31

3.3 - Instalação do Servidor Web ............................................................ 32

3.4 - Iniciando os serviços do cacique .................................................... 33

4 – “Robô” automatizador de processos .................................................... 38

4.1 – Modelagem do “Robô” ................................................................... 38

4.2 – Exemplos de automatização do robo nos processos na Web ....... 39

4.3 – Desenvolvimento do Robô ............................................................ 42

4.4 – Análise de desempenho do Robô ................................................. 44

4.5 – Script do Robô ............................................................................... 47

5 – Conclusões. ......................................................................................... 52 Referencia Bibliográfica ............................................................................. 53 Pesquisas na Internet ................................................................................ 54

Page 12: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

12

Capítulo 1

1 – INTRODUÇÃO

Neste capítulo será feita uma descrição do contexto em que o projeto está

inserido, assim como os objetivos e as justificativas para o desenvolvimento do

tema escolhido.

1.1 - CONTEXTO

A crescente demanda de aplicativos e de sistemas de desenvolvimento

para Web, tem provocado um aumento substancial de produtos voltados a

exploração de recursos da internet, principalmente no que se refere às

compras virtuais, vide o caso do MercadoLivre®.

As plataformas de programação e de sistemas para a Web, tem cada

vez mais utilizado ferramentas de software livre e “open source” (“ código

aberto”) concomitante ao aceite da grande maioria dos programadores nessas

plataformas.

Aliado ao fato de utilizar uma plataforma de desenvolvimento adequado

ao avanço tecnológico, provocado pelas novas tecnologias e às constantes

mudanças na área de TI (Tecnologia da Informação), o trabalho de

profissionais torna-se ainda mais complexo.

1.2 - OBJETIVO

Utilizando o conhecimento de programação nas diversas linguagens,

automação e aplicações para “web”, juntamente com o trabalho desenvolvido

com a empresa Mercado Livre, o objetivo da monografia de conclusão de curso

Page 13: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

13

é mostrar o funcionamento e as vantagens da automatização de processos

para sistemas em plataformas web, utilizando um “robô” nesta empreitada.

1.3 - JUSTIFICATIVA

Este trabalho tem por justificativa apontar as vantagens do

desenvolvimento de automatização de processos, os recursos e o desempenho

dessa automatização em relação ao trabalho manual quanto ao requisito de

segurança e praticidade. Além de mostrar uma forma diferente de

desenvolvimento baseado em um aplicativo web independente da sua

linguagem de programação.

Para o desenvolvimento deste trabalho foram necessários:

§ Um computador com acesso à internet e plug-in Selenium IDE 1.0, IDE

para desenvolvimento do script do “robô” com plug-in para Ruby, uma

ferramenta do Cacique (versão para Windows) e navegador de internet

Mozilla Firefox 3.6 instalados.

§ Um computador com acesso a internet e sistema operacional Linux

(qualquer versão), navegador de internet Mozilla Firefox 3.6 e aplicativo

Cacique (versão Linux) instalados. Como alternativa ao computador

poderá ser utilizada uma máquina virtual como o Virtual PC ou VM Ware.

Para alcançar o propósito acima mencionado, serão explorados a

utilização e as vantagens da linguagem Ruby [http://www.rubyonrails.pro.br] junto

com a ferramenta Selenium IDE [http://seleniumhq.org/projects/ide], para

desenvolvimento de scripts de automatização de processos produtivos em

plataformas “web” [URUBATAN, Rodrigo, 2009]. E como consequência,

construir/implementar um exemplo de automatização utilizando essas

ferramentas.

Page 14: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

14

1.4 - MOTIVAÇÃO

Com a implementação do robô será possível realizar verificações sobre

as compras realizadas no site de compra virtual, com a possibilidade de

tomadas de decisões a partir de perguntas e respostas do cliente de forma a

direcionar os problemas para os setores competentes ou mesmo de resolução

das mesmas, de forma automática, rápida e limpa. O que gerará maior

satisfação por parte dos clientes virtuais.

1.5 - ESTRUTURA DO TRABALHO

A monografia está organizada em cinco capítulos conforme descrito a

seguir:

O capítulo um apresenta a introdução e descreve os objetivos e as

motivações para o desenvolvimento do trabalho.

O segundo capítulo apresenta a fundamentação teórica necessária para

compreender conceitos específicos do trabalho onde será abordado a

linguagem de programação “open source” Ruby e Ruby on Rails para Web,

além da ferramenta Cacique e o Selenium IDE.

No terceiro capítulo é detalhado o modo de configuração da ferrramenta

Cacique, Selenium Client, do mesmo modo realizado em sites de compras pela

internet.

No quarto capítulo será apresentado o modelo do robô responsável pela

automatização de processos, onde será especificado suas funcionalidades,

bem como os parâmetros necessários para a análise de seu desempenho.

Por fim, no capítulo cinco serão apresentadas as conclusões e

sugestões para trabalhos futuros.

Page 15: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

15

Capítulo 2

2 – Fundamentação Teórica

O estudo das tecnologias envolvidas nos processos para “web” será

relevante ao trabalho, primeiramente para adquirir conhecimentos voltados

para programação “web” e de firmar conceitos e procedimentos necessários ao

seu uso, quanto para utilização das diferentes linguagens de programação,

como é o caso da linguagem Ruby , da plataforma Cacique e Selenium, bases

desta monografia..

2.1 - Tecnologias para processos na web

Atualmente, as aplicações desenvolvidas para “web” estão crescendo

drasticamente, tanto por suas vantagens monetárias, quanto pelo avanço

tecnológico, frutos da popularização da Internet.

As empresas atualmente se utilizam das muitas tecnologias de licença

gratuita, chamado de software livre [http://www.fsf.org], para desenvolvimento

de seus softwares e aplicativos, pois estes têm um custo mais baixo e são tão

eficientes quanto as de tecnologias de softwares de licença proprietária.

O crescimento da utilização desses recursos avança muito rápido devido

ao surgimento de novas tecnologias como Java, PHP, Ruby, Selenium, entre

outras, consequência da popularização da Internet.

Page 16: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

16

Para a comercialização de produtos intitulados de software livre tem-se a

definição:

Sendo que os quatro princípios de liberdade são:

· Liberdade Zero: Para qualquer propósito, tem o direito de executar o

software.

· Liberdade Um: Direito de estudar o software e modificá-lo conforme as

necessidades.

· Liberdade Dois: Poder redistribuir cópias, assim podendo ajudar outras

pessoas.

· Liberdade Três: Direito de modificar e melhorar o software, redistribuir as

suas melhorias e assim ajudar outras pessoas.

As vantagens das aplicações de software livre é a de funcionarem a

partir de uma rede interna ou pela internet, e de serem executadas e utilizadas

em muitos tipos de computadores, programas, e por muitas pessoas ao mesmo

tempo, com possibilidade de obter atualizações de dados frequentemente.

[http://www.alldreams.com.br].

A comunicação ocorre através de protocolos, onde ajudam no

mapeamento de ações dos usuários do lado do usuário.

O mais comum dos protocolos é o HTTP (Hypertext Transfer Protocol), e

seu funcionamento é através de uma requisição do browser o qual obtém a

resposta de um servidor. A Figura 2.1 mostra a arquitetura básica de uma

aplicação web com a comunicação do protocolo HTTP.

“Software Livre pode ser

comercializado sem problemas desde que

respeite e siga os quatro princípios de

liberdade” [MATOS, Francisco Jarbas

Teixeira, 2007 – Entendendo os recursos do

Linux – São Paulo: Digerati Books, 2007]

Page 17: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

17

Figura 2.1 – Arquitetura básica de uma aplicação Web

Há dois tipos de pedidos mais comuns nas aplicações para web, o

método GET e o método POST.

§ Método GET – “Solicita ao servidor um recurso chamado de

solicitação URI. Os parâmetros da solicitação devem ser

codificados nessa solicitação, para que o mesmo os entenda.

Este é o método mais utilizado, pois é a forma como o browser

chama o servidor quando você digita um URL para que ele o

recupere.” [Gonçalves, Edson – Desenvolvendo Aplicações Web

com JSP Servlets, JavaServer Faces, Hibernate, EJB3

Persistence e AJAX - 2007]

§ Método POST – “Este método contém um corpo nos quais seus

parâmetros de solicitação já são codificados. O mais frequente

uso desse método dá-se na submissão de formulários HTML e

XHTML.” [Gonçalves, Edson – Desenvolvendo Aplicações Web

Page 18: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

18

com JSP Servlets, JavaServer Faces, Hibernate, EJB3

Persistence e AJAX - 2007]

Uma aplicação desktop pode ser muito eficiente, rápida e usual, porém

sua distribuição é um tanto complicada. A instalação deve ser feita de

computador a computador. Para a aplicação “web”, a instalação, manutenção e

atualização são centralizadas. Isso pode ser feito no servidor e em todos os

computadores que necessitam do sistema, basta apenas acessar o servidor e

configurá-lo adequadamente para o uso.

“O desempenho de uma aplicação “web”

comparado a uma aplicação “desktop”, é na maioria

das vezes mais eficiente, pois quando temos uma

aplicação com diversas funções e recursos

avançados como, por exemplo, interface gráfica

muito carregada, isso deixa a aplicação pesada”

[http://www.macoratti.net/vbn_dkwb.htm].

Porém, de acordo com o Daniel Cárnio Junqueira e Renata Pontin de

Mattos Fortes no livro [Junqueira, Daniel Cárnio e Mattos, Renata Pontin de –

Introdução ao Desenvolvimento de Aplicações Web com Ruby on Rails] onde

citam que:

“...nas aplicações Desktop, mesmo quando

desenvolvidas numa arquitetura cliente-servidor, é

dada ao desenvolvedor mais liberdade na

comunicação entre a interface gráfica que é exibida

para o usuário com a parte responsável pelo

tratamento das informações e controle da interface,

sendo que a comunicação pode ser iniciada a partir

dos dois lados.”

Page 19: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

19

Assim pode-se observar a ação do usuário, como ela ocorre no sistema

e como resultado pode ser feita uma notificação através da interface gráfica.

2.2 – Linguagem Ruby

Criada por Yukihiro “ Matz” Matsumoto ou simplesmente “ Matz”, em

1995, onde o mesmo uniu partes das suas linguagens favoritas (Perl, Smalltalk,

Eiffel, Ada, e Lisp) e formou uma nova linguagem que tem o equilíbrio da

programação funcional com a programação imperativa chamada Ruby.

Ruby é uma linguagem de script interpretada e orientada a objetos. Ela é

bastante utilizada para automação de tarefas e também para desenvolvimento

de aplicações web.

Como foi grandemente inspirada em Python e Perl (daí o nome “Ruby”,

outra pedra preciosa). “ Matz” queria uma linguagem mais poderosa que Perl e

mais orientada a objeto que Python.

As caracteristicas do Ruby são:

ü uma sintaxe enxuta, quase não se utiliza colchetes, e outros caracteres.

ü Todas as variáveis são objetos, onde até os do tipo “primitivos” (inteiro,

real, entre outros) são classes.

ü Através do Ruby Gems, é possível instalar e atualizar bibliotecas com

uma linha de comando, de maneira similar ao APT do Debian Linux.

ü Estão disponíveis diversos métodos de geração de código em tempo

real, como os "attribute accessors".

“Ruby é uma linguagem bastante simples e flexível.”

[JUNQUEIRA, Daniel Cárnio - MATTOS, Renata

Pontin de – Introdução ao Desenvolvimento de

Aplicações Web com Ruby on Rails]. As suas

características são:

Page 20: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

20

§ Orientada a Objetos: No Ruby não existe tipo

primitivo, tudo nele é um objeto, incluindo

valor nulo e números.

§ Tipagem dinâmica: não se declara um tipo

para as variáveis do Ruby, elas tomam forma

conforme os valores assumidos pela variável.

§ Interpretada: “é uma linguagem interpretada, o

que permite rápido desenvolvimento pelo fato

de não ser necessário realizar os passos de

compilação e implantação (deploy).”

[JUNQUEIRA, Daniel Cárnio - MATTOS,

Renata Pontin de – Introdução ao

Desenvolvimento de Aplicações Web com

Ruby on Rails].

A tabela abaixo mostra todas as palavras reservadas da linguagem

Ruby.

alias and BEGIN begin break case class def

Defi

ned do else elseif END end ensure false

for If in module next nil not or

redo rescue retry return self super then true

undef unless until when while yield

Tabela 1 – palavras reservadas do Ruby

A tabela abaixo mostra os operadores da linguagem Ruby.

** ! ~ * / % + -

& << >> | ^ > >= <

<= <=> || != =~ && += -=

== === .. ... not and or

Tabela 2 – operadores lógicos do Ruby

Page 21: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

21

A Sintaxe da linguagem Ruby, é semelhante à linguagem Python e Lisp,

bem funcional, pois foi esse propósito que “ Matz” queria com o Ruby.

Ruby on Rais é um metaframework desenvolvido em Ruby, ele é gratuito

e de código aberto para desenvolvimento de aplicações “web” e utiliza a

arquitetura Model-View-Controler (MVC) como cita Rodrigo [URUBATAN,

Rodrigo, 2009 – Desenvolvimento Fácil e Rápido de Aplicações Web Ruby on

Rails, 2009]. Este framework foi projetado por alguns motivos especiais como:

· Em um único framework, ter todas as ferramentas para um

desenvolvimento completo e atender as necessidades de

aplicações “Web”.

· Permitir a comunicação entre suas camadas de forma mais

transparente possível.

· Ser escrito totalmente em apenas uma linguagem.

· Seguir o padrão de arquitetura MVC (Model – View – Controller).

A arquitetura MVC e suas camadas é mostrada na Figura 2.2 .

Figura 2.2 – Camadas do padrão MVC

Page 22: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

22

O modelo MVC é responsável pela representação das informações

operada pela aplicação, a visão é a camada responsável por exibir os dados

em forma específica para a interação e o controle é responsável por processar

e responder aos eventos, podendo invocar alterações na camada modelo.

2.3 – Cacique

Cacique é uma ferramenta desenvolvida em Ruby on Rails pela empresa

MercadoLibre® pelos colaboradores Fernando Crosa, Horacio Branciforte,

Brenda Guerra e Juan Luna que atualmente trabalham no MercadoLibre QA

Team (Argentina) [http://cacique.mercadolibre.com/?q=node/4]. Essa

ferramenta foi desenvolvida com a necessidade de efetuar testes em processos

das aplicações desenvolvidas na empresa MercadoLibre®.

Cacique é uma ferramenta de código fonte aberto, permitindo que

usuários desenvolvam otimizações de forma contínua para o mesmo. Pode se

automatizar todo tipo de tarefa de aplicativos sobre a web usando a ferramenta.

Sendo multiplataforma, Cacique pode ser executada em diversos

browsers como Mozilla Firefox, Internet Explorer, entre outros e vários browsers

ao mesmo tempo. Podendo também ser conectado a outros aplicativos como,

por exemplo, BDD, SAP, Excel, etc.

Alguns exemplos de uso que já foram utilizados, [Manual Del usuário –

HTTP://cacique.mercadolibre.com] são os testes automáticos de API’s, testes

automáticos de integração, carga massiva de dados, execução automática de

tarefas administrativas e execução de funções em SAP.

Utilizando a tecnologia Selenium IDE, pode-se obter scripts com

execuções pré-configuradas para sua execução automática.

A utilização do Cacique é muito simples, a partir do desenvolvimento de

scripts necessários para o seu projeto, podem-se juntar esses “scripts” com

uma “Suite” que é um recurso muito utilizado do cacique para que os “scripts”

sejam executados juntos e na ordem configurada.

Page 23: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

23

Figura 2.3 – Estrutura básica da utilização do cacique

[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf]

Com essa “Suite”, podem-se criar execuções automáticas com

agendamento de data e horário pré-configurados.

Relatórios de execuções dos “scripts” são gerados, também através da

“Suite”, gerando um e-mail automático e enviado aos destinatários

configurados no seu agendamento da execução.

No capítulo 3 será abordado a configuração e instalação do Cacique

para a base de construção do robô.

2.4 – Selenium IDE

O Inicio do Selenium foi em 2004, na ThoughWorks – Chicago, que é

uma empresa global de consultoria em TI. Jason Huggins construiu o modelo

Core como “Java Script Test Runner”, para testes de tempos e gastos de uma

Page 24: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

24

aplicação interna. Testes de aplicações é uma ação fundamental para uma

empresa de desenvolvimento de software.

Essa ferramenta foi apresentada por Jason aos seus colegas e esta

tinha um visual imediato, intuitivo e um potencial para se desenvolver como um

“framework” de testes para varias aplicações web.

No mesmo ano de 2004, houve uma discussão da abertura da fonte do

Selenium e tiveram posições diferentes para uma parte do servidor sendo essa

parte reescrita na linguagem JAVA. Dois membros da equipe, Aslak e Obie

Fernandez relataram que o cliente mudou para Ruby, estabelecendo a criação

de drivers em mais linguagens.

A Thought Workers utilizou Selenium para projetos comerciais e a

ferramenta foi melhorada com as lições aprendidas nos projetos desenvolvidos

ao redor do mundo.

O Selenium IDE é um ambiente integrado de desenvolvimento para

“scripts” Selenium. Ele foi criado pelo Shinya Kasatani no Japão quando o

mesmo ficou interessado no Selenium e percebeu que poderia dividir o código

principal em módulo IDE que é utilizado como um plug-in do Mozilla Firefox os

quais permite gravar, editar e depurar os “scripts” testes desenvolvidos. Essa

ferramenta possibilitou a abertura de novos caminhos além das idéias de

originais [http://seleniumhq.org].

O Selenium IDE é prático de se utilizar. Para poder gravar os passos de

um processo, antes de tudo deve-se inicializar o plugin Selenium IDE, depois

selecionar a linguagem que será utilizada juntamente com o Selenium, que no

caso deste trabalho será a linguagem Ruby.

Antes de iniciar um processo, o botão de “Record” na IDE deve estar

ativado, assim todas as ações de “click” (requisição) e digitações de textos será

armazenado na ordem efetuada dentro Selenium IDE.

A Figura 2.4 mostra o ambiente que grava os passos de um processo no

sistema.

Page 25: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

25

Figura 2.4 – Selenium IDE 1.0.10 [http://seleniumhq.org]

Nesta IDE, pode-se utilizar do recurso de gravação de “script” ou criar

manualmente, com um apoio do auto-completar e da capacidade de se

movimentar em torno de comandos rapidamente. [http://seleniumhq.org].

Uma limitação que existe até o momento (junho/2011), é a não

recomendação de se instalar o “plug-in” Selenium IDE na sua ultima versão

1.0.11, devido à sua incompatibilidade com a versão do Mozilla Firefox 4.0 em

diante, até a versão 3.16 do Mozilla Firefox o seu uso e configuração é normal.

Page 26: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

26

Capítulo 3

3 – Aplicativos Web para configuração do “Robô”.

Neste capítulo será fornecido os passos necessários para a

configuração e instalação da ferramenta Cacique e do Selenium Client,

utilizado pelo Mercado Livre para a base de construção do “robô”.

3.1 – Utilização da Ferramenta Cacique

Primeiro passo para utilizar o Cacique é a sua instalação. Essa deve

ocorrer na plataforma Linux, pois atualmente só existe a disponibilidade da

ferramenta para este sistema operacional, criando um servidor Web para que

um ou mais usuários possam acessar e executar a partir de outro computador,

podendo ser o sistema operacional Windows da Microsoft ou Linux. Os

arquivos de instalação estão no site da própria ferramenta:

http://cacique.mercadolibre.com.

Após a instalação e configuração do Selenium Client no cliente (estação

onde será executado os scripts desenvolvidos) e servidor (estação onde o

Cacique receberá as requisições de execução do cliente), pode se utilizar a

ferramenta como segue abaixo nas etapas de utilização.

Deve-se definir um diretório no ambiente do Cacique acessado pelo

endereço do servidor (ambiente Linux), e nesse ambiente, deve-se gerar um

“script” novo. Utiliza-se o Selenium-IDE para gravar as etapas do processo em

um aplicativo “Web” juntamente com a linguagem Ruby, assim pode-se

escrever o código neste “script” o qual será gerado e estará pronto para ser

executado.

O Cacique possui um editor de script que permite criar e modificar os

códigos, voltar à versão anterior do script, verificar a sintaxe da programação,

inserir funções entre outros recursos [http://cacique.mercadolibre.com]

conforme a Figura 3.1.

Page 27: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

27

Figura 3.1 – Editor de scripts do Cacique [http://cacique.mercadolibre.com]

Existe o recurso de desenvolver um script em um editor externo, como

por exemplo, Netbeans, Eclipse, entre outros editores que suportam a

linguagem Ruby e Selenium podendo importá-los para o Cacique sem a

necessidade de utilizar o seu editor, isso gera uma exploração da sua

usabilidade.

A Figura 3.2 mostra a possibilidade de criar variáveis no próprio projeto,

facilitando a mudança de conteúdo dessas, sem a necessidade de editar o

código do “script”.

Figura 3.2 – Criando variáveis no projeto do Cacique

[http://cacique.mercadolibre.com]

A etapa seguinte, assim que o script estiver pronto, é criar um conjunto

de dados onde se podem agregar vários casos para que se possam executar

Page 28: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

28

vários conjuntos de dados de forma unitária ou em paralelo, conforme

descreve o manual do usuário.

[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf].

A Figura 3.3 mostra o ambiente onde é criado o conjunto de dados.

Figura 3.3 – Ambiente do “set” de dados [http://cacique.mercadolibre.com]

A execução do script no primeiro momento pode ser feita manualmente

através do botão “Run” conforme mostra a Figura 3.4 (item triangular da cor

verde na barra de ferramentas citado na Figura 3.4).

Figura 3.4 – Ambiente de execução

[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf]

Um ponto importante antes de executar qualquer script, é se certificar

que a ferramenta Selenium cliente esteja sendo executada. Se a mesma não

estiver ativa, o script não executará.

Page 29: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

29

A próxima etapa é a configuração de “Suites”. Para criar uma “Suíte”

deve-se selecionar os scripts que irão contê-la e organizar a ordem de

execução destes scripts. A Figura 3.5 mostra o ambiente que contém o diretório

dos scripts.

Figura 3.5 – Configurando uma Suite Figura

[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf]

Assim que uma “Suite” é criada, a próxima etapa é configurar a mesma

para uma execução automática em uma data e um horário pré determinado,

podendo haver uma repetição contínua de sua execução.

Para configurar, deve ser selecionada a plataforma (um browser),

selecionar uma porta e um IP de onde será executado (geralmente seleciona o

IP da estação cliente). A porta a ser utilizada é a 4444 (padrão para o

funcionamento do Cacique). A seleção do Site, Ambiente e “Con-queries”

(quando o script necessitar acessar uma base de dados) são opcionais,

podendo deixar sem seleção.

Con-queries é uma opção para se selecionar no momento da

configuração da execução do robô, quando o script tem a necessidade de

acessar um banco de dados.

A data e hora da execução são configurações obrigatórias, definindo as

repetições nos seus horários programados. Outro ponto importante é que a

data e o horário serão baseados no horário do sistema.

Page 30: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

30

A Figura 3.6 mostra a tela de configuração de uma Suite.

Figura 3.6 – Configuração de uma Suite [http://cacique.mercadolibre.com]

O Cacique possui também um histórico dos “scripts” executados, onde

pode se verificar detalhes de execução, problemas ocorridos, tempo de

execução, se o script foi executado na hora definida, etc.

A Figura 3.7 mostra uma lista de Suites e scripts executados.

Figura 3.7 - Histórico de execução dos Scripts [http://cacique.mercadolibre.com]

Page 31: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

31

3.2 - Instalação do Cacique

Para a instalação do Cacique é necessário um computador com o

sistema operacional Linux Ubuntu ou Debian instalado, porém é recomendado

pelos desenvolvedores a utilização do Ubuntu. Neste trabalho foi utilizado a

versão 11.04 do Linux Ubuntu.

Após a instalação padrão do Linux, faça o download do pacote de

arquivos do Cacique que se encontra no site http://cacique.mercadolibre.com,

extraia os arquivos em uma pasta onde desejar.

Neste segundo passo, abra um terminal do Linux e utilize o seguinte

comando:

user@user:~$ sudo su

O Comando acima, irá solicitar a senha de administrador, pode inserir a

senha de seu login de administrador do computador. Trocando para “sudo”, não

terá problemas de permissão ou qualquer outra restrição nas etapas da

instalação.

Após extrair todos os arquivos do pacote do Cacique, ainda no terminal

acesse a pasta onde se encontra os arquivos e execute o comando abaixo:

user@user:/cacique# ./installer.sh

O terminal irá mostrar diversas linhas de comando e os arquivos sendo

instalados. Quando aparecer uma linha perguntando se deseja prosseguir com

a instalação, somente aceite com a letra “Y” e teclando o “Enter”.

Completado o instalador, o servidor terá todos os arquivos necessários

para ser executado. Para continuar, deve-se recarregar o perfil de usuário com

o comando abaixo:

user@user:/cacique# source /etc/profile

Page 32: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

32

Após recarregar o usuário, será necessário configurar o arquivo

referente à base de dados. Abra a pasta onde foram extraídos os arquivos do

cacique, depois acesse a pasta “config” e abra o arquivo “database.yml”.

Neste arquivo, nas linhas onde se encontram os “passwords” de

“development”, “test” e “production”, altere para a senha que foi configurada na

etapa da instalação. Nas linhas de usuários, altere para o usuário que foi

configurado o “mysql”, se foi o usuário “root”, altere o que está para “root”.

Configurado o arquivo da base de dados, será necessário ter a base que

será utilizada para armazenar todas as informações. No terminal execute o

comando abaixo:

user@user:/cacique# rake db:create RAILS_ENV=production

Se ocorrer um erro e a mensagem mostrar que não existe o “rake”

instalado, basta utilizar o comando abaixo para instalá-lo.

user@user:/cacique# apt-get install rake

Após criar a base de dados, será necessário migrar a base do Cacique

para esta que foi criada, assim terá todas as tabelas prontas para serem

utilizadas. Utilize este comando abaixo para começar a migrar.

user@user:/cacique# rake db:migrate RAILS_ENV=production

Completando a migração, a base de dados estará pronta para ser

utilizada.

3.3 - Instalação do Servidor Web

Para que o Cacique execute é necessário a instalação do servidor web,

que nesse caso será o Apache com Passenger.

Page 33: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

33

Para a instalação, deve ser seguidos os passos no site

http://www.modrails.com/install.html.

Primeiro deve-se abrir um terminal e executar o comando abaixo para

instalar o Passenger.

user@user:/# gem install passenger

Depois execute o comando abaixo para configurar o Apache com

Passenger.

user@user:/# passenger-install-apache2-module

Instalado o Apache, deve ser executado o commando abaixo para

inicializar o serviço.

user@user:/# /etc/init.d/apache2 start

Feito as configurações acima, o servidor web estará executando e

pronto para receber a execução do Cacique.

3.4 - Iniciando os serviços do cacique

Para utilizar o cacique, serão necessárias algumas execuções de

serviços do servidor. É recomendado executar cada comando em um console

(terminal) diferente, resumindo, um terminal para cada serviço.

Primeiramente deve-se deixar o servidor executando no primeiro

terminal utilizando as teclas “Ctrl+Alt+F1”, fazendo login e alterarando o usuário

através de “sudo”. Utilize o comando abaixo para inicializar o servidor.

user@user:/cacique# script/Server –e production -80

Page 34: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

34

Esse próximo serviço, recebe diferentes execuções geradas no cacique

e enviadas à diferentes “workers”(responsável por executar os scripts)

conectados para as suas execuções. Acesse o segundo terminal com as teclas

“Ctrl+Alt+F2” e repita os mesmos passos de login do terminal anterior. Utilize o

comando abaixo para carregar o serviço.

user@user:/cacique# script/starling.rb start

Esse terceiro serviço é responsável pelo Cache que é utilizado pelo

Rails. Acesse o terceiro terminal com as teclas “Ctrl+Alt+F3” e repita os

mesmos passos de login do primeiro terminal. Utilize o comando abaixo para

carregar o serviço.

user@user:/cacique# /usr/bin/memcached –u [usuario] –c 1000 –

m 64 –p [qualquer porta] > /dev/null &

No lugar de [usuário], deve se digitar o usuário que esteja com a sessão

aberta no terminal, no caso será o usuário administrador do Linux e no lugar de

[qualquer porta], utilize uma porta que não esteja sendo utilizada, por exemplo

“8909”, “1003”, etc.

Esse terminal, ficará liberado para uso depois de executar a linha de

comando acima.

Esse quarto serviço é utilizado para a execução do Cacique, mostrando

as saídas de dados como, por exemplo, um cálculo feito no script que mostra

seu resultado na tela e mensagens de erros.

Acesse o quarto terminal com as teclas “Ctrl+Alt+F4” e repita os mesmos

passos de login do primeiro terminal. Utilize o comando abaixo para carregar o

serviço.

user@user:/cacique# script/workling_client start –t

Page 35: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

35

O quinto serviço é responsável de executar os scripts de Selenium em

diferentes configurações de browsers.

Acesse o quinto terminal com as teclas “Ctrl+Alt+F5” e repita os mesmos

passos de login do primeiro terminal. Acesse a pasta conforme o caminho

abaixo.

user@user:/cacique# cd extras/selenium-grid-1.0.8

Assim que estiver posicionado na pasta acima, execute o comando

abaixo para carregar o serviço.

user@user:/cacique/extras/selenium-grid-1.0.8# ant launch-hub

Esse último serviço é um processo de Rails que é responsável por

executar as Suites programadas e agendadas do Cacique.

Acesse o sexto terminal com as teclas “Ctrl+Alt+F6” e repita os mesmos

passos de login do primeiro terminal. Utilize o comando abaixo para carregar o

serviço.

user@user:/cacique# rake jobs:work RAILS_ENV=production

Antes de começar a utilizar o cacique, é necessária também a utilização

do “Cacique-on-my-computer”. Ele é importante para que, ao se desenvolver

um script, o mesmo possa ser executado a partir do servidor, ou através de

acesso remoto, por um computador cliente.

Faça download neste endereço abaixo.

http://localhost:3000/CaciqueOnMyComputer.zip

Esse pacote de arquivos está junto com o pacote de arquivos do

Cacique. Extraia na pasta do projeto.

Page 36: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

36

Se a execução for a partir do servidor (linux), abra o terceiro terminal

onde foi executado o serviço de “cache” do Cacique, o qual estará livre.

Acesse a pasta conforme o caminho abaixo.

user@user:/cacique# cd CaciqueOnMyComputer

Posicionando-se na pasta acima, execute o comando abaixo para

carregar o serviço do Cacique on my computer.

user@user:/cacique/CaciqueOnMyComputer# java –jar selenium-

server-1.0.3/selenium-server.jar –forcedBrowserMode *Firefox –

singleWindow

Se for utilizar um computador com sistema operacional Windows e com

acesso remoto ao servidor cacique, é necessário criar uma pasta na raiz do

sistema de arquivos com o nome profile, como segue abaixo.

C:\profile

Copie todos os arquivos da pasta profile do Firefox e cole nesta pasta

profile que foi criada recentemente na raiz do sistema de arquivos.

Os arquivos estão no caminho abaixo.

C:\Documents and Settings\usuario\Dados de

aplicativos\Mozilla\Firefox\ Profiles\g4jtnfk0.default

Essa pasta “g4jtnfk0” tem um nome diferente para cada computador,

portanto, verifique o caminho e coloque o nome que se encontrará no momento

de copiar os arquivos.

Page 37: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

37

Copiado os arquivos necessários, basta executar o arquivo

“runFirefox.bat” que se encontra dentro da pasta CaciqueOnMyComputer e

acessar o IP do servidor para poder utilizar o Cacique, como segue abaixo.

http://192.168.0.1:3000/session/new

Com todos os serviços do Cacique executando, acesse o “browser” no

caminho abaixo para fazer “login” no Cacique e começar a utilizá-lo.

http://localhost:3000

Acessando o endereço acima, será mostrado na página principal, o

campo de login e senha. Utilize o usuário padrão conforme abaixo.

Usuário: cacique

Senha: admin

Feito o login, basta começar a desenvolver os scripts e executá-los.

Page 38: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

38

Capítulo 4

4 – “Robô” automatizador de processos

Neste capítulo será modelado o robô responsável pela automatização de

processos. Primeiramente será descrito a modelagem do robô automatizador e

posteriormente a configuração da interface de aplicação para Web, que no

trabalho será o Cacique com Selenium IDE.

4.1 – Modelagem do “Robô”

O processo de automatização deste trabalho, utilização do “robô”,

consiste em acessar um sistema (aplicativo Web) e nesse sistema tratar como

se fosse uma pessoa realizando todo o trabalho.

O script do robô será executado sobre um aplicativo “Web” já

desenvolvido, por isso dependendo do aplicativo Web, não será necessário

uma base de dados ou outros tipos de recursos que sejam de programação

externa, fora do aplicativo Web que está sendo automatizado.

Normalmente essa automatização, utiliza dados do próprio aplicativo, a

base de dados do aplicativo e o que for necessário.

A Figura 4.1 na próxima página, mostra o funcionamento do robô em

geral, uma estrutura básica de seu funcionamento e interação com o aplicativo

“Web”.

Page 39: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

39

Figura 4.1 – Estrutura básica do funcionamento do Robô.

O robô na maioria das suas funções, captura dados da tela dos

aplicativos, por exemplo, um elemento do sistema que esteja em HTML e

processa uma função programada com este dado. Quando há necessidade de

inserir um dado externo no sistema, este dado é escrito em forma de texto no

código do robô.

4.2 – Exemplos de automatização do robô nos processos na “Web”

Existem diversos tipos de automatização de processos na “Web”

funcionando em diversas tecnologias e linguagens de programação. Neste

trabalho será desenvolvido uma automatização semelhante ao aplicado na

empresa Mercado Livre.com.

Em geral, as empresas que fazem contato com usuários por e-mail, chat

ou outros meios, utilizam um sistema chamado CRM (“Customer Relationship

Management”), o qual pode variar conforme seu desenvolvimento, possuindo

Page 40: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

40

porém o mesmo objetivo e funcionalidade que é a de atender o cliente o mais

rapidamente possível e sem geração de erros.

A automatização feita no MercadoLivre® foi em cima de seu CRM

proprietário, desenvolvidos com vários scripts com várias funções. Um exemplo

básico de um script é o “Robô”, que responde e-mails de contato de seus

usuários do seu site.

São funções básicas como fazer login no sistema, verificar os e-mails de

um determinado assunto, verificar as condições solicitadas, fazer uma lógica

que verifica se pode ou não atender essas condições e responder o e-mail com

uma resposta pré definida e encerrar o caso.

Esta automatização que responde e-mails automáticos, atualmente

responde em média 150 casos em aproximadamente uma hora de execução

do robô. Isso é equivalente a um trabalho manual de duas pessoas por dia no

caso das políticas de trabalho do Mercado Livre.com®.

A figura 4.2 mostra o funcionamento do robô sobre o sistema CRM onde

está sendo feita uma análise de dados, onde os mesmos podem ser

verdadeiros ou falsos, de acordo com valores pré-definidos para atender este

contato.

Figura 4.2 – Automatização do sistema CRM da empresa Mercado Livre.com®.

Page 41: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

41

Já a figura 4.3 mostra o robô analisando um contato feito pelo cliente

através do site do Mercado Livre.com® e enviando um e-mail com uma

resposta informativa contendo os passos que o cliente deve seguir no site para

solucionar o seu problema.

Figura 4.3 – Respondendo o contato de um cliente no sistema CRM da

empresa Mercado Livre.com®.

A figura 4.4 mostra que quando um processo não é suficiente para

solucionar o problema do cliente, ele é enviado a outro processo. Essa

verificação é feita através dos dados do cliente cadastrados no sistema

Figura 4.4 – Alterando o contato de um cliente para um outro processo no

sistema CRM da empresa Mercado Livre.com®

Page 42: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

42

Um ponto importante é que este robô não possui uma inteligência

artificial, todos os cálculos efetuados são funções lógica de verdadeiro ou falso,

sendo assim não é possível automatizar um processo onde são necessárias

respostas dinâmicas para um determinado caso.

4.3 – Desenvolvimento do Robô

Foi escolhido um sistema CRM (“Customer Relationship Management”)

“on line” chamado ZOHO. Ele é um sistema completo com disponibilidade de

vários processos e funções.

Neste sistema CRM, os contatos de clientes passam a ser casos e a

automatização será desenvolvida criando tarefas para cada caso dependendo

de seus dados.

Os casos foram criados manualmente para serem utilizados neste

trabalho, simulando o contato de um cliente.

O primeiro passo foi executar o sistema ZOHO CRM e executar o

Selenium IDE com formato de saída para linguagem Ruby. A partir do Selenium

IDE, foi feita a gravação dos passos que deveriam ser feitos no sistema

manualmente.

Depois de gravado todos os passos, o código do Ruby com Selenium foi

copiado para o editor do Cacique onde foi desenvolvida a lógica.

Com o processo definido, foram necessários dados - pré definidos -

para que fossem comparados com os dados do sistema CRM. Para isso, foram

criadas variáveis atribuindo valores no inicio do “script” do Cacique.

Por exemplo: definiu-se uma variável “name” onde a mesma obteve um

valor de “Maria” e comparou-se com a variável “user_name” que o sistema

capturou no campo, conforme a sintaxe de Ruby abaixo:

Page 43: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

43

name = ‘Maria’

If user_name == name

puts ‘Nome do usuário é: ‘+user_name.to_s

end

O código acima mostrou o nome do usuário capturado no sistema em

formato do tipo String na sintaxe da linguagem Ruby, onde está “.to_s”.

Escrevendo de forma mais clara seria: se usuário capturado no campo “nome”

no sistema for igual a “Maria”, mostrar na tela o usuário capturado em formato

de caracter.

Utilizando essa mesma lógica de comparação e/ou outras lógicas,

podem-se desenvolver automatizações sobre outros sistemas e sites.

A figura 4.5 abaixo mostra o funcionamento do robô sobre o sistema

CRM ZOHO, onde está sendo feita a verificação dos dados dos casos na fila

de nome “Todos os casos”.

Figura 4.5 – Automatizando o sistema CRM ZOHO

Page 44: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

44

A figura 4.6 mostra a execução do script sobre o sistema CRM ZOHO no

processo de criação de tarefas onde os dados dos casos já foram analisados e

feita a lógica e cálculos com os mesmos.

Após criar uma tarefa, a programação que está no script “manda” o robô

executar novamente até que não existam mais casos para criar tarefa. Há uma

lógica que verifica sempre a quantidade de casos na fila “Todos os casos”.

Figura 4.6 – Executando o processo de criação de tarefas

4.4 – Análise de desempenho do Robô

A análise de desempenho foi feita seguindo o processo de criação de

tarefas manualmente, somando quantidade de cliques e texto para inserir nos

campos necessários, contados em um cronômetro.

Page 45: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

45

Puderam-se obter no total de sete cliques de mouse, dois campos de

textos sendo que o primeiro contém treze caracteres e o segundo texto

contendo vinte e quatro caracteres e somando as análises necessárias como:

- verificar assunto do caso,

- data de criação,

- e nome do contato.

O processo manual a partir do “login” no sistema, levou

aproximadamente 120 segundos para realizar a criação de uma tarefa sendo

que a execução do robô levou aproximadamente 60 segundos por criação de

tarefa.

A figura 4.7 mostra o relatório contendo o tempo de execução do robô.

Figura 4.7 – Relatório de execução do robô.

Page 46: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

46

Foi utilizado a função “Time.now” para obter a data e hora atual no inicio

da execução e no final, e assim, por subtração, obter a diferença de tempo de

execução.

Segue abaixo a função de calculo do tempo de execução:

start = Time.now

run_time_final = Time.now - start

A variável “start” foi declarada no inicio do “script” e a variável

“run_time_final” foi declarada no final, onde a mesma recebe a diferença entre

as duas datas e horas.

A tabela 3 mostra os tempos de execução do robô para uma amostra de

cinco casos do sistema CRM ZOHO em uma conexão de internet com a

velocidade de 1 Mbps via a cabo.

CASO ANALISADO TEMPO APROXIMADO

DE EXECUÇÃO

MANUAL

TEMPO DE

EXECUÇÃO

AUTOMÁTICA

DIFERENÇA

ENTRE AS

EXECUÇÕES

Problema com o meu produto 120 sec. 59.58132 sec 60.41868 sec.

Problema com o meu produto 122 sec. 60.61296 sec 61.38704 sec.

Problema com o meu produto 121 sec. 61.78223 sec 59.21777 sec.

Problema com o meu produto 119 sec. 60.64150 sec 58.35850 sec.

Problema com o meu produto 120 sec. 59.95623 sec 60.04377 sec.

MÉDIA DOS TEMPOS DE

EXECUÇÃO 120,4 sec. 60.514848 sec. 59.885152 sec.

Tabela 3 – Comparação dos tempos de execução do robô.

Pela tabela 3, pode-se verificar que o tempo de execução do caso

analisado teve uma performance de aproximadamente 50%, pois o tempo de

execução do robô foi praticamente a metade do tempo da execução manual. É

possível gerar mais tabelas para cada caso a ser analisado, principalmente

onde há maior dispendimento de tempo de processo convencional.

Page 47: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

47

4.5 – Script do Robô

O script abaixo mostra toda programação feita na linguagem Ruby e

Selenium.

As linhas comentadas pelo simbolo #, descrevem o que está sendo

executado no script do robô.

#------------------------------------------------------------------------- # Simulação de um sistema CRM (aplicativo web) # @uthor: Danilo Yoshio Marques dos Santos # e-mail: [email protected] #------------------------------------------------------------------------- #------------------------------------------------------------------------- # Acessa o site do sistema CRM #------------------------------------------------------------------------- selenium_init "http://crm.zoho.com/crm/login.sas" selenium.open "/" sleep 2 #------------------------------------------------------------------------- # Marca a data e hora que o robô iniciou #------------------------------------------------------------------------- start = Time.now #------------------------------------------------------------------------- # Fazer login no CRM ZOHO #------------------------------------------------------------------------- selenium.type "lid", "cacique1" sleep 2 selenium.type "pwd", "cacique"

sleep 2

selenium.click "sec"

selenium.click "submit"

sleep 5

selenium.wait_for_page_to_load "30000"

sleep 2

selenium.select_window "null"

selenium.click "css=#tab_Cases > nobr"

sleep 3

Page 48: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

48

#----------------------------------------------------------------------------------------

# Calculo de total de paginas

#----------------------------------------------------------------------------------------

total_paginas = selenium.get_table("//div[@id='idForCV']/table[1].1.1")

total_paginas =

total_paginas.to_s.split(' ')

total_casos = total_paginas[3].to_s

puts 'Total de casos = ' + total_casos.to_s

puts ''

#----------------------------------------------------------------------------------------

# Opcao de mostrar 50 casos por pagina

#----------------------------------------------------------------------------------------

selenium.click "currentOption"

selenium.select "currentOption", "label=50"

selenium.click "//select[@id='currentOption']/option[5]"

i = 3

link = 462614000000050165

while

num_caso = selenium.get_table("listViewTable.#{i.to_s}.2")

assunto_caso = selenium.get_table("listViewTable.#{i.to_s}.3")

tipo_contato_caso = selenium.get_table("listViewTable.#{i.to_s}.4")

prioridade_caso = selenium.get_table("listViewTable.#{i.to_s}.5")

data_criacao_caso = selenium.get_table("listViewTable.#{i.to_s}.6") # formato da

data:"21-10-2011 03:37 AM"

usuario_caso = selenium.get_table("listViewTable.#{i.to_s}.7")

puts '--------------------------------------------------------------'

puts 'Numero do caso: ' + num_caso.to_s

puts 'Assunto: ' + assunto_caso.to_s

puts 'Tipo do contato: ' + tipo_contato_caso.to_s

puts 'Prioridade: ' + prioridade_caso.to_s

puts 'Data de criacao: ' + data_criacao_caso.to_s

puts 'Nome do usuario: ' + usuario_caso.to_s

puts ''

Page 49: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

49

data1 = data_criacao_caso.to_s # data1 = 21-10-2011 03:37 AM

data1 = data1.to_s

data1 = data1.split(' ')

data1 = data1[0].to_s

data1 = data1.to_s

data1 = data1.split('-')

puts 'Data capturada: ' + data1[0].to_s

puts 'Mes capturado: ' + data1[1].to_s

puts 'Ano capturado: ' + data1[2].to_s

dia = data1[0].to_s

mes = data1[1].to_s

anoA = 2011

mesA = 1

mesB = 2

mesC = 3

mesD = 4

mesE = 5

mesF = 6

mesG = 7

mesH = 8

mesI = 9

mesJ = 10

mesK = 11

mesL = 12

dia_in = 0

mes_in = 0

if mes == '1' || mes == '3' || mes == '5' || mes == '7' || mes == '8' || mes == '10' ||

mes == '12'

dia_test = '31'

end

if mes == '2' || mes == '4' || mes == '6' || mes == '9' || mes == '11'

dia_test = '30'

end

Page 50: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

50

if dia.to_i < dia_test.to_i

dia_in = dia.to_i + 1

mes_in = mes.to_i - 1

end

if dia.to_i == dia_test.to_i

dia_in = 1

mes_in = mes

end

if assunto_caso == 'Problema com o meu produto'

selenium.click "listView_#{link.to_s}"

sleep 3

solucao_caso =

selenium.get_table("//div[@id='462614000000003759']/table.0.1")

if solucao_caso == '<Não há Registros>'

sleep 1

selenium.click "task"

sleep 3

selenium.click "property(Subject)"

sleep 1

selenium.type "property(Subject)", "Solucao do caso"

sleep 1

selenium.click "//input[@name='property(Due Date)']"

sleep 1

selenium.click "//td[@onclick=\"selectdateshow('#{dia_in.to_s}

#{mes_in.to_s} 2011')\"]"

sleep 1

selenium.click "//input[@name='property(Send Notification Email)']"

sleep 1

selenium.click "property(Description)"

sleep 1

selenium.type "property(Description)", "Atender o caso em ate 24

horas"

sleep 1

Page 51: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

51

selenium.click "//div[@id='show']/form/table[3]/tbody/tr/td/input[1]"

sleep 3

puts 'Tarefa criada com sucesso!'

puts '--------------------------------------------------------------'

puts ''

puts ''

selenium.click "//a[@id='tab_Cases']/nobr"

link = link.to_i

link = link - 8

i = i + 1

sleep 3

run_time = Time.now - start

puts 'Tempo que levou para esta tarefa: '+run_time.to_s

p sprintf("%d min ", run_time / 60) + sprintf("%0.2f sec", run_time % 60)

else

puts 'Ja existe tarefa para este caso!'

puts '--------------------------------------------------------------'

puts ''

puts ''

selenium.click "//a[@id='tab_Cases']/nobr"

link = link.to_i

link = link - 8

i = i + 1

sleep 3

end

end

end

#run_time = Time.now - start

#p sprintf("%d min ", run_time / 60) + sprintf("%0.2f sec", run_time % 60)

selenium.close

selenium.stop

Page 52: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

52

Capítulo 5

5 – Conclusões.

Os resultados obtidos com o funcionamento do robô mostraram que o

processo de automatização foi realizado de forma eficaz, executando as tarefas

com agilidade e precisão, vide a tabela3 do Capitulo 4.

Para o caso adotado, o processo foi executado a uma velocidade duas

vezes maior se comparado a um trabalho manual.

Dessa forma, o robô pode ser utilizado para a execução de tarefas

operacionais repetitivas que não necessitem de análise subjetiva, liberando o

profissional dedicado a esta função.

Esta automatização trará aumento de produtividade e segurança aos

processos, já que praticamente não há mais a interferência humana, reduzindo

tempo e custo para a sua realização, além de permitir maior tempo de

dedicação dos profissionais à atividades mais complexas, que dependem de

seu conhecimento e experiência.

Como proposta para trabalhos futuros, sugere-se a implementação de

robôs em processos dinâmicos, onde as tomadas de decisão possam ser

executadas utilizando ferramentas ou implementação em sistemas de

inteligência artificial ou mesmo em sistemas adaptativos. Essas modificações

podem trazer um maior controle dos processos, utilizando-se de benefícios

próprios de arquiteturas como sistemas distribuidos ou híbridos, e utilizar

métodos de análise de desempenho mais robustos.

Page 53: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

53

Referencia Bibliográfica

GONÇALVES, Edson – Desenvolvendo Aplicações Web com JSP

Servlets, JavaServer Faces, Hibernate, EJB3 Persistence e AJAX – 2007

JUNQUEIRA, Daniel Cárnio - MATTOS, Renata Pontin de – Introdução

ao Desenvolvimento de Aplicações Web com Ruby on Rails ?

MATOS, Francisco Jarbas Teixeira, 2007 – Entendendo os recursos do

Linux – São Paulo: Digerati Books, 2007

MEDEIROS, Verônica Pedrozo, 2009 – Construção de Sistemas Web

utilizando ferramentas livres – Instituto de Pesquisas Aplicadas e

Desenvolvimento Educacional – IPADE, 2009

URUBATAN, Rodrigo, 2009 – Desenvolvimento Fácil e Rápido de

Aplicações Web Ruby on Rails – São Paulo: Editora: Novatec, 2009

Page 54: Danilo Yoshio Marques dos Santos · para processos em sistema web ZOHO CRM. Esta automação não só trará um aumento de produtividade e segurança, como também irá reduzir tempo

54

Pesquisas na Internet

All Dreams Soluções de Software e E-commerces – Disponível em:

<http://www.alldreams.com.br - acesso em 07/04/2011>

Cacique – Disponível em:

<http://cacique.mercadolibre.com – acesso em 14/02/2011>

Cacique – Sobre a ferramenta Disponível em:

< http://cacique.mercadolibre.com/?q=node/4 - acesso em 14/02/2011>

Macoratti.net – Disponível em:

<http://www.macoratti.net/vbn_dkwb.htm - acesso em 05/04/2011>

Manual do Usuário – Disponível em:

<http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_us

uario.pdf - acesso em 15/05/2011>

Ruby on Rails – Disponível em:

<http://www.rubyonrails.pro.br – acesso em 03/04/2011>

Ruby on Rails – Disponível em:

<http://ruby-br.org – acesso em 03/04/2011>

Rede nacional de Ensino e Pesquisa – Disponível em:

<http://www.rnp.br - acesso em 20/05/2011>

Selenium IDE - Disponível em:

<http://seleniumhq.org/projects/ide - acesso em 05/04/2011>