Titulo Estágio
System Testing using Docker
Áreas de especialidade
Engenharia de Software
Sistemas de Informação
Local do Estágio
Coimbra
Enquadramento
A Feedzai é uma empresa especializada no uso de técnicas avançadas de machine learning e big data para
detecção e prevenção de fraude em comércio electrónico. Tendo sido fundada em 2009 como um spin-off da Universidade de Coimbra, conta hoje com mais de 120 colaboradores e clientes nos Estados Unidos, Europa, África e Ásia. Diariamente a Feedzai processa transações no valor de 2 mil milhões de euros nos vários clientes que usam a sua plataforma.
A plataforma da Feedzai é um sistema distribuido que envolve vários componentes de suporte como Zookeeper, RabbitMQ, Cassandra, Spark, Hadoop/YARN assim como os próprios componentes desenvolvidos internamente que também são distribuidos.
Um dos principais desafios do processo de desenvolvimento e qualidade em plataformas distribuídas é o suporte para desenvolvimento de testes de forma ágil e rápida que consigam garantir representatividade destes ambientes complexos e suportar não só testes funcionais da plataforma assim como testes não funcionais (i.e. tolerância a falhas e performance).
A Feedzai desenvolveu um protótipo de uma framework de testes de sistema que usa Docker e integra a capacidade de escrever um teste de sistema da mesma forma que um teste unitário é escrito (usando Junit) de forma simples e eficaz por qualquer engenheiro que está a desenvolver.
Objetivo
O principal objectivo deste estágio é abstrair o protótipo da framework de testes numa ferramenta open source que seja usada para desenvolver testes de sistema para aplicações distribuidas tirando partido da familia de tecnologias Docker (https://www.docker.com/) de forma escalável num cluster de integração contínua.
A ferramenta deverá ser modularizada de forma a que não só seja possível usar os produtos da Feedzai, mas qualquer componente de software implementando o módulo especifico para esse componente. A ferramenta deverá garantir várias funcionalidades nomeadamente:
• Workflow de setup, configuração e fim do ambiente de testes
• Isolamento de casos de teste
• Recolha de resultados e evidências de problemas (i.e. monitorização e logging)
• Integração com plataformas de integração contínua (i.e. Jenkins)
• Paralelização de testes em cluster (e.g. tirando partido de ferramentas como Kubernetes ou Docker Swarm)
Com uma ferramenta que forneça este tipo de funcionalidades, a Feedzai pode crescer as suas equipas de desenvolvimento mantendo o seu processo de qualidade exigente e ao mesmo tempo ágil escalando a execução de testes horizontalmente.
Uma parte integrante do estágio será desenvolver também os módulos específicos para componentes proprietários da Feedzai (não open-source) e a integração da ferramenta no processo de integração contínua da Feedzai.
Em termos tecnológicos, a ferramenta deve ser implementada em Java. Serão valorizados conhecimentos de Docker, Maven, Junit.
Plano de Trabalhos - Semestre 1
Objectivos:
Durante este semestre existem dois objectivos principais:
• Integrar o estagiário no funcionamento da actual framework de testes de sistema.
• Identificação de requisitos e definição de arquitectura da ferramenta.
• Prototipagem da API da ferramenta.
Abordagem:
Desenvolvimento de testes de sistema para ferramentas distribuídas é um tópico avançado na área de qualidade de software. Para garantir o sucesso do projecto é importante garantir que o estagiário percebe o tipo de testes e problemas inerentes a estruturas distribuidas. Para isto será pedido ao estagiário que analise o código fonte da ferramenta actual assim como planos de teste e sua implementação relacionadas com o produto core da Feedzai, por outro lado será necessário adquirir competências na área de Docker para garantir que a arquitectura desenhada tire partido das capacidades desta ferramenta.
Será adoptada uma abordagem iterativa de desenvolvimento, baseada em Scrum, em que em cada ciclo de desenvolvimento (duas a três semanas) serão definidas experiências ou funcionalidades a implementar, assim como procedimentos de avaliação. Existirão reuniões semanais de acompanhamento do trabalho.
Atividades a desenvolver durante o semestre:
• Integração na empresa e familiarização com o produto Pulse.
• Familiarização e estudo detalhado do ecossistema de ferramentas Docker.
• Estudo detalhado do módulo system-tests-framework e do seu funcionamento.
• Identificação dos principais problemas da ferramenta actual e definição de requisitos para a nova ferramenta.
• Definição de arquitectura da nova ferramenta.
• Prototipagem da API de utilização e extensão da ferramenta.
• Escrita do relatório intermédio de estágio.
Plano de Trabalhos - Semestre 2
Objectivo:
O principal objectivo deste semestre é implementar a ferramenta e integra-la com o processo de integração contínua da Feedzai.
Abordagem:
Será adoptada uma abordagem iterativa de desenvolvimento, baseada em Scrum, em que em cada ciclo de desenvolvimento (duas a três semanas) serão definidas experiências ou funcionalidades a implementar, assim como procedimentos de avaliação. Existirão reuniões semanais de acompanhamento do trabalho.
Atividades a desenvolver durante o semestre:
• Implementação da ferramenta core de testes de sistema
• Implementação de módulos especificos dos componentes proprietários da Feedzai
• Avaliação e optimização de performance da ferramente nos ambientes da Feedzai
• Escrita do relatório de estágio
Condições
Estágio Remunerado
Observações
É possível encontrar mais informação sobre o produto e a empresa no seguinte link:
http://www.feedzai.com
Orientador
Ricardo Ferreira
ricardo.ferreira@feedzai.com 📩