• Nenhum resultado encontrado

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

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.

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

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

35

Documentos relacionados