Skip to content
Lauriana Paludo edited this page Nov 22, 2024 · 20 revisions

Bem Vindos ao Projeto de Extensão Implementação de Praticas DevOps: uma jornada com o Projeto Fênix!

A aplicação escolhida para ser objeto deste estudo é uma ferramenta em PHP de controle de atrasos e liberações antecipadas de estudantes, em desenvolvimento como trabalho de conclusão de curso do ensino médio integrado em informática do IFPR Pinhais, pelos alunos Lucas Garzuze Cordeiro, Pietro F. A. Sotile e Victor Marcharete, no ano de 2024.

Este estudo demonstra como automatizar o pipeline de CI/CD utilizando o Azure DevOps, integrando testes automatizados de interface com o objetivo de garantir a qualidade da aplicação web desenvolvida em PHP. O repositório do código esta no GitHub SEPAIS: ferramenta de comunicação escolar abrangente.

Link de vídeos com funcionalidades do SEPAIS: https://drive.google.com/drive/folders/1pZipr55sAaw8MP0AVl1L6Y1mdCBWfYNQ

Áreas ou disciplinas envolvidas:

  1. Gestão de TI: Gerenciamento dos recursos e processos de TI para garantir a entrega eficiente do projeto.
  2. Testes de Software: Implementação de testes automatizados de interface para verificar a usabilidade e funcionalidade da aplicação.
  3. Infraestrutura e Automação (DevOps): Implementação do pipeline CI/CD no Azure DevOps e configuração de ambientes de deploy automatizados.
  4. Segurança da Informação (DevSecOps): Garantir a segurança do ciclo de vida do desenvolvimento.
  5. Governança de TI: Alinhamento do projeto com as boas práticas de governança e conformidade.

Fases do Projeto:

  1. Planejamento:(Todos)

    • Estudar as funcionalidades da aplicação, como: registro e monitoramento de atrasos e liberações antecipadas dos estudantes; interface de visualização de relatórios; acesso restrito por perfis de usuários (admin, responsáveis, alunos).
    • Definir as ferramentas e frameworks de testes de interface a serem utilizados.
  2. Desenvolvimento da aplicação PHP: (Aline/Lucas)

    • Adicionar testes unitários e de integração para garantir que os módulos do sistema estejam funcionando corretamente.
    • Garantir a integração contínua (CI) para executar testes de unidade automaticamente.
  3. Automatização de Testes de Interface: (Pablo)

    • Utilizar a ferramenta Selenium para criar testes automatizados de interface (UI).
    • Definir cenários de teste para verificar o funcionamento correto da interface (ex: login, registro de atrasos, visualização de relatórios, etc.).
    • Integrar os testes automatizados no pipeline CI/CD do Azure DevOps.
    • Configurar pipelines para que os testes de interface sejam executados automaticamente após cada build ou integração de código no repositório GitHub.
    • Criar testes funcionais e de usabilidade que simulam interações dos usuários, como a navegação pelos menus e o preenchimento de formulários.
  4. Configuração do Pipeline CI/CD no Azure DevOps: (Duda/Luis)

    • Configurar pipelines para execução de builds automáticos da aplicação PHP.
    • Executar testes de unidade e integração a cada commit no GitHub.
    • Configurar o Azure DevOps para executar testes automatizados de interface.
    • Automatizar o deploy da aplicação PHP em ambientes de desenvolvimento, teste e produção.
  5. Segurança e DevSecOps: (Kaique/Marcelo)

    • Implementar varreduras automáticas de segurança no código e nas dependências da aplicação (ex: SonarQube).
    • Analisar vulnerabilidades em bibliotecas e componentes usados pela aplicação.
  6. Monitoramento e Logs: (Kaique/Marcelo)

    • Monitorar o funcionamento da aplicação com o Azure Monitor e gerar relatórios de desempenho.
    • Implementar logs centralizados para rastreamento de falhas e auditoria de segurança.
  7. Governança e Gestão de Projetos: (Kaique/Marcelo)

    • Gerenciar o projeto usando Kanban no Azure DevOps para organizar tarefas, sprints e releases.
    • Garantir conformidade com padrões de segurança e governança, como proteção de dados (GDPR ou LGPD, se aplicável)
  8. Documentação e Treinamento:(Todos)

    • Documentar os cenários de testes automatizados de interface e os resultados gerados nos pipelines.
    • Oferecer treinamentos para a equipe de desenvolvimento e stakeholders sobre a automação de testes de interface e o uso do pipeline CI/CD.

Tecnologias e Ferramentas Utilizadas:

  1. Azure DevOps: Para gerenciamento do projeto, CI/CD e execução dos testes automatizados.
  2. GitHub: Como repositório do código-fonte.
  3. PHP: Desenvolvimento da aplicação web e testes unitários.
  4. Selenium: Ferramenta para testes automatizados de interface.
  5. Docker (opcional): Para padronizar o ambiente de execução da aplicação e facilitar o deploy.
  6. SonarQube: Para análise de qualidade e segurança do código.
  7. Azure App Service: Hospedagem da aplicação PHP no Azure.

Produtos Finais:

  • Pipeline CI/CD no Azure DevOps, incluindo execução automatizada de testes unitários, de integração e de interface.
  • Relatórios de teste detalhados no Azure DevOps.
  • Sistema monitorado e com logs centralizados para auditoria e análise de desempenho.

Critérios de Avaliação:

  • Cobertura de testes automatizados (unitários, de integração e de interface).
  • Performance e usabilidade da interface, garantindo que o sistema seja intuitivo para os usuários.
  • Conformidade com padrões de segurança e práticas de DevSecOps.
  • Eficiência do pipeline CI/CD com testes automatizados executados sem falhas.

A incorporação de testes automatizados de interface não apenas garante a qualidade da experiência do usuário, mas também traz mais robustez ao processo de entrega contínua, reduzindo o risco de problemas visuais e de usabilidade na aplicação final.