daguarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/joão... · construção de...

40
Tp ï daGuarda Escola Superior de Tecnologia e Gestão RELATÓRIO DE ESTÁGIO Curso de Técnico Superior Profissional em Desenvolvimento de Aplicações Informátícas João Daniel Augusto Comes julho 12017

Upload: others

Post on 28-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Tpï daGuardaEscola Superiorde Tecnologia e Gestão

RELATÓRIO DE ESTÁGIO

Curso de Técnico Superior Profissional em

Desenvolvimento de Aplicações Informátícas

João Daniel Augusto Comes

julho 12017

Page 2: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Escola Superior de Tecnologia e Gestão

Instituto Politécnico da Guarda

João Daniel Augusto Gomes

RELATÓRIO PARA OBTENÇÃO DO GRAU DE TÉCNICO SUPERIOR

EM DESENVOLVIMENTO DE APLICAÇÕES INFORMÁTICAS

JULHO DE 2017

Page 3: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

ii

Ficha de Identificação

Aluno:

Nome: João Daniel Augusto Gomes

Número: 1012000

Curso: Técnico Superior em Desenvolvimento de Aplicações Informáticas

Telefone: 963 425 776

e-mail: [email protected]

Estabelecimento de Ensino:

Instituto Politécnico da Guarda (IPG)

Escola Superior de Tecnologia e Gestão da Guarda (ESTG)

Morada: Avenida Dr. Francisco Sá Carneiro, nº. 50

6300-559 Guarda

Telefone: 271220120

e-mail: [email protected]

website: www.estg.ipg.pt

Empresa Acolhedora de Estágio:

Nome: Altran Portugal – Global Delivery Centre, Fundão

Morada: Centro de Negócios e Serviços, Praça Amália Rodrigues

6230-350 Fundão

Telefone: 210 331 600

e-mail: [email protected]

Orientadores:

Natália Fernandes Gomes – Instituto Politécnico da Guarda

Bruno Calado – Altran Fundão

Período de Estágio: 6 de março a 19 de julho de 2017

Page 4: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

iii

Agradecimentos

Com a finalização do relatório de estágio curricular gostaria de agradecer a algumas pessoas

que, direta ou indiretamente, me ajudaram nesta fase importante da vida académica e de

reinício de vida profissional.

Começava por agradecer ao Instituto Politécnico da Guarda e aos seus professores pelos

ensinamentos transmitidos ao longo do curso, em especial à orientadora de estágio, professora

Natália Gomes, pela orientação e disponibilidade demonstrada para ajudar, não só durante o

estágio, mas durante todo o curso.

Ao diretor de curso, professor Noel Lopes, e à diretora da Escola Superior de Tecnologia e

Gestão, professora Maria Clara Silveira, e a todos os professores que me acompanharam e

partilharam os seus conhecimentos durante o curso.

A todos os meus colegas de curso, mas com uma palavra especial para o Dário Ribeiro, o qual

também frequentou o estágio curricular na Altran Fundão e me acompanhou durante o período

de estágio.

Uma palavra de agradecimento também à empresa que me acolheu durante o estágio e me deu

a oportunidade de recomeçar a minha vida profissional, e às pessoas que me acompanharam

durante o estágio, o meu orientador na empresa, Eng. Bruno Calado, e os colegas Eunice Pombo

e Cristiano Geraldes.

Um agradecimento final à minha família que mostrou um apoio incondicional durante todo o

percurso e em todos os momentos da minha vida.

Page 5: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

iv

Plano de Estágio

O estágio curricular tem como objetivo a inserção do aluno no ambiente de trabalho, sendo para

isso proporcionadas pela empresa acolhedora as condições necessárias para que o aluno ponha

em prática os conhecimentos adquiridos ao longo da parte curricular e adquirir novos

conhecimentos que apenas podem ser adquiridos em ambiente laboral.

Para tal, no início do estágio, é elaborado pela empresa, a Altran, um plano de estágio e um

orientador na empresa. O estagiário deverá ser acompanhado durante o período de estágio

curricular e avaliado no fim do mesmo.

O plano de estágio foi elaborado pelo Eng. Bruno Calado, Team Manager do Test Center da

Altran Fundão e orientador do estagiário na empresa. O mesmo foi elaborado tendo em

consideração as necessidades da empresa e dos atuais projetos dos seus clientes.

O plano de estágio foi definido no início do estágio, março de 2017, e consiste em quatro pontos

fundamentais:

Shell scripting (Linux e Windows)

Python scripting

Testes de automação (Robot Framework)

Outras tarefas dependentes de projetos de clientes

A Tabela 1 apresenta as competências a adquirir pelo estagiário durante cada ponto do plano

de estágio:

Plano de estágio Competências a adquirir

Shell Scripting Desenvolvimento de script de instalação, upgrade e downgrade para instalação de software necessário para automação de testes para ambientes Linux com recurso à linguagem bash e ao uso da função getopt.

Desenvolvimento de script de instalação, upgrade e downgrade para instalação de software necessário para automação de testes para ambientes Microsoft Windows com recurso à linguagem batch.

Python Scripting Programação do jogo Minesweeper em linguagem Python.

Criação de um script único de instalação para todos os sistemas operativos principais: Microsoft Windows, Linux e Apple Mac OS.

Testes de automação (Robot Framework) Realização de testes de software utilizando Robot Framework na página web dos CTT.

Outras Tarefas dependentes de projetos de clientes

Inserção em projeto existente de automação.

Tabela 1 - Competências a adquirir

Page 6: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

v

Resumo do Trabalho Desenvolvido

Serve o presente relatório para fazer o balanço do estágio curricular realizado no âmbito do

Curso de Técnico Superior em Testes de Software lecionado nos anos letivos de 2015/16 e

2016/17.

Com a crescente importância da experiência profissional na qualificação dos trabalhadores no

mercado profissional, o Curso Técnico Superior Profissional é valorizado pelo facto de essa

competência ser cada vez mais valorizada pelos empregadores. A oportunidade de, em âmbito

curricular, ter contacto com as metodologias de trabalho de uma empresa é uma mais valia para

o currículo.

O estágio decorreu no período 06 de março a 19 de julho de 2017 na Altran Portugal, mais

concretamente no Global Delivery Centre do Fundão, empresa de Consultoria de Inovação e

Tecnológica em Portugal.

Eram objetivos deste estágio que o estagiário conseguisse de forma autónoma realizar as suas

funções, desde os conceitos básicos sobre automação de testes; passando pela criação de scripts

de instalação do software necessário, com o objetivo de compreender quais as dificuldades

inerentes à sua instalação e configuração; programação em Python, necessária para a

construção de testes; acabando na automação de testes com recurso ao software Robot

Framework, RIDE, Appium e Selenium.

Eram também objetivos o desenvolvimento de qualidades pessoais, tais como o trabalho em

equipa e ética em local de trabalho.

No final é feito um balanço do estágio realizado e uma análise da evolução no decorrer do

período de estágio.

Palavras Chave: Automação de testes, Altran, scripts, Python, Robot Framework, RIDE

Page 7: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

vi

Índice

Ficha de Identificação.................................................................................................................... ii

Agradecimentos ........................................................................................................................... iii

Plano de Estágio ............................................................................................................................iv

Resumo do Trabalho Desenvolvido ............................................................................................... v

Índice de Figuras ......................................................................................................................... viii

Índice de Tabelas ........................................................................................................................... ix

Acrónimos ..................................................................................................................................... x

1. Introdução ............................................................................................................................... 11

1.1 Contextualização ............................................................................................................... 11

1.2 Objetivos ........................................................................................................................... 12

1.3 Estrutura ............................................................................................................................ 12

2. Caracterização da Entidade Acolhedora [1] [2]....................................................................... 13

2.1 Grupo Altran ...................................................................................................................... 13

2.2 Altran Portugal .................................................................................................................. 14

2.3 Altran Fundão .................................................................................................................... 15

3. Automação de Testes .............................................................................................................. 16

3.1 Necessidade de Automação .............................................................................................. 16

3.2 Vantagens de Automação ................................................................................................. 16

3.2 Software Utilizado ............................................................................................................. 17

3.2.1 Robot Framework e RIDE ........................................................................................... 17

3.2.2 Selenium ..................................................................................................................... 19

3.2.3 Docker ........................................................................................................................ 20

3.2.4 Jenkins ........................................................................................................................ 21

3.2.5 Software de Controlo de versões ............................................................................... 21

3.3 Hub e Nós .......................................................................................................................... 22

3.3.1 Hub ............................................................................................................................. 22

3.3.2 Nó Selenium ............................................................................................................... 23

3.2.3 Nó Appium .................................................................................................................. 23

4. Atividades Desenvolvidas ........................................................................................................ 24

4.1 Shell Scripting .................................................................................................................... 24

4.1.1 Bash Script .................................................................................................................. 26

4.1.2 Batch Script ................................................................................................................ 27

Page 8: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

vii

4.2 Python Scripting ................................................................................................................ 28

4.2.1 Desenvolvimento do Jogo Minesweeper ................................................................... 28

4.2.2 Script Unificado .......................................................................................................... 31

4.3 Automação de Testes ........................................................................................................ 32

4.4 Tempo despendido em cada etapa ................................................................................... 35

5. Conclusão ................................................................................................................................ 36

Referências .................................................................................................................................. 37

Page 9: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

viii

Índice de Figuras

Figura 1 - Logotipo Altran ............................................................................................................ 13

Figura 2 - Escritórios grupo Altran pelo mundo .......................................................................... 13

Figura 3 - História grupo Altran em Portugal .............................................................................. 14

Figura 4 - Centro de Negócios e Serviços do Fundão .................................................................. 15

Figura 5 - Demonstração de Log em Robot Framework ............................................................. 17

Figura 6 - Exemplificação de teste em RIDE ................................................................................ 18

Figura 7 - Exemplificação de utilização de Selenium-Grid .......................................................... 19

Figura 8 - Comparação de Docker com máquina virtual ............................................................. 20

Figura 9 - Exemplificação de utilização do software Jenkins ...................................................... 21

Figura 10 - Funcionamento do repositório Git ............................................................................ 21

Figura 11 - Representação de Hub .............................................................................................. 22

Figura 12 - Exemplificação de vários nós Selenium e Appium .................................................... 23

Page 10: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

ix

Índice de Tabelas

Tabela 1 - Competências a adquirir...............................................................................................iv

Tabela 2 - Guia de construção de script de instalação para HUB, nós Selenium e Appium ....... 25

Tabela 3 - Representação do tabuleiro do jogo Minesweeper ................................................... 29

Tabela 4 - Tabuleiro de jogo real ................................................................................................. 30

Tabela 5 - Tabuleiro de jogo mostrado ao jogador ..................................................................... 30

Tabela 6 - Estatísticas de Test Cases e keywords na aplicação ................................................... 34

Tabela 7 - Gráfico referente ao tempo despendido em cada etapa do estágio ......................... 35

Page 11: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

x

Acrónimos

ATDD Acceptance Test Driven Development

BASH Bourne-Again Shell

CTT Correios e Telecomunicações de Portugal

ESTG Escola Superior de Tecnologia e Gestão

IPG Instituto Politécnico da Guarda

TeSP Curso de Técnico Superior Profissional

URL Uniform Resource Locator

XML Extensible Markup Language

Page 12: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

11

1. Introdução

A automação de testes tem vindo a assumir cada vez mais um papel preponderante na área de

testes de software1. Esta preponderância justifica-se com o facto de o tempo e a qualidade

serem cada vez mais um fator decisivo no mercado de trabalho dos sistemas informáticos. A

automação de testes não pretende substituir os testes manuais, mas sim facilitar o seu trabalho,

criando condições para que o tester2 não tenha que fazer os mesmos testes repetidamente cada

vez que há uma atualização do software que está em desenvolvimento, permitindo automatizar

os testes de regressão3 para que a cobertura de testes seja cada vez maior.

O uso de uma linguagem de scripting4 é essencial na automação de testes. Para ser possível ao

estagiário realizar tarefas de automação de testes, foi necessário aprender duas linguagens de

scripting, Bash e Batch, e a linguagem de programação Python, que serão explicadas

posteriormente no relatório.

1.1 Contextualização

O presente relatório é referente ao estágio curricular correspondente à íntegra do 2.º semestre

do 2.º ano do Curso Técnico Superior Profissional5 (TeSP) em Desenvolvimento de Aplicações

Informáticas ministrado no Instituto Politécnico da Guarda nos anos letivos de 2015/16 e

2016/17.

O estágio curricular corresponde à formação académica em contexto de trabalho realizada entre

os dias 06 de março e 19 de julho de 2017, tendo uma cotação de 30 ECTS num total de 120

ECTS do total do curso.

A entidade acolhedora, para a realização do estágio curricular, foi a Altran Portugal, situada no

Global Delivery Center situado no Centro de Negócios e Serviços do Fundão.

1 Software: “conjunto de programas, processos, regras e, eventualmente, documentação, relativos ao funcionamento de um conjunto de tratamento de informação”. [35] 2 Tester: pessoa que executa testes em software antes da sua implementação para assegurar qualidade, integridade e funcionamento correto do mesmo. [10] 3 Testes de regressão: técnica utilizada em testes de software que consiste em testar novamente funcionalidades testadas anteriormente quando é lançada uma atualização da aplicação. Esta técnica é utilizada para garantir que a nova atualização não afetou nenhuma funcionalidade necessária ao funcionamento do software. [36] 4 Script: “conjunto de instruções em código”. [37] 5 Curso Técnico Superior Profissional (TeSP): formação de ensino superior politécnica, que confere uma qualificação de nível 5 do Quadro Nacional de Qualificações. [38]

Page 13: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

12

1.2 Objetivos

Pretendeu-se com este estágio aplicar os conhecimentos adquiridos durante a formação

curricular e também adquirir novos conhecimentos necessários para adaptação à realidade

laboral. O estágio é acompanhado, ao longo dos quatro meses e meio, por um orientador na

empresa, que tem também as funções de Team Manager no projeto Test Center, e por um

professor orientador do Instituto Politécnico da Guarda.

Aquando do término do estágio curricular o objetivo principal é o de que o aluno esteja apto

para ingressar no mercado de trabalho. De acordo com o plano de estágio o objetivo foi o de

proporcionar os melhores conhecimentos na área de automação de testes.

1.3 Estrutura

O relatório encontra-se estruturado em cinco capítulos. O primeiro capítulo contextualiza o

estágio e explica os objetivos do mesmo.

O segundo capítulo descreve o grupo Altran, no mundo, em Portugal e por último apresenta as

instalações no Fundão.

No terceiro capítulo é explicado o que é automação de testes e quais os softwares utilizados

para o processo.

No quarto capítulo são descritas as tarefas realizadas durante o período de estágio curricular e

é feita uma avaliação do tempo despendido com cada tarefa.

Para finalizar, no quinto capítulo, são tiradas as conclusões e apreciação crítica, não só do

estágio, mas também do curso.

Page 14: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

13

2. Caracterização da Entidade Acolhedora [1] [2]

Neste capítulo, é apresentado de forma breve o grupo Altran e a Altran Portugal, de modo a

elucidar o leitor sobre a empresa acolhedora.

2.1 Grupo Altran

O grupo Altran é um grupo internacional e líder global em informação e consultoria de

engenharia de alta tecnologia, cujo logotipo é apresentado na Figura 1.

Figura 1 - Logotipo Altran

FONTE: http://www.altran.com/

A Altran está presente e desenvolve soluções para vários setores, sendo eles a aeronáutica, os

transportes terrestres e marítimos, energia, indústria, eletrónica, ciências, telecomunicações,

multimédia, financeiros e governamentais. O grupo foi fundado em 1982 em França, contando

atualmente com cerca de 17 000 empregados por todo o mundo e, encontrando-se o grupo

sediado em mais de 20 países espalhados pelo continente europeu, asiático e americano, Figura

2.

Figura 2 - Escritórios grupo Altran pelo mundo

FONTE: http://www.altran.com/altran-in-the-world.html

Page 15: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

14

2.2 Altran Portugal

A Altran Portugal é uma das principais empresas de inovação e consultoria de engenharia de

alta tecnologia em Portugal. O grupo está em Portugal desde 1998, embora apenas tenha

consolidado a marca Altran em 2009, contando atualmente com mais de 1000 colaboradores e

estando presente em vários setores de atividade como o Financeiro, Telecomunicações &

Media, Administração Pública, Indústria, Energy & Life Sciences, Intelligent Systems e Utilities,

estando a sua oferta estruturada em quatro diferentes linhas de negócio [3]:

Intelligent Systems

Information Systems

Lifecycle Experience

Mechanical Engineering

Figura 3 - História grupo Altran em Portugal

FONTE: http://www.altran.pt/sobre-nos/altran-portugal/historia.html

Page 16: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

15

2.3 Altran Fundão

Para além de Lisboa e Porto, a Altran implementou o Global Delivery Center na cidade do

Fundão, localizado no Centro de Negócios e Serviços. Conta atualmente com cerca de 300 postos

de trabalho, número que deverá aumentar até ao final de 2018, como confirmado pelo vice-

presidente da Altran Portugal, Cyril Roger: "Vamos continuar a desenvolver o projeto do Fundão

e o nosso foco de expansão é termos aqui 500 engenheiros, até 2018" [4], figura 4.

Figura 4 - Centro de Negócios e Serviços do Fundão

FONTE: http://www.jornaldofundao.pt/fundao/altran-quer-ampliar-as-instalacoes-no-fundao/

Para conseguir atingir esta meta de trabalhadores, a Altran pretende ampliar as instalações no

Centro de Negócios do Fundão.

Célia Reis, diretora-geral da Altran, afirmou em declarações ao Jornal do Fundão: “As previsões

de crescimento nacional apontam para a contratação de cerca de 300 pessoas, sendo que uma

parte (entre 100 a 150) fica no Fundão. Ou seja, até final do ano, a empresa quer ter no Fundão

400 funcionários, objetivo que é apontado como patamar mínimo”. [5]

Page 17: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

16

3. Automação de Testes

Neste capítulo é apresentada a definição de automação de testes, quais as vantagens da sua

utilização e software utilizado durante o período de estágio.

3.1 Necessidade de Automação

A automação de testes é o uso de software para correr testes em aplicações em

desenvolvimento. Embora o software utilizado na automação, que será descrito posteriormente

seja open-source6, esta implica um custo elevado e não pode ser realizada em todos os projetos,

apenas em projetos de longo termo e que sejam lançadas releases7 periodicamente.

A automação de testes não pretende substituir os testes manuais, mas sim complementá-los,

maioritariamente a nível de tempo despendido, principalmente nos testes de regressão, onde o

tester despende bastante tempo a voltar a fazer os mesmos testes cada vez que há uma

atualização no software. Com este tipo de testes é possível correr vários casos de teste em pouco

tempo e encontrar falhas que não são possíveis de encontrar ao fazê-los manualmente.

3.2 Vantagens de Automação

A automação de testes é uma tarefa bastante dispendiosa ao nível de recursos, tempo e

dinheiro. Contudo, a longo prazo, este processo torna-se rentável tanto para o cliente como

para a empresa.

Tendo em conta que a automação não substitui os testes manuais, a implementação da

automação é dispendiosa. É necessária a contratação de mais pessoal ou formar o pessoal

existente para este tipo de trabalho. São também necessárias novas máquinas e licenças de

dispositivos para correrem os testes e todos estes processos despendem bastante tempo

inicialmente.

Automação é normalmente implementada em projetos de longo prazo, isto porque durante

quanto mais tempo decorrer o projeto, mais testes estão implementados e mais fácil é fazer

casos de testes pois já estão criadas keywords8 para automatizar processos dentro do próprio

teste.

6 Open-source: código aberto. 7 Releases: versões. 8 Keywords: pedaços de código usados para automatizar tarefas dentro do software de automação de testes.

Page 18: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

17

3.2 Software Utilizado

Neste capítulo são descritos os softwares mais importantes usados para o processo de

automação.

3.2.1 Robot Framework e RIDE

O Robot Framework é um framework9 open-source de automação de testes para testes de

aceitação10 (Acceptance Tests) e Acceptance Test Driven Development11 (ATDD). É independente

de sistema operativo, porque é implementado com recurso a Python. A sua utilização é essencial

para a análise dos testes e, caso o teste falhe, análise do log do erro, como fica demonstrado na

Figura 6:

Figura 5 - Demonstração de Log em Robot Framework

FONTE: Elaboração Própria

9 Framework: combinação de bibliotecas que permite executar código independentemente do sistema operativo. 10 Testes de aceitação (Acceptance Tests): descrição formal do comportamento esperado de um software. [13] 11 Acceptance Test Driven Development (ATDD): prática que envolve a colaboração entre diferentes elementos de uma equipa para criar Acceptance Tests antes da implementação de uma determinada funcionalidade. [14]

Page 19: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

18

O RIDE é um ambiente de desenvolvimento para criar casos de teste em Robot Framework. Com

a utilização deste ambiente, é possível criar casos de teste em Robot Framework usando uma

interface gráfica. O RIDE tem também a funcionalidade de mostrar o que está a acontecer com

o teste em tempo real, ou seja, é possível ver o que o teste está a fazer olhando para o browser

ou para a consola do próprio ambiente de desenvolvimento.

Figura 6 - Exemplificação de teste em RIDE

FONTE: Elaboração Própria

Page 20: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

19

3.2.2 Selenium

O Selenium é um software que permite correr múltiplos testes em paralelo em máquinas

diferentes, com diferentes web browsers e sistemas operativos. Permite uma execução de testes

distribuída, ou seja, permite correr testes num ambiente de execução distribuído, como é

mostrado na Figura 7. [6]

Figura 7 - Exemplificação de utilização de Selenium-Grid

FONTE: http://toolsqa.com/wp-content/gallery/selenium-basics/Selenium-Grid-Architecture.png

Page 21: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

20

3.2.3 Docker

O Docker é uma plataforma de containers de software. Containers são pedaços de software

necessários para um software funcionar. Ao contrário das máquinas virtuais, os containers

apenas contém bibliotecas e definições necessárias para o software funcionar, e não o sistema

operativo completo. O Docker é uma plataforma excelente para programadores porque elimina

a necessidade de configurar um novo ambiente de desenvolvimento quando é necessário mudar

algum aspeto no sistema operativo. [7]

Figura 8 - Comparação de Docker com máquina virtual

FONTE: http://zdnet4.cbsistatic.com/hub/i/r/2014/10/02/1f130129-49e2-11e4-b6a0-

d4ae52e95e57/resize/770xauto/2598bf8706f23f291a520c42165e6b1f/docker-vm-container.png

Page 22: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

21

3.2.4 Jenkins

O Jenkins é uma ferramenta de automação open-source, desenvolvida em Java, utilizada para

testar e automatizar tarefas tais como desenvolvimento, teste e lançamento de software. [8]

Figura 9 - Exemplificação de utilização do software Jenkins

FONTE: https://cdn.edureka.co/blog/wp-content/uploads/2016/10/Saurabh-01.png

3.2.5 Software de Controlo de versões

Ao desenvolver ou testar software, a utilização de uma ferramenta de controlo de versões é

quase obrigatória. Um exemplo de software de controlo de versões é o Git, que permite que

múltiplos programadores trabalhem ao mesmo tempo no mesmo projeto sem interferir com o

trabalho uns dos outros, guardando todas as versões lançadas, fazendo assim com que seja

impossível perder uma parte do código. [9]

Figura 10 - Funcionamento do repositório Git

FONTE: https://www.git-tower.com/learn/git/ebook/en/command-line/remote-repositories/introduction

Page 23: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

22

3.3 Hub e Nós

3.3.1 Hub

O Hub é o ponto central da automação de testes, sendo nele que são carregados e executados

os testes, embora para o utilizador não pareça, a automatização do processo aparece nos

respetivos nós. Esta arquitetura está dependente do Selenium Server, que permite ao HUB

controlar os nós e correr testes em diferentes browsers, máquinas e sistemas operativos ao

mesmo tempo, assegurando que a aplicação testada é completamente compatível com todos

eles, permitindo ao tester poupar tempo enquanto testa a aplicação em vários sistemas

diferentes.

Figura 11 - Representação de Hub

FONTE: http://cdn.guru99.com/images/hub_and_nodes.jpg

Page 24: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

23

3.3.2 Nó Selenium

Os nós são as instâncias de Selenium que executam os testes carregados no HUB. O nó Selenium

é um nó de testes em browser, que requer web drivers para funcionar corretamente. Cada um

destes nós pode conter vários browsers, como exemplificado na Figura 7, onde estão

exemplificados seis nós e dois deles têm múltiplos browsers.

Figura 12 - Exemplificação de vários nós Selenium e Appium

FONTE: https://i.stack.imgur.com/F5cVL.png

3.2.3 Nó Appium

O nó Appium comporta-se da mesma maneira que o nó Selenium em relação ao HUB, mas

permite automatizar aplicações móveis nas plataformas IOS e Android, ao contrário do anterior

que permite automatizar browsers web.

Page 25: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

24

4. Atividades Desenvolvidas

Neste capítulo são descritas as atividades desenvolvidas pelo estagiário durante o período de

estágio curricular.

No primeiro ponto é explicado o que é e como foi feito processo de criação dos scripts de

instalação de software.

No segundo ponto é explicado como foi feito o processo de aprendizagem e criação do script

unificado em linguagem Python.

No terceiro ponto são explicadas as tarefas realizadas pelo estagiário em automação de testes

de software.

No último ponto é apresentado um gráfico ilustrativo do tempo despendido em cada tarefa

durante o período de estágio curricular.

4.1 Shell Scripting

A primeira tarefa pedida ao estagiário foi a utilização das linguagens Bash12 e Batch13 para a

criação de dois scripts14 de instalação automático do software descrito na tabela 2. Com a

criação dos scripts, o orientador na empresa pretendia que o estagiário desenvolvesse os

conhecimentos em linha de comandos Linux e Windows, percebesse quais as funções de cada

nó15 e do Hub16, e conhecesse as dificuldades inerentes à instalação deste software, preparando-

o para dificuldades futuras na utilização do mesmo e ajudando o projeto ao automatizar a

instalação dos vários nós necessários para a automação de testes de software.

Na tabela 2 é apresentado o modelo de funcionamento do script de instalação, quais os

softwares que o script deve instalar e a ordem pelo qual devem ser instalados.

12 Bash: acrónimo de Bourne-Again Shell, é um interpretador de comandos gratuito e distribuído com os sistemas operativos Linux, que permite interpretar comandos escritos pelo utilizador de forma sequencial e automática. [32] 13 Batch: é um interpretador de comandos que permite aos utilizadores de sistemas operativos Microsoft Windows correr comandos de forma sequencial, sendo principalmente utilizado para automatizar tarefas. [33] 14 Script: sequência de comandos que o interpretador deve executar ordenadamente. 15 Nó: terminal de comunicação. 16 Hub: sistema central que controla os nós.

Page 26: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

25

ATUALIZAR INSTALAR

SOFTWARE HUB NÓ SELENIUM NÓ APPIUM

Python

WxPython

Java

Java WS

Robot Framework

RIDE

Selenium 2 Library

Appium 2 Library

Image Horizon Library

Mozilla Firefox 32/64

Google Chrome 32/64

Internet Explorer 32/64

Selenium Grid

Docker

Jenkins

Git

Node.js

Android SDK

Appium

Tabela 2 - Guia de construção de script de instalação para HUB, nós Selenium e Appium

LEGENDA: VERDE = obrigatório; VERMELHO = não permitido; AMARELO = opcional; 32/64 = instala versão 32 ou 64

bits, especificada pelo utilizador

O software necessário para a automação de testes é explicado no capítulo seguinte. Para que

estes programas funcionem corretamente, foi necessário instalar algumas dependências, sendo

elas:

Python17

WxPython18

Pip19

Java20

Java Web Start21

Node.js22

Npm23

17 Python: linguagem de programação de alto nível orientada a objetos. [19] 18 WxPython: conjunto de ferramentas para Python. Permite criar programas em Python com recurso a interface gráfica. [20] 19 Pip: gestor de pacotes usado para instalar pacotes de Python, funcionando em qualquer sistema operativo. [21] 20 Java: linguagem de programação desenhada para funcionar em qualquer sistema. [22] 21 Java Web Start: biblioteca que permite iniciar software desenvolvido com Java diretamente através do browser. [23] 22 Node.js: plataforma construída em JavaScript que permite construir aplicações de rede escaláveis. [24] 23 Npm: gestor de pacotes com repositório online que permite instalar projetos construídos em Node.js. [25]

Page 27: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

26

Para o funcionamento correto de Robot Framework com Selenium e Appium, softwares que

serão explicados no seguimento deste relatório, é necessário adicionar algumas bibliotecas ao

script de instalação, sendo elas:

Selenium 2 Library24

Appium Library25

Image Horizon Library26

Para a utilização dos browsers com Selenium, é necessária a instalação de web drivers27,

nomeadamente:

Gecko Driver28

ChromeDriver29

Os restantes elementos da tabela são explicados no capítulo anterior.

4.1.1 Bash Script

A versão Linux do script de instalação foi desenvolvido recorrendo à linguagem nativa dos

sistemas baseados em Linux, o Bash. A pedido do orientador de estágio na empresa, o método

de utilização do script deveria ser o seguinte:

Install_script.sh <ACTION>=<MACHINE> <PACKAGE>=<VERSION>

Para ser possível a utilização deste método, as alternativas seriam utilizar uma das funções:

Getopt ou Getopts30. Ambas as funções são semelhantes, mas foi utilizada a função Getopt para

o propósito deste script, porque permite utilizar opções long e short, ou seja, argumentos de

vários caracteres ou de apenas um, respetivamente.

Após a implementação do método de utilização, o desafio seguinte foi a instalação sequencial

dos pacotes de software inerentes a cada tipo de instalação. Esta tarefa revelou-se bastante

complicada, principalmente por causa dos programas dependentes, que necessitam modificar

variáveis de ambiente e não são supostos de serem instalados sequencialmente sem reiniciar a

máquina ou pelo menos reiniciar a linha de comandos. Este problema foi resolvido adicionando

linhas de texto aos ficheiros do sistema para criar variáveis de ambiente e reiniciando o ficheiro

‘/etc/profiles’ dentro do próprio script para que essas variáveis possam ser lidas sem ser

necessário reiniciar.

Outro desafio desta fase foi a instalação automática do wxPython. Para o funcionamento do

ambiente de desenvolvimento do Robot Framework, é necessária especificamente a versão 2.8

unicode deste software. Esta versão está desatualizada e por isso não está presente nos

24 Selenium2library: biblioteca para testes em browser web para Robot Framework. [26] 25 Appium Library: biblioteca para testes em aplicações móveis para Robot Framework. [27] 26 ImageHorizonLibrary: biblioteca para Robot Framework que permite automatizar interfaces gráficas com base em reconhecimento de imagens. [28] 27 Web drivers: framework utilizada para controlar remotamente browsers web. [29] 28 Gecko Driver: web driver para Mozilla Firefox. [30] 29 ChromeDriver: web driver para Google Chrome. [31] 30 Getopt/Getopts: funções Bash que permitem manipular argumentos passados pelo utilizador na linha de comandos. [11]

Page 28: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

27

repositórios de aplicações de Linux. Para resolver este problema foi necessário adicionar um

novo repositório, instalar a aplicação a partir do novo repositório e removê-lo de seguida.

Nesta fase surgiu um novo problema, derivado da automação da instalação de várias aplicações,

o erro: “Unable to lock the administration directory (/var/lib/dpkg/)”. Este erro é causado por

mais do que uma aplicação estarem a ser instaladas ou atualizadas, o que acontece com

frequência nos primeiros minutos em que a máquina está ligada porque esta verifica

automaticamente se existem atualizações e enquanto isso não deixa qualquer programa ser

instalado. Foi então adicionado ao script uma verificação se o diretório está ou não bloqueado,

e se estiver, esperar antes da instalação do software.

As instalações de Robot Framework, RIDE e bibliotecas foram feitas com o gestor de pacotes Pip.

Na instalação dos browsers, a maior dificuldade, para a qual não foi possível encontrar uma

solução, foi a instalação automática do Internet Explorer em Linux. A sua instalação é possível

através de Wine31, mas não é possível programaticamente através da linha de comandos, o que

era essencial para funcionar através do script, e por isso a sua instalação não consta do script de

instalação Bash.

Outra grande dificuldade nesta fase foi a instalação de Android SDK, isto porque embora a

própria instalação permita ser feita por linha de comandos, não é possível aceitar as licenças

automaticamente. Para resolver este problema, foi usada a função Expect, que espera por uma

determinada palavra e, quando ela é mostrada, permite introduzir um comando e continuar a

execução do script.

O objetivo do script de Bash foi mostrar as dificuldades inerentes à automação de tarefas,

executando um conjunto de tarefas sequencialmente, assim como aumentar os conhecimentos

adquiridos durante o curso sobre Bash.

4.1.2 Batch Script

Após a conclusão do script em Bash, o desafio seguinte foi a programação do mesmo script de

instalação, mas desta vez para ambientes Windows, em linguagem Batch.

As maiores dificuldades nesta fase foram a aprendizagem da linguagem Batch e encontrar uma

solução para automatizar a instalação de vários pacotes de software, isto porque o software

destinado a sistemas Windows não é normalmente instalado via linha de comandos.

Para a análise dos argumentos, ao contrário da linguagem Bash, onde era possível utilizar a

função Getopt, na linguagem Batch não existe nada semelhante e por isso foi necessário criar

uma função para analisar os argumentos introduzidos pelo utilizador e manipulá-los de forma

ao método de utilização ser semelhante ao do script anterior.

A linguagem Batch tem o comando msiexec, que é utilizado para instalar em linha de comandos

ficheiros com a extensão ‘.msi’, tendo sido esta utilizada na maior parte da instalação do

software pedido. Os programas Robot Framework, RIDE e as suas bibliotecas foram instaladas,

assim como no script anterior, através do gestor de pacotes Pip. Para transferir os ficheiros de

31 Wine: aplicação capaz de correr programas Windows em Linux e noutros sistemas operativos compatíveis. [12]

Page 29: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

28

instalação, foi utilizado o comando Bitsadmin, que permite o download de ficheiros dado um

determinado endereço web.

Esta tarefa foi concluída mais rapidamente do que a anterior, isto porque grande parte dos

problemas na automatização da instalação eram comuns em ambos os scripts. Os objetivos do

desenvolvimento deste script eram também os mesmos do anterior, ou seja, perceber as

dificuldades inerentes à automação de tarefas e aumentar os conhecimentos na linguagem de

programação Batch.

4.2 Python Scripting

Na segunda fase do plano de estágio foi dada a tarefa ao estagiário de desenvolver em Python.

No início desta fase, foi-lhe entregue o desafio de recriar o jogo Minesweeper32, de forma a

desenvolver os conhecimentos necessários para posteriormente poder desenvolver scripts de

automação de testes nesta linguagem. Após a conclusão do jogo, o objetivo seria desenvolver

um script de instalação unificado, em Python, que detete qual o sistema operativo e a sua

arquitetura, e instale automaticamente os pacotes de software referidos na Tabela 2.

4.2.1 Desenvolvimento do Jogo Minesweeper

O primeiro desafio ao recriar o jogo Minesweeper foi o de encontrar uma solução para o

utilizador interagir com o jogo e a interface do jogo ser apelativa. O ambiente utilizado para

correr o jogo seria a linha de comandos e por isso os recursos seriam limitados. As mecânicas de

jogo também não seriam tarefa fácil, seria necessário encontrar uma solução para o utilizador

escolher níveis de dificuldade, desbloquear espaços, colocar identificadores de minas e verificar

as pontuações.

A solução encontrada para a interface do jogo foi a criação de um array33 bidimensional, isto

porque a linguagem Python não permite a criação de matrizes, para o tabuleiro do jogo, como

exemplificado na Tabela 3.

32 Minesweeper: jogo de quebra cabeças desenvolvido por Curt Johnson e que foi integrado pela Microsoft nos seus sistemas operativos por Robert Donner. O objetivo do jogo é eliminar todas as minas de um campo de minas. 33 Array: grupo de elementos do mesmo tipo usado em linguagens programação.

Page 30: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

29

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

B ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

C ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

D ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

E ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

F ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

H ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

I ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

J ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

K ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

L ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

M ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

N ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

O ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

P ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Q ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

R ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

S ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

T ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Tabela 3 - Representação do tabuleiro do jogo Minesweeper

O array bi-dimensional criado continha apenas o caractere “?”. As primeiras duas linhas da

tabela anterior são dois arrays separados, adicionados ao jogo para proporcionar ao jogador

ajuda a identificar as colunas através da numeração das mesmas. A primeira coluna do array foi

substituída por letras com o mesmo propósito.

Para a interação do jogador com o jogo, foi introduzida uma função para perguntar ao utilizador

o que este quer fazer, introduzindo as letras ‘M’ para identificar uma mina ou ‘X’ para

desbloquear um espaço.

Para o preenchimento do tabuleiro de jogo com minas, foram usados dois números aleatórios

que ditam a posição onde vão ser colocadas as minas. O preenchimento dos espaços à volta da

mina foi uma das tarefas mais difíceis desta etapa, isto porque implicou a reestruturação da

interface do jogo. A ideia inicial implicaria substituir os caracteres ‘?’ por espaços vazios assim

que o jogador desbloqueasse um espaço, o que acabou por se tornar inviável quando foi

introduzido o número de minas à volta de cada mina. Para solucionar este problema, foram

criados dois tabuleiros de jogo, um mostrado ao jogador, e o outro real, mostrando ao jogador

apenas uma parte do tabuleiro real assim que ia desbloqueando espaços, Tabelas 4 e 5.

Page 31: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

30

00 01 02 03 04 05 06 07 08 09 10

-- -- -- -- -- -- -- -- -- -- --

A 1 * 1 1 1

B 1 1 1 1 *

C 2 2

D 2 *

E 1 2 2 1 2 *

F 2 * * 2 1 2 1

G 3 * 4 2 * 1

H 2 * 2 1 1 1

I 1 1 1 1 1 1

J 1 * 1

Tabela 4 - Tabuleiro de jogo real

00 01 02 03 04 05 06 07 08 09 10

-- -- -- -- -- -- -- -- -- -- --

A ? ? 1 1 ?

B 1 1 1 1 ?

C 2 ?

D 2 ?

E 1 2 2 1 2 ?

F 2 ? ? 2 1 2 ?

G 3 ? ? ? ? ? ?

H 2 ? 2 1 1 ? ?

I 1 1 1 1 ? ?

J 1 ? ?

Tabela 5 - Tabuleiro de jogo mostrado ao jogador

O projeto de recriação do jogo Minesweeper foi uma introdução para adaptação à linguagem de

programação Python de modo a perceber qual a sintaxe e como se comporta esta linguagem

para permitir adquirir os conhecimentos necessários para o desenvolvimento do script

unificado.

Page 32: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

31

4.2.2 Script Unificado

O desafio da criação de um script unificado foi o de combinar os dois scripts anteriores num só

e adicionar a funcionalidade de instalar os pacotes de software em sistemas operativos Mac OS.

O principal objetivo do desenvolvimento do script unificado foi o aprimoramento de

competências de desenvolvimento em linguagem Python. Por este motivo, este script não

poderia ser uma cópia integral dos dois anteriores. O objetivo era usar funções da linguagem

Python que permitem identificar e comunicar com o sistema operativo.

O primeiro desafio desta fase foi identificar qual o sistema operativo em que o script estaria a

correr e para isso foi utilizado o módulo ‘sys’, que contém a função ‘platform’ que retorna o

sistema operativo.

A ideia inicial para processar argumentos seria de utilizar a função Getopt assim como no script

Bash. A pedido do orientador do estagiário na empresa, esta ideia não foi implementada e foi

desenvolvida uma função de raíz para processar argumentos, tentando replicar tanto quanto

possível as funções de Getopt. Para receber os argumentos introduzidos pelo utilizador foi

utilizada a função ‘argv’ presente no módulo ‘sys’. Foi criado um array com o nome de cada

pacote de software para permitir verificar se o que o utilizador introduziu é válido e assim que

sejam validados é criada uma lista dos pacotes a serem instalados.

Também a pedido do orientador do estagiário na empresa, o script unificado deveria ter um

motor de instalação que recebesse argumentos e os processasse todos os passos necessários

para a instalação de cada pacote de software. Com a criação de um motor de instalação é

possível adicionar pacotes de software sem ter que alterar o código base do script,

simplesmente passando argumentos para o motor de instalação para este executar is passos

necessários para a sua instalação. Os processos criados para que fosse possível executar todas

as ações necessárias para instalar qualquer tipo de software foram os seguintes:

Adicionar linhas a ficheiros de texto

Transferir ficheiros e mostrar progresso da transferência

Transferir ficheiros enviando informação para o website

Criar diretórios

Extrair ficheiros com extensão ‘.zip’

Executar comandos em linha de comandos

Para cada um destes processos foi criada uma função, sendo que o método de utilização do

motor de instalação é processar os argumentos passados por cada pacote de instalação,

determinar consoante esses argumentos quais as ações necessárias para que o software seja

instalado corretamente e executar as ações na ordem correta. A construção do motor de

instalação foi uma das tarefas mais difíceis e demorosas no desenvolvimento do script unificado.

Outra das dificuldades no desenvolvimento do script unificado foi a automação da instalação no

sistema operativo Mac OS. Estas dificuldades deveram-se ao desconhecimento do sistema

operativo e do seu funcionamento, por parte do estagiário. Devido a estes problemas, foi

necessário aprender o comportamento do sistema operativo e instalar os pacotes de software

manualmente primeiro, para tentar automatizar o processo mais tarde.

Para a verificação das últimas versões, foram tentadas duas alternativas, nomeadamente:

verificar se o software tem algum comando para instalar a última versão aquando da sua

Page 33: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

32

instalação, e verificar se o software existe em algum dos gestores de pacotes instalados.

Nenhuma destas soluções se provou viável, por isso a solução adotada foi a de ler a página web

como texto, verificar qual a linha da página que contém a última versão, guardar essa linha numa

string34 e manipulá-la de modo a guardar apenas a versão.

O desenvolvimento do script unificado foi uma tarefa árdua e bastante demorosa, mas que se

provou bastante útil para o projeto, de modo a facilitar a instalação em novas máquinas do

software necessário para trabalhar e também útil para o estagiário desenvolver as capacidades

de programação em linguagem Python e perceber os problemas inerentes à automação de

tarefas.

4.3 Automação de Testes

O desenvolvimento dos scripts explicados nos pontos anteriores tinha como objetivo preparar

o estagiário para a principal fase do estágio: a automação de testes. Para isso, era necessário

compreender os problemas da execução sequencial de tarefas e ter conhecimento de

programação em linguagem Python.

No início desta nova fase, foi dada a tarefa ao estagiário de correr testes em Robot Framework,

utilizando o ambiente RIDE e a biblioteca Selenium2Library na página web dos CTT35. O objetivo

desta tarefa foi preparar o estagiário para integrar uma equipa de trabalho num projeto da

empresa acolhedora.

Foram usadas keywords da biblioteca Selenium2Library36, para o estagiário perceber como são

utilizadas em Robot Framework. Estas keywords são a base para automação de testes, embora

por vezes não se tornam estáveis, ou seja, existem casos em que o mesmo teste passa ou falha,

dependendo de fatores que não podem ser controlados pelo tester, como a velocidade da

Internet ou a velocidade do computador que está a executar os testes. Para colmatar estas

possíveis falhas é possível criar keywords que juntam duas ou mais da biblioteca

Selenium2Library, chamadas keywords de baixo nível. Por exemplo, se um dos passos do teste

envolver carregar no botão, é possível criar uma keyword que vai esperar até que o botão esteja

visível dado um determinado timeout37, evitando assim que uma ligação lenta ou uma máquina

menos rápida não veja elementos da página que seriam suposto estarem visíveis.

No ambiente de desenvolvimento de Robot Framework é possível definir variáveis, sendo

possível criar três tipos: escalares, listas e dicionários. A criação de variáveis é bastante útil para

o utilizador, permitindo vários testes utilizarem variáveis comuns e se houver necessidade de

alterar, não ser necessário alterar todos os testes que utilizavam o mesmo comando, apenas

sendo necessário alterar a variável em questão.

Após a concluída a introdução à automação em Robot Framework, o estagiário foi inserido num

projeto que consiste na automação de testes em Robot Framework para uma plataforma de

software de sistemas de condução avançadas para veículos. Por questões de confidencialidade,

34 String: conjunto de caracteres. 35 CTT: Correios e Telecomunicações de Portugal. 36 Keywords Selenium2Library: http://robotframework.org/Selenium2Library/Selenium2Library.html. 37 Timeout: tempo até que determinada tarefa expire.

Page 34: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

33

não serão referidos o nome do cliente nem do projeto, bem como nenhuma informação escrita

ou visual de algo que possa conter informação comercial. Também devido à necessidade de

aprovação do cliente, o trabalho desenvolvido pelo estagiário não era submetido pelo mesmo,

sendo este revisto por um membro ativo do projeto e submetido com o nome do mesmo.

Este projeto estava numa fase inicial e as principais tarefas nesta fase foram a criação de

keywords e a implementação dos primeiros testes.

A primeira tarefa pedida ao estagiário, para que este se familiarizasse com a aplicação, foi a

identificação de bugs38 explorando a aplicação manualmente. Aquando da identificação de bugs,

era pedido que fizesse um ticket39 para reportar o bug detalhadamente. O ticket deve conter os

seguintes campos:

Título no qual seja possível saber de forma concreta qual o tipo de problema;

Identificador único para cada ticket, para que seja possível identificar claramente qual o

bug em causa;

Breve descrição, e se necessário uma descrição mais detalhada sobre o problema em

causa;

Tipo de severidade40;

Periodicidade com que ocorre o bug, ou seja, se este ocorre sempre ou apenas em

alguns casos específicos;

Steps41 necessários para reproduzir o problema;

Notas relativas ao bug se forem necessárias;

Screenshots42 do problema em questão, identificando as áreas onde ocorre o defeito na

imagem.

Para a gestão de tickets, em termos deste projeto, foi utilizada a plataforma Jira43, a qual o

estagiário não tinha acesso por não ser oficialmente parte integrante do projeto. Para contornar

esta situação, os bugs encontrados pelo estagiário eram reportados por e-mail e inseridos na

plataforma por um membro ativo da equipa no projeto.

Após a familiarização com a aplicação a ser testada, foi dada ao estagiário a tarefa de

automatizar testes para a mesma em Robot Framework utilizando a sua plataforma de

desenvolvimento RIDE.

A equipa integrante do projeto é constituída por três membros e o estagiário nas instalações do

Fundão, e dez membros nas instalações do Porto. A coordenação entre a equipa não é tarefa

fácil e para que não houvesse trabalho a ser feito em paralelo era agendada todos os dias ao

início da manhã uma reunião através de videoconferência, onde eram definidas as tarefas de

cada membro do projeto para o dia. Para que houvesse controlo sobre o que era feito, porque

38 Bug: erro ou defeito (defect) na aplicação criado por falha na programação da mesma. [17] 39 Ticket: processo de gestão e acompanhamento de uma determinada ocorrência. 40 Severidade (Severity): impacto que um bug tem no software. A severidade pode ser dos seguintes tipos: Major, o bug afeta funcionalidades vitais para o sistema correr; Moderate, onde não afeta funcionalidades vitais mas faz com que o sistema produza resultados incorretos; Minor, defeito que não causa terminação do sistema nem problemas na sua usabilidade; Cosmetic, defeito relacionado apenas com o visual da aplicação. [16] 41 Steps: passos. 42 Screenshot: Captura de ecrã. 43 Jira: plataforma de gestão de tickets desenvolvida pela empresa Atlassian. [15]

Page 35: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

34

o trabalho desenvolvido por alguns membros, nomeadamente a criação de keywords, era

necessário para os membros que estavam a desenvolver os casos de teste, foi utilizada a

plataforma TortoiseSVN44. Através dela, cada membro do projeto insere as alterações efetuadas

ao mesmo e pode atualizar as alterações feitas por outros membros assim que sejam publicadas.

Devido à participação não oficial no projeto em causa, as tarefas dadas ao estagiário eram a de

automação de casos de teste atribuídos a outros membros da equipa, os quais eram aprovados

pelo membro responsável e apenas submetidos após a sua aprovação. Esta elaboração envolvia

o desenvolvimento de testes através da criação de keywords e da utilização das mesmas nos

testes. A automação de testes para a aplicação referida estava feita da seguinte forma:

Foi criado um ficheiro Python que contém os xpaths45 de todos os elementos da

aplicação, usado por todos os membros mas apenas um tinha autorização para o alterar

ou adicionar conteúdo;

Foi criada uma pasta que contém keywords de low level e keywords genéricas, ambas

com o intuito de poderem ser utilizadas em todos os casos de teste;

Foram criadas pastas para cada tipo de caso de teste, ou seja, para cada teste

correspondente a uma determinada funcionalidade da aplicação era criada uma pasta,

sendo assim mais fácil de encontrar um teste e conferindo uma melhor organização;

Cada tipo de caso de teste contém keywords aplicáveis apenas àquela pasta e, se

necessário uma keyword para o setup46 de determinado tipo de casos de teste. Por

exemplo, se dois ou mais casos de teste necessitarem a criação de um determinado

utilizador, em vez de criar o utilizador em cada caso de teste, uma keyword de setup que

é executada antes dos testes em questão correrem, evitando assim a necessidade de

repetir passos obrigatórios em cada caso de teste.

Nos casos de teste dados ao estagiário, este apenas teria permissão para alterar o último ponto

referido anteriormente, ou seja, apenas teria permissão para criar keywords relativas ao tipo de

caso de teste em questão e executar os testes baseando-se nas mesmas.

Na tabela 6 é possível ver uma comparação entre o trabalho feito pelo estagiário em relação ao

total da equipa no projeto em causa.

44 TortoiseSVN: plataforma open-source de controlo de versões. [18] 45 Xpath: caminho de um ou vários nós em documentos do tipo XML. [34] 46 Setup: configuração.

Casos de Teste Keywords

Em progresso Implementados Em progresso Implementadas

Estagiário - 12 - 11

Total 111 78 - 129

Tabela 6 - Estatísticas de Test Cases e keywords na aplicação

Page 36: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

35

4.4 Tempo despendido em cada etapa

Neste ponto é feita uma comparação do tempo despendido em cada etapa, todas elas

enunciadas e explicadas anteriormente, em relação à duração total do período de estágio

profissional, tabela 7.

Tabela 7 - Gráfico referente ao tempo despendido em cada etapa do estágio

Bash Script, 108, 14%

Batch Script, 56, 8%

Desenvolvimento do jogo Minesweeper,

48, 6%

Script Unificado, 172, 23%

Automação de Testes, 366, 49%

Tempo Total: 750 horas

Page 37: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

36

5. Conclusão

Este estágio permitiu-me evoluir numa área na qual não tinha grandes conhecimentos, a

automação de testes, nomeadamente a nível de desenho de casos de testes e automação dos

mesmos. Os conhecimentos teóricos adquiridos durante o decorrer do curso foram postos em

prática e foram adquiridos conhecimentos necessários para a adaptação ao projeto no qual fui

inserido.

O projeto no qual fui inserido contribuiu bastante para a minha evolução a nível de automação

de testes, uma área que era desconhecida para mim, mas com a ajuda dos colegas de trabalho

e do orientador de estágio na empresa, permitiu-me adquirir conhecimentos nesta nova área e

evoluir na mesma, ao nível de ser possível ajudar a equipa no projeto atual e merecer a confiança

da empresa para a continuidade na mesma.

O principal aspeto a evoluir na minha formação é a automação de testes para dispositivos

móveis, porque apenas tive um contato superficial com esta área e não foi possível durante o

estágio curricular, devido às necessidades do projeto atual, adquirir um conhecimento mais

profundo nesta área.

Como balanço final, posso afirmar que este estágio foi uma fase fundamental na formação e

permitiu-me melhorar, tanto a nível pessoal como profissional, tendo a oportunidade de

trabalhar numa das melhores empresas a nível de tecnologias de informação.

Page 38: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

37

Referências

[1] Altran Group, “Página ofical Altran Group,” [Online]. Available: http://www.altran.com/.

[Acedido em Abril 2017].

[2] Altran Portugal, “Página Oficial Altran Portugal,” [Online]. Available:

http://www.altran.pt/. [Acedido em Abril 2017].

[3] Altran Portugal, “Quem Somos,” Altran, [Online]. Available: http://www.altran.pt/sobre-

nos/altran-portugal/quem-somos.html. [Acedido em abril 2017].

[4] Jornal de Negócios, “Altran vai duplicar postos de trabalho no Fundão,” 03 junho 2016.

[Online]. Available:

http://www.jornaldenegocios.pt/empresas/detalhe/altran_vai_duplicar_postos_de_tra

balho_no_fundao. [Acedido em abril 2017].

[5] Altran Portugal, “Altran promove 2ª Edição do “Ignite Your Future”,” [Online]. Available:

https://www.altran.pt/noticias/em-portugal/noticias/altran-promove-2a-edicao-do-

ignite-your-future.html. [Acedido em abril 2017].

[6] Selenium, “Selenium,” [Online]. Available: http://www.seleniumhq.org/. [Acedido em

Abril 2017].

[7] Docker, “What is Docker,” [Online]. Available: https://www.docker.com/what-docker.

[Acedido em Abril 2017].

[8] Jenkins, “Jenkins Documentation,” [Online]. Available: https://jenkins.io/doc/. [Acedido

em Abril 2017].

[9] Git, “About Git,” [Online]. Available: https://git-scm.com/about. [Acedido em Abril

2017].

[10] Business Dictionary, “BusinessDictionary,” [Online]. Available:

http://www.businessdictionary.com/definition/software-tester.html. [Acedido em Abril

2017].

[11] GNU Operating System, “Parsing program options using getopt,” [Online]. Available:

https://www.gnu.org/software/libc/manual/html_node/Getopt.html. [Acedido em Abril

2017].

[12] Wine HQ, “Wine HQ,” [Online]. Available: https://www.winehq.org/. [Acedido em Abril

2017].

Page 39: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

38

[13] Agile Alliance, “What is Acceptance Testing?,” [Online]. Available:

https://www.agilealliance.org/glossary/acceptance. [Acedido em Abril 2017].

[14] Agile Alliance, “Acceptance Test Driven Development (ATDD),” [Online]. Available:

https://www.agilealliance.org/glossary/atdd. [Acedido em Abril 2017].

[15] Atlassian, “Jira,” [Online]. Available: https://www.atlassian.com/software/jira. [Acedido

em Junho 2017].

[16] ISTQB Exam Certification, “What is the Difference Between Severity and Priority,”

[Online]. Available: http://istqbexamcertification.com/what-is-the-difference-between-

severity-and-priority/. [Acedido em Junho 2017].

[17] ISTQB Exam Certification, “What is Defect or Bugs or Faults in Software Testing,” [Online].

Available: http://istqbexamcertification.com/what-is-defect-or-bugs-or-faults-in-

software-testing/. [Acedido em Junho 2017].

[18] TortoiseSVN, “About TortoiseSVN,” [Online]. Available:

https://tortoisesvn.net/about.html. [Acedido em Junho 2017].

[19] Python, “About Python,” [Online]. Available: https://www.python.org/about/. [Acedido

em Abril 2017].

[20] WxPython, “What is wxPython,” [Online]. Available: https://wxpython.org/what.php.

[Acedido em Abril 2017].

[21] Python PIP, “PIP,” [Online]. Available: https://pypi.python.org/pypi/pip. [Acedido em

Abril 2017].

[22] Oracle, “What is Java and Why do I Need It,” [Online]. Available:

https://www.java.com/en/download/faq/whatis_java.xml. [Acedido em Abril 2017].

[23] Oracle, “What is Java Web Start and How is it Launched?,” [Online]. Available:

https://www.java.com/en/download/faq/java_webstart.xml. [Acedido em Abril 2017].

[24] Node.js, “About Node.js,” [Online]. Available: https://nodejs.org/en/about/. [Acedido

em Abril 2017].

[25] npm, Inc, “About Npm,” [Online]. Available: https://www.npmjs.com/about. [Acedido

em Abril 2017].

[26] T. Aalto, “Git Hub Selenium2Library Page,” [Online]. Available:

https://github.com/robotframework/Selenium2Library. [Acedido em Abril 2017].

Page 40: daGuarda - bdigital.ipg.ptbdigital.ipg.pt/dspace/bitstream/10314/4229/1/João... · construção de testes; acabando na automação de testes com recurso ao software Robot Framework,

Instituto Politécnico da Guarda Relatório de Estágio de João Daniel Augusto Gomes

39

[27] S. Bolsu, “Git Hub Appium Library Page,” [Online]. Available:

https://github.com/serhatbolsu/robotframework-appiumlibrary. [Acedido em Abril

2017].

[28] Eficode, “Git Hub ImageHorizonLibrary Page,” [Online]. Available:

https://github.com/Eficode/robotframework-imagehorizonlibrary. [Acedido em Abril

2017].

[29] Selenium, “Selenium WebDriver,” [Online]. Available:

http://www.seleniumhq.org/projects/webdriver/. [Acedido em Abril 2017].

[30] Mozilla, “Git Hub Mozilla Gecko Driver Page,” [Online]. Available:

https://github.com/mozilla/geckodriver. [Acedido em Abril 2017].

[31] Chromium Org, “ChromeDriver - Web Driver for Chrome,” [Online]. Available:

https://sites.google.com/a/chromium.org/chromedriver/. [Acedido em Abril 2017].

[32] GNU, “GNU Bash,” [Online]. Available: https://www.gnu.org/software/bash/. [Acedido

em Março 2017].

[33] Microsoft, “Using Batch Files,” [Online]. Available: https://technet.microsoft.com/en-

us/library/bb490869.aspx. [Acedido em Março 2017].

[34] W3 Schools, “Xpath Tutorial,” [Online]. Available:

https://www.w3schools.com/xml/xpath_intro.asp. [Acedido em Junho 2017].

[35] Priberam, “Definição de Software,” [Online]. Available:

https://www.priberam.pt/dlpo/software. [Acedido em Março 2017].

[36] ISTQB Exam Certification, “What is Regression Testing in Software,” [Online]. Available:

http://istqbexamcertification.com/what-is-regression-testing-in-software/. [Acedido em

Março 2017].

[37] Priberam, “Definição de Script,” [Online]. Available:

https://www.priberam.pt/dlpo/script. [Acedido em Março 2017].

[38] Diário da República - 2.ª Série, “Regulamento n.º 337/2014,” Regulamento dos Cursos

Técnicos Superiores Profissionais do IPG, pp. 19685-19688, 31 Julho 2014.