Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Wiki Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 52
    • Issues 52
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • CP - Planta
  • WikiWiki
  • Wiki
  • qualidade

Last edited by ESKieroff Oct 19, 2024
Page history
This is an old version of this page. You can view the most recent version or browse the history.

qualidade

Home Escopo Processo Design/Mockups Gerência Estudos Arquitetura Contratos BD Qualidade Configuração Instalação Instruções Utilização Analytics Infraestrutura

Qualidade de Software

Descrição

Nesta seção, detalhamos as metodologias e procedimentos adotados para garantir a qualidade do software, juntamente com o uso de design patterns e ferramentas para manter a consistência e a confiabilidade do código. Nossa abordagem visa não apenas evitar erros, mas também assegurar que o código seja escalável, manutenível e aderente aos princípios de boas práticas de desenvolvimento.

Sumário

  • Índices de Qualidade
  • Testes
  • Padronização de Código
  • Fluxo Gitlab
  • Commit
  • Merge
  • UX/UI
  • Documentação
  • Persistência de Dados

Índices de Qualidade

  • Jest: Ferramenta de testes unitários.
  • Eslint: Ferramenta para análise sintática.
  • Prettier: Ferramenta para formatação de código e padronização de estilo.

Utilizamos essas ferramentas para manter a qualidade do código e garantir que ele atenda às especificações de funcionalidade e estilo. O Jest valida o comportamento correto dos módulos individuais através de testes unitários. O Eslint ajuda a detectar erros de sintaxe e práticas de código incorretas, enquanto o Prettier formata automaticamente o código para manter a consistência e legibilidade.

Benefícios

  • Jest: Reduz a probabilidade de introdução de bugs ao garantir que as funções se comportam conforme o esperado.
  • Eslint: Aumenta a qualidade geral do código, detectando padrões que podem levar a erros ou diminuir a legibilidade.
  • Prettier: Garante que o código siga um padrão visual consistente, tornando-o mais fácil de ler e manter.

Testes

  • Jest: Testes unitários.
  • Insomnia/Postman: Testes de integração.

Implementamos dois níveis de testes:

  1. Testes Unitários: Validam a funcionalidade isolada de cada componente, sendo desenvolvidos pelo autor da funcionalidade.
  2. Testes de Integração: Simulam o uso do sistema como um todo, testando a integração dos componentes. São realizados por um colega desenvolvedor utilizando ferramentas como Insomnia ou Postman para testar a API.

Benefícios

  • A combinação de testes unitários e de integração permite detectar erros tanto no nível de implementação quanto no nível de interação entre diferentes módulos, garantindo uma maior robustez e confiabilidade do sistema.

Padronização de Código

  • Prettier: Automatiza a formatação de código para garantir consistência em toda a base de código.
  • Husky: Configurado para executar hooks Git que validam o código antes do commit.

Nosso fluxo de padronização de código segue dois momentos principais:

  1. Pré-commit (localmente): Husky, em conjunto com Eslint e Prettier, valida e formata o código antes que ele seja enviado para o repositório.
  2. No GitLab (após o push): O código é novamente validado no CI/CD para garantir que esteja de acordo com os padrões estabelecidos.

Benefícios

  • Automatizar a padronização e verificação de código minimiza o retrabalho, elimina inconsistências e garante que o código enviado para produção esteja sempre em conformidade com as regras definidas.

Fluxo Gitlab

  • Husky: Executa verificações automáticas de qualidade no ciclo de commits.
  • Lint-Staged: Verifica apenas os arquivos modificados, otimizando o processo de validação.
  • Conventional Commits: Padroniza mensagens de commit para facilitar o rastreamento de alterações.

GitFlow

Utilizamos o GitFlow para organizar o desenvolvimento, onde cada nova tarefa ou funcionalidade é desenvolvida em uma branch separada e, ao finalizar, enviada para a branch develop através de um Merge Request (MR).

Procedimento

  1. Crie uma nova branch a partir da develop com o formato "US00T00-TaskName", por exemplo:

    • US24T03-CreateStudent
  2. Use mensagens de commit descritivas e no imperativo. Exemplo:

    • feat: added registration form

    Evite mensagens genéricas como:

    • Corrige service

    Um exemplo mais claro seria:

    • fix: corrects error message in getAll method of userService
  3. Após concluir o desenvolvimento, crie um MR para a branch develop. O merge só será permitido se todos os testes e verificações de sintaxe forem bem-sucedidos.

Benefícios

  • Esse fluxo mantém o histórico de desenvolvimento limpo e organizado, facilitando o rastreamento de mudanças e a resolução de conflitos, além de garantir que apenas código testado e validado seja integrado à base de código principal.

Commit

Conventional Commits

Adotamos o padrão Conventional Commits para nomear as mensagens de commit. Esse padrão descreve as mudanças de forma clara e padronizada, facilitando o entendimento e o rastreamento do histórico de mudanças.

Benefícios

  • Com commits padronizados, o histórico de mudanças fica mais legível e estruturado, o que auxilia no gerenciamento de versões, automatizações e na compreensão do que foi alterado.

Merge

  • GitFlow e Conventional Commits: Para realizar o merge, o código deve passar pelos testes unitários e de integração, bem como pela validação de sintaxe.

Apenas usuários com a permissão de "maintainer" podem realizar merges nas branches develop e main.

Observação: Consulte a seção Merge Request no menu Processo para mais detalhes sobre o processo.

Benefícios

  • Este processo rigoroso de merges garante que o código enviado para as branches principais já tenha sido amplamente validado, evitando problemas em produção.

Merge Request (MR)

  • Crie uma nova MR a partir da sua branch com o formato "US00T00-TaskName", por exemplo:
    • US24T03-CreateStudent

UX/UI

Para garantir uma experiência de usuário satisfatória, seguimos práticas de design que buscam a simplicidade, usabilidade e acessibilidade. O objetivo é garantir que as interfaces sejam intuitivas e eficientes, proporcionando uma experiência agradável ao usuário.

Documentação

Swagger API

Utilizamos Swagger para documentar nossa API, fornecendo uma interface clara e interativa para visualizar e testar os endpoints disponíveis. Isso facilita a comunicação entre desenvolvedores e stakeholders, e melhora a eficiência no desenvolvimento de integrações.

Benefícios

  • A documentação com Swagger permite que tanto desenvolvedores quanto outros membros da equipe visualizem e interajam com a API de forma clara e eficiente.

Persistência de Dados

PostgreSQL

Utilizamos PostgreSQL como banco de dados relacional para garantir integridade e eficiência na manipulação de dados.

Padrões de Schema

  • Utilize snake_case para nomear colunas e tabelas.
  • Inclua sempre campos created_at e updated_at.
  • Adote o uso de campos booleanos como active para controle de status.
  • Utilize json para campos com dados dinâmicos.
  • Prefira uuid ao invés de id tradicional, o que facilita a replicação e a clusterização.

Para campos categóricos, utilize strings ou enums em vez de valores numéricos. Exemplo:

  • usertype: "Admin" ao invés de usertype: 0
  • gender: "Female" ao invés de gender: 'F'

Benefícios

  • Utilizar uuid melhora a escalabilidade e flexibilidade do sistema, especialmente em ambientes distribuídos. O uso de json facilita a armazenagem de dados semiestruturados, enquanto a padronização dos tipos de dados melhora a clareza do schema.

                                                                                                         Topo

Clone repository
  • Infraestrutura
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • analytics
  • arquitetura
  • backend_categories
  • backend_inicio
  • backend_persons
  • backend_production_order
  • backend_products
  • backend_qualidade
  • backend_settings
  • backend_stock
  • backend_stock_locations
View All Pages