Post on 28-Jun-2020
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
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
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: 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
Período de Estágio: 6 de março a 19 de julho de 2017
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.
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
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
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
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
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
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
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
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]
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.
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
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
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]
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.
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]
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
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
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
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
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
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.
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.
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]
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]
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]
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.
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.
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.
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
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.
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]
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
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
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.
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].
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].
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.