

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Identifique abaixo as afirmativas verdadeiras ( V ) e falsas ( F ) sobre os princípios de design de software SOLID e as metodologias de desenvolvimento.
( ) O Princípio da Responsabilidade Única (SRP) afirma que uma classe deve ter apenas um motivo para mudar.
( ) O Princípio Aberto/Fechado (OCP) afirma que as entidades de software devem ser abertas para extensão, mas fechadas para modificação.
( ) TDD (Test-Driven Development) é uma abordagem que escreve testes APÓS o código de produção.
( ) BDD (Behavior-Driven Development) foca em descrever o comportamento esperado do sistema a partir da perspectiva do usuário.
( ) GRASP é um conjunto de padrões de design orientado a objetos.
Assinale a alternativa que indica a sequência correta, de cima para baixo.
V • V • V • V • V
V • V • F • V • V
V • F • F • V • F
F • V • V • F • V
F • F • V • F • F
De acordo com a abordagem test-driven development, os testes devem ser definidos antes da codificação das funções a serem testadas.
Certo
Errado
Durante o desenvolvimento de um sistema de controle de estoque, a equipe de engenharia de software optou por fazer uso do Desenvolvimento Guiado por Testes (TDD). A intenção era exercitar a interface e tentar encontrar erros nas estruturas de dados e na funcionalidade fornecida pelo componente. Após algumas iterações, notou-se que o código estava mais modular e com menos defeitos.
Portanto, a prática essencial do TDD implementada nesse processo foi:
priorizar a documentação do sistema antes da criação dos testes;
executar testes manuais antes de cada commit no repositório de código;
escrever testes automatizados apenas para os módulos críticos do sistema;
escrever os testes de integração após a implementação completa do sistema;
escrever um teste automatizado antes da implementação da funcionalidade correspondente.
No desenvolvimento orientado a testes (TDD, na sigla em inglês), o ciclo de trabalho segue a ordem vermelho-verde-refatorar (red-green-refactor), sendo vermelho a etapa que consiste em escrever o código de produção necessário para que o teste, criado na fase anterior, passe a funcionar corretamente.
Certo
Errado
Em um consórcio intermunicipal de saúde, um sistema de regulação de consultas médicas passou por uma atualização que incluiu a correção de um erro no módulo de agendamento e melhorias de desempenho no processamento das consultas. Após essas alterações, a equipe de qualidade executou novamente diversos cenários de uso, incluindo funcionalidades que não foram diretamente modificadas na atualização, com o objetivo de verificar se o sistema continuava funcionando corretamente como um todo. Considerando as práticas de testes de software, assinale a alternativa que corresponde CORRETAMENTE ao tipo de teste realizado.
Teste de Unidade.
Teste de Integração.
Teste de Estresse.
Teste de Regressão.


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
A técnica de desenvolvimento de software Test Driven Development (TDD) propõe que todo código desenvolvido seja coberto por testes, o que amplia seu nível de confiança. Qual ação representa uma aplicação direta dos princípios fundamentais de TDD?
Escrever um teste que falha para uma função, escrever o código mínimo da função para fazer o teste passar e refatorar o código de modo que todos os testes continuem a passar.
Escrever todos os testes antes de iniciar o desenvolvimento, cobrindo os requisitos e as exceções, e escrever o código das funções até que todos os testes passem.
Escrever o código completo de uma função, escrever os testes desta função e seguir para a próxima função quando todos os testes passarem.
Escrever o código mínimo de uma função, sem tratamento de exceções, escrever os testes da função e seguir para a refatoração da função quando os testes passarem.
Projetos complexos e críticos exigem testes exaustivos e contínuos, nos quais cada componente é validado individualmente e cada etapa de integração é rigorosamente homologada, evidenciando a importância da prática no desenvolvimento de software, especialmente em sistemas de missão crítica.
I. O teste unitário é uma modalidade de testes que se concentra na verificação da menor unidade do projeto de software.
II. O JUnit é um framework que facilita o desenvolvimento e execução de testes unitários em Javascript.
III. O JUnit permite validar partes específicas do código de forma automatizada.
Com base nas informações acima, analise as afirmações a seguir. Está correto o que se afirma em
I e II, apenas.
I e III, apenas.
II e III, apenas.
I, apenas.
I, II, III.
O Tribunal adotou o Test-Driven Development (TDD) para garantir a qualidade do código nos sistemas de cálculo de pensões. Um auditor está revisando o processo de desenvolvimento e quer validar se a equipe segue o ciclo padrão do TDD.
A sequência correta de passos no ciclo Red-Green-Refactor do TDD é:
escrever o código, testar se funciona e depois documentar.
escrever um teste que falha, escrever o código mínimo para o teste passar e melhorar o código.
refatorar o código antigo, escrever novos testes e apagar os testes que falham.
desenvolver a interface, integrar a base de dados, escrever o teste e realizar testes de carga.
documentar os requisitos, codificar em par e realizar o deploy em produção.
No IFCE, a equipe de desenvolvimento está implementando um novo módulo para cálculo automático de carga horária docente. Diante desse cenário, o analista de tecnologia da informação propôs utilizar TDD (Test-Driven Development) para conduzir o desenvolvimento da funcionalidade. Considerando esse cenário, assinale a alternativa que descreve corretamente o fluxo do TDD.
Implementar toda a funcionalidade, executar testes manuais ao final e, posteriormente, automatizar os testes aprovados.
Escrever os testes automatizados ao término da codificação, com o objetivo de validar os requisitos que já foram implementados.
Escrever um teste que falha, implementar o código mínimo para fazê-lo passar e, em seguida, refatorar o código mantendo os testes aprovados.
Criar casos de teste voltados aos cenários de exceção, deixando os fluxos principais de negócio para validação direta em ambiente de produção.
Desenvolver o código em paralelo à escrita dos testes, sem ordem definida entre implementação e validação.
Joana é a líder da equipe técnica que está modelando um novo produto de software que apoiará um processo de negócio que se estende de um órgão público superior até seus órgãos subordinados. Em face da inexperiência da equipe técnica com o processo de negócio, Joana resolve fazer uso do DDD (Domain Driven Design) aproximando e envolvendo os especialistas de domínio.
Ao aplicar o DDD, Joana está ciente de que:
eventos de domínio são ordinariamente imutáveis, já que são um registro de algo no passado;
mudanças no código representam adequações tecnológicas e não devem suscitar alterações no modelo;
agregados devem prover referências para cada entidade em seu contexto como guias para os objetos externos;
repositórios devem retornar classes ou coleções de classes a serem instanciadas por métodos externos de clientes;
o uso da Linguagem Onipresente (Ubiquitous Language) expressa o modelo como fábricas encapsuladas por objetos de valor.


Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Scrum e Extreme Programming (XP) são abordagens ágeis frequentemente utilizadas em conjunto no desenvolvimento de software, mas com propósitos e práticas distintas. Uma consequência da integração entre essas duas abordagens para desenvolvimento de software é que a/o
prática de test-first (teste antes) do XP complementa o framework Scrum e pode aumentar a qualidade do incremento, sem alterar os eventos ou artefatos deste framework.
sprint do Scrum acomoda a prática de refatoração contínua do XP, se o Product Owner aprovar a extensão do prazo da sprint para realização desta prática.
programação em pares (Pair Programming) do XP substitui a reunião Daily Scrum, pois ambas têm como objetivo o alinhamento contínuo entre desenvolvedores.
cliente participa diariamente do desenvolvimento no XP, o que elimina a necessidade da presença do Product Owner do Scrum na equipe de desenvolvimento.
No contexto do Test-Driven Development (TDD), o ciclo Red–Green–Refactor estabelece uma disciplina para evolução contínua do código. Considerando esse ciclo, assinale a alternativa que descreve corretamente a etapa Refactor.
Otimizar a lógica interna para atender a novos requisitos de desempenho e escalabilidade identificados durante o teste.
Implementar novos testes automatizados com foco em aumentar métricas de cobertura e validar cenários ainda não contemplados.
Desenvolver rapidamente funcionalidades adicionais para antecipar requisitos futuros e reduzir a necessidade de mudanças posteriores.
Aperfeiçoar a estrutura interna do código e a legibilidade dos testes, eliminando redundâncias e garantindo que o comportamento funcional externo permaneça inalterado.
No desenvolvimento orientado ao domínio (DDD, na sigla em inglês), o contexto delimitado (bounded context) busca estabelecer a regra de que toda a lógica de negócio do sistema deve ser implementada em um único modelo coeso e global para garantir a consistência de todos os termos e definições de domínio.
Certo
Errado
A teoria histórico-cultural de Vygotsky introduziu o conceito de Zona de Desenvolvimento Proximal (ZDP) como elemento central da mediação pedagógica: a distância entre o que o estudante consegue realizar de forma independente e o que consegue realizar com o auxílio de um par mais experiente ou do docente. Em um IF, um docente de Química Ambiental aplica esse princípio ao planejar atividades de análise de qualidade da água com estudantes do 3º ano do Ensino Médio Integrado, estruturando tarefas com diferentes níveis de desafio e variando o grau de suporte ao longo do processo. Considerando os fundamentos da mediação docente, a ZDP e os princípios da relação pedagógica na EPT, assinale a alternativa correta.
A aplicação da ZDP na prática docente implica que o professor deve sempre realizar as tarefas junto com os estudantes, não permitindo que eles trabalhem de forma independente, pois a aprendizagem ocorre apenas na presença contínua e direta do docente.
O conceito de ZDP é incompatível com a Educação Profissional e Tecnológica, pois foi desenvolvido para contextos de Educação Infantil e não pode ser aplicado a estudantes do Ensino Médio ou da graduação, que já possuem desenvolvimento cognitivo consolidado.
A mediação pedagógica fundamentada na ZDP pressupõe que o docente identifique o nível de desenvolvimento real dos estudantes para, a partir daí, planejar intervenções que os desafiem a operar no limite superior de sua zona de desenvolvimento proximal, oferecendo suporte (scaffolding), que gradualmente é retirado à medida que os estudantes desenvolvem autonomia, e promovendo, assim, a internalização de conhecimentos e a emancipação intelectual.
A autonomia intelectual dos estudantes na EPT se consolida ao longo do processo formativo, sendo mais efetivamente desenvolvida quando o docente reduz gradualmente o suporte oferecido à medida que o estudante demonstra domínio das tarefas. Nessa perspectiva, a mediação docente cumpre seu papel quando o estudante consegue reproduzir, de forma independente, os procedimentos técnicos ensinados.
A relação pedagógica ideal na Educação Profissional deve ser horizontal e não diretiva, cabendo ao docente apenas organizar o ambiente físico e disponibilizar materiais, sem intervir no processo de aprendizagem para não comprometer a autonomia natural dos estudantes.
De acordo com o conceito INVEST, as histórias de usuário devem ser independentes, negociáveis, pequenas e testáveis.
Certo
Errado


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
TDD (Test-Driven Development) e BDD (Behavior-Driven Development) são abordagens de desenvolvimento que integram os testes no ciclo de vida do software.
Assinale a alternativa que indica corretamente a principal diferença entre TDD e BDD.
O TDD caracteriza-se por ser uma abordagem aplicada prioritariamente ao desenvolvimento da camada de apresentação, concentrando-se na validação de componentes visuais e fluxos de interface, ao passo que o BDD é direcionado exclusivamente à camada de serviços e regras de negócio, não sendo recomendado para validações relacionadas à experiência do usuário.
O TDD foca em escrever testes unitários antes do código de produção para guiar o desenvolvimento da funcionalidade, enquanto o BDD foca em descrever o comportamento esperado do sistema a partir da perspectiva do usuário, utilizando uma linguagem natural e ubíqua.
Na abordagem TDD, os testes são definidos e executados de forma manual e posterior à implementação do código-fonte, com o objetivo de verificar a correção das funcionalidades desenvolvidas, enquanto o BDD exige a definição antecipada de testes automatizados, executados continuamente ao longo do ciclo de desenvolvimento.
Diferentemente do BDD, o TDD não estabelece a obrigatoriedade de criação de testes antes da implementação do código, sendo utilizado principalmente como mecanismo de validação após o desenvolvimento das funcionalidades, ao passo que o BDD impõe, de forma rígida, a escrita prévia de todos os testes antes do início da codificação.
O TDD tem como foco predominante a elaboração de testes de integração e de sistema, buscando validar a interação entre diferentes módulos da aplicação, enquanto o BDD se limita à criação de testes unitários, voltados à verificação de métodos e classes de forma isolada.
A automação de testes é uma prática essencial para garantir a qualidade do software e agilizar o ciclo de desenvolvimento, especialmente em um ambiente de Integração Contínua. Em um projeto de modernização de um sistema legado do governo, a equipe está implementando testes automatizados. Analise as seguintes proposições sobre testes automatizados e qualidade de software no setor público:
I. Testes de Regressão automatizados são cruciais para garantir que novas funcionalidades ou correções de bugs não tenham introduzido efeitos colaterais indesejados em partes do sistema que antes funcionavam corretamente.
II. O Test-Driven Development (TDD) é uma prática em que os testes automatizados são escritos depois que o código de produção está completamente finalizado, servindo apenas como uma forma de documentar o comportamento do sistema.
III. A automação de testes elimina completamente a necessidade de testes manuais, pois os scripts automatizados são capazes de cobrir 100% dos cenários de uso, incluindo testes de usabilidade e exploratórios, que avaliam a experiência do usuário.
Está correto o que se afirma em:
I, II e III.
III, apenas.
I e II, apenas.
II e III, apenas.
I, apenas.
Analise a seguinte classe escrita em Java (Java SE) 11:

Considere também o seguinte teste unitário utilizando JUnit 5 (org.junit.jupiter.api):

Sobre a execução do teste unitário apresentado, assinale a alternativa correta.
O teste falha porque o método sacar não permite valores negativos.
O teste verifica apenas se uma exceção é lançada pelo método sacar.
O teste verifica tanto a atualização correta do saldo quanto o lançamento de exceção quando o saldo é insuficiente.
O teste falha porque o método assertEquals não pode ser usado com valores numéricos.
O teste altera permanentemente o saldo da conta no sistema.
A recomendação do princípio timely de clean code visa a que os testes de unidade sejam elaborados antes do próprio código.
Certo
Errado
Em uma equipe responsável por evoluir uma aplicação corporativa crítica, foram adotadas práticas de Scrum, XP, Domain-Driven Design, Test-Driven Development, testes automatizados com NUnit e versionamento de código-fonte. Durante uma retrospectiva, discutiu-se a relação entre incremento de produto, testes automatizados, integração de alterações e modelagem do domínio de negócio.
Nesse contexto, analise as sentenças a seguir:
I- Em ferramentas de teste como NUnit, testes unitários substituem a necessidade de versionamento de código-fonte, pois a rastreabilidade das alterações passa a ser garantida exclusivamente pelo histórico de execução dos testes.
II- Em TDD, a sequência clássica envolve escrever inicialmente um teste automatizado que falha, implementar o código mínimo para fazê-lo passar e, em seguida, refatorar preservando o comportamento verificado pelos testes.
III- No Domain-Driven Design, a adoção de uma linguagem ubíqua dispensa a delimitação de bounded contexts, pois um único vocabulário de domínio deve ser compartilhado integralmente por todos os módulos, subsistemas e equipes da organização.
IV- No Scrum, o incremento produzido ao final de uma Sprint deve estar potencialmente utilizável quando atende à Definition of Done, mas isso não significa que cada incremento precise ser obrigatoriamente implantado em produção ao término de toda Sprint.
Analisadas as sentenças, estão CORRETAS apenas:
I e III.
I e IV.
II e III.
II e IV.