• Nenhum resultado encontrado

Biblioteca Digital do IPG: Relatório de Estágio - Altran – Global Delivery Centre (Fundão)

N/A
N/A
Protected

Academic year: 2021

Share "Biblioteca Digital do IPG: Relatório de Estágio - Altran – Global Delivery Centre (Fundão)"

Copied!
40
0
0

Texto

(1)

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

(2)

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

(3)

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: joaogomes87@gmail.com

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: estg-geral@ipg.pt 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: info.pt@altran.com

Orientadores:

Natália Fernandes Gomes – Instituto Politécnico da Guarda Bruno Calado – Altran Fundão

(4)

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.

(5)

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.

(6)

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.

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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]

(13)

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.

(14)

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

(15)

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

(16)

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]

(17)

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.

(18)

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]

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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.

(25)

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çãpreparando-o dpreparando-o mesmpreparando-o e ajudandpreparando-o preparando-o prpreparando-ojetpreparando-o apreparando-o autpreparando-omatizar 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.

(26)

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]

(27)

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]

(28)

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]

(29)

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.

(30)

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.

(31)

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.

(32)

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

(33)

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.

(34)

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ã.

(35)

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

(36)

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%

(37)

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.

(38)

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].

(39)

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].

(40)

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

Referências

Documentos relacionados

- Edafologia ou pedologia: ciˆencia que estuda os solos; - Fatores abi´oticos: todos os componentes f´ısicos de um sistema, que podem incidir sobre suas comunidades; - Fatores,

Com relação às fontes de N, a inoculação via semente ou via sulco com a estirpe CIAT 899 T apresentou valores de TNG e ANG semelhantes ao do tratamento sem

A informação relacionada com as formas modais e os seus nodos, po- de ser utilizada como guia na colocação dos acelerômetros (ê na- tural não escolher pontos

(1986) obtiveram, em um sistema de drenagem espaçado em 30 m e com uma profundidade de 1,5 m, Implantado em um latossolo do Perímetro Irrigado de Bebedouro, uma carga

De acordo com COLOMER (2013) essa estratégia é resultado da necessidade de expansão da infraestrutura de escoamento que, dada a distância da costa e a profundidade

Há a necessidade do emprego de outros métodos ou técnicas complementares para o desenvolvimento de uma avaliação global da alternativa (Fogliatti et al., 2004,

Para estudar quantitativamente o controle biol´ogico como t´ecnica de conserva¸c˜ao, desenvolvemos um modelo matem´atico para descrever a intera¸c˜ao entre bact´erias l´acticas

Este estudo é um recorte do projeto de pesquisa e intervenção: “Problematizando a doação de sangue a partir da necessidade dos usuários do Serviço de Hemato-Oncologia do