Pular para o conteúdo principal

Questão de Engenharia de Software — Demais Ferramentas e Tópicos Variados de Controle de Versão — FCC 2024

Engenharia de SoftwareDemais Ferramentas e Tópicos Variados de Controle de Versão
Código
fc147290
Banca
FCC
Órgão
TRT 20
Ano
2024
Cargo
AJ TRT20
Uma equipe deseja adotar abordagem DevOps para automatizar o processo de integração e entrega contínua (CCD). Para isso, é necessário integrar diversas ferramentas para otimizar a automação dos testes e a entrega do produto. Dentre essas ferramentas, encontra-se o
  1. ASelenium, que é utilizado para automação de builds, testes de integração e execução de pipelines de CI/CD, que integra-se ao CircleCl, que faz a gestão de repositórios Git O CircleCl é compatível apenas com as linguagens Go, Java e Ruby. apresentando incompatibilidade com Python, Ruby Scala, Node js, PHP e Haskell.
  2. BGit Esta ferramenta precisa ser integrada ao GitHub, uma vez que são interdependentes. Usadas em conjunto, conseguem realizar o controle de versão e proporcionar a integração contínua.
  3. CGitHub Actions, que permite a criação de workflows de CI/CD diretamente no GitHub. Os workflows são definidos no diretório .github/workflows de um repositório, que pode ter vários workflows, cada um dos quais podendo executar um conjunto diferente de tarefas, como criar e testar pull requests.
  4. DJenkins, que é uma ferramenta escrita em PHP, exclusiva para automação de testes, que integra-se ao Git para armazenar o histórico dos testes automatizados executados.
  5. EMaven, que é uma ferramenta proprietária para automação de builds, que também possui capacidades nativas de controle de versões e pipelines de CI/CD, similar ao Gittab CI/CD. Um projeto Maven fica atrelado a um arquivo principal: o pom.java.
Revelar gabarito e comentário

GabaritoC — GitHub Actions, que permite a criação de workflows de CI/CD diretamente no GitHub. Os workflows são definidos no diretório .github/workflows de um repositório, que pode ter vários workflows, cada um dos quais podendo executar um conjunto diferente de tarefas, como criar e testar pull requests.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Ferramentas DevOps: GitHub Actions e CI/CD

Gabarito: letra C. O GitHub Actions é a ferramenta que permite criar workflows de CI/CD diretamente no GitHub, com os arquivos de configuração armazenados no diretório .github/workflows do repositório — exatamente o que a alternativa descreve. As demais opções misturam funções de ferramentas distintas (Selenium, Git, Jenkins, Maven) com informações incorretas sobre suas capacidades e características.

O DevOps é uma cultura que integra desenvolvimento (Dev) e operações (Ops), com foco em automação, colaboração e entregas frequentes. Uma das práticas centrais é o pipeline CI/CD, que automatiza as etapas de integração, teste e entrega do software. Nesse contexto, as ferramentas desempenham papéis específicos: algumas são para controle de versão (Git), outras para automação de builds (Maven, Gradle), outras para testes (Selenium, JUnit) e outras para orquestração de pipelines (Jenkins, GitHub Actions, GitLab CI/CD).

O GitHub Actions é um serviço de integração e entrega contínua integrado à plataforma GitHub. Ele permite que os desenvolvedores definam workflows — automações compostas por jobs e steps — que são acionados por eventos como push, pull request ou agendamento. Os workflows são escritos em arquivos YAML e ficam no diretório .github/workflows. Um repositório pode ter vários workflows, cada um executando um conjunto diferente de tarefas, como rodar testes, fazer build, publicar artefatos ou implantar em produção. Essa é a descrição precisa da alternativa C.

A pegadinha desta questão está em misturar as funções das ferramentas. O candidato que conhece superficialmente as ferramentas pode se confundir: o Selenium é de testes, o Jenkins é de CI/CD, o Maven é de build — mas as alternativas trocam essas funções e adicionam informações falsas (como linguagens suportadas, dependência entre ferramentas ou arquivos de configuração). A banca explora exatamente essa confusão entre as categorias de ferramentas no ciclo DevOps.

Para acertar, é essencial saber classificar cada ferramenta conforme sua função no pipeline: codificar (Git, GitHub, GitLab), construir (Maven, Gradle, Docker), testar (JUnit, Selenium, Cypress, SonarQube), entregar/implantar (Jenkins, GitHub Actions, GitLab CI/CD, Kubernetes). Essa classificação é o critério que separa as alternativas corretas das incorretas.

Ferramenta

Função principal

Característica correta

Característica incorreta na questão

Selenium (A)

Automação de testes de interface gráfica

Framework para testes web/desktop

Não faz builds nem pipelines; CircleCI suporta várias linguagens (não só Go, Java, Ruby)

Git (B)

Controle de versão distribuído

Pode ser usado com GitHub, GitLab, Bitbucket ou servidor próprio

Não é interdependente do GitHub; não realiza CI/CD sozinho

GitHub Actions (C)

CI/CD integrado ao GitHub

Workflows em .github/workflows; vários workflows por repositório; tarefas como testar pull requests

— (descrição correta)

Jenkins (D)

Automação de CI/CD (builds, testes, deploys)

Escrito em Java; integra-se ao Git para obter código-fonte

Não é em PHP; não é exclusivo para testes; Git não armazena histórico de testes

Maven (E)

Automação de builds para projetos Java

Open source; arquivo principal é pom.xml

Não é proprietário; não tem controle de versão nem pipelines nativos; arquivo não é "pom.java"

Alternativa A — ❌ Incorreta

O Selenium é um framework para automação de testes de interfaces gráficas (web e desktop), não para automação de builds ou execução de pipelines de CI/CD. Além disso, a alternativa afirma que o CircleCI é compatível apenas com Go, Java e Ruby — o que é falso, pois o CircleCI suporta diversas linguagens, incluindo Python, Node.js, PHP e outras. A confusão aqui é dupla: a função do Selenium e as linguagens suportadas pelo CircleCI.

Alternativa B — ❌ Incorreta

O Git é um sistema de controle de versão distribuído, e o GitHub é uma plataforma de hospedagem de repositórios Git. Embora sejam frequentemente usados juntos, não são interdependentes — o Git pode ser usado sem o GitHub (com GitLab, Bitbucket ou servidores próprios), e o GitHub depende do Git, mas não o contrário. A alternativa também afirma que, usados em conjunto, realizam "integração contínua" — o que é impreciso: o GitHub oferece o GitHub Actions para CI/CD, mas o Git em si não faz integração contínua.

Alternativa C — ✅ Correta ⟵ GABARITO

O GitHub Actions permite criar workflows de CI/CD diretamente no GitHub. Os workflows são definidos em arquivos YAML no diretório .github/workflows do repositório. Um repositório pode ter vários workflows, cada um podendo executar um conjunto diferente de tarefas, como criar e testar pull requests, rodar testes automatizados, fazer build e implantar. Essa é a descrição correta e completa da ferramenta.

Alternativa D — ❌ Incorreta

O Jenkins é uma ferramenta de automação de CI/CD (integração e entrega contínua), escrita em Java, não em PHP. Além disso, não é "exclusiva para automação de testes" — ela automatiza builds, testes e deploys. A alternativa também afirma que o Jenkins se integra ao Git para "armazenar o histórico dos testes automatizados" — o que é uma função incorreta: o Git armazena código-fonte, não histórico de testes.

Alternativa E — ❌ Incorreta

O Maven é uma ferramenta de automação de builds para projetos Java, mas é open source, não proprietária. Ele não possui capacidades nativas de controle de versão nem de pipelines de CI/CD — para isso, são usadas ferramentas como Jenkins ou GitLab CI/CD. O arquivo principal de um projeto Maven é o pom.xml, não o "pom.java". A alternativa mistura funções de build com controle de versão e CI/CD, além de errar o nome do arquivo de configuração.

Gabarito: letra C

Link permanente: /questoes/fc147290