Prévia do material em texto
Questão 1
Respondida
Com a popularização dos computadores e o crescimento da área de Tecnologia da
informação, as demandas requeridas para as empresas de desenvolvimento se tornavam cada
vez mais complexas o que e em maior número, dessa maneira as foram sendo criados
métodos de desenvolvimento de software para padronizar o processo dentro das empresas,
alguns exemplos são o método cascata, método em V, RUP e as metodologias ágeis.
Considerando o contexto de metodologias ágeis podemos citar como exemplos de
metodologias ágeis o TDD o FDD e o BDD, esse último se caracteriza por
• focar exclusivamente em cenários de comportamento do sistema para planejar o
processo de desenvolvimento do software.
• utilizar a ideia de cenários de comportamentos do sistema e então criar testes para
esses cenários antes de implementar a funcionalidade.
• se utilizar reuniões para colocar todos os membros envolvidos das listas de
funcionalidades criadas para o ciclo de desenvolvimento.
• focar no mapeamento das funções que devem ser implementadas no sistema, mas
antes criar rotinas de testes para elas.
• Utilizar o conceito de programação em pares para buscar a melhorar qualidade de
código durante o processo de desenvolvimento.
Sua resposta
utilizar a ideia de cenários de comportamentos do sistema e então criar testes para esses
cenários antes de implementar a funcionalidade.
focar exclusivamente em cenários de comportamento do sistema para planejar o
processo de desenvolvimento do software. AFIRMATIVA INCORRETA. O BDD é
uma metodologia que sim, cria cenários dos comportamentos dos sistemas, mas também se
utiliza do TDD para criar os testes baseados nesses comportamentos, então o
Exclusivamente da frase está fazendo com que seja a afirmativa incorreta. utilizar a ideia
de cenários de comportamentos do sistema e então criar testes para esses cenários
antes de implementar a funcionalidade. AFIRMATIVA CORRETA. Motivo explicado
acima. se utilizar reuniões para colocar todos os membros envolvidos das listas de
funcionalidades (features) criadas para o ciclo de desenvolvimento. AFIRMATIVA
INCORRETA Embora o BDD tem como um de seus objetivos a melhoria da comunicação
na equipe através de reuniões, a criação de listas de funcionalidades é objetivo do
FDD. focar no mapeamento das funções que devem ser implementadas no sistema,
mas antes criar rotinas de testes para elas. AFIRMATIVA INCORRETA focar apenas
no mapeamento das funções para criar os testes antes, é objetivo do TDD Utilizar o
conceito de programação em pares para buscar a melhorar qualidade de código
durante o processo de desenvolvimento. AFIRMATIVA INCORRETA A programação
em pares é um dos tópicos recomendados pelo XP.
Questão 2
Respondida
Dentro do vasto panorama do desenvolvimento de software, os testes desempenham um papel
crucial na garantia da qualidade e na entrega de produtos confiáveis aos usuários. Nesse
contexto, é fundamental compreender os conceitos relacionados a três tipos de teste
específicos: Teste de Integração, Teste de Sistemas e Testes de Aceitação.
I - O Teste de Integração avalia o funcionamento conjunto de unidades de código isoladas,
identificando erros associados às interfaces e construindo a arquitetura do software.
II - Os Testes de Sistemas são realizados apenas para verificar a funcionalidade global do
software, incluindo aspectos não funcionais como usabilidade e segurança.
III - Testes de Aceitação são conduzidos pelos desenvolvedores, visando assegurar que as
partes do código interagem corretamente, sem a necessidade de conhecimento da estrutura
interna do software.
IV - O Teste de Integração é uma avaliação completa do sistema em seu conjunto,
abrangendo tanto aspectos funcionais quanto não funcionais, como usabilidade e segurança.
V - Testes de Aceitação são realizados pelo cliente, utilizando dados do cliente, e visam
garantir que a implementação do software está de acordo com os requisitos definidos.
Assinale a alternativa que apresenta as afirmações corretas sobre esses tipos de teste:
• Apenas as afirmações I e V estão corretas.
• Apenas as afirmações I, II e V estão corretas.
• Apenas as afirmações I, III e IV estão corretas.
• Apenas as afirmações I, II, III e IV estão corretas.
• Apenas as afirmações II, III, IV e V estão corretas.
Sua resposta
Apenas as afirmações I e V estão corretas.
I – Afirmação correta: Os testes de integração verificam se as diferentes unidades do
sistema funcionando corretamente quando integração, a partir disso estamos verificando e
construindo a arquitetura do software. II – Afirmativa correta: Os testes de sistema são
realizados para verificar a funcionalidade global incluindo aspectos não funcionais como
usabilidade e segurança. III – Afirmativa Incorreta: Os testes de aceitação são feitos de
preferência pelo próprio cliente, ou no mínimo com a presença do cliente, onde ele irá
acompanhar o teste feito pelo membro da equipe. IV- Afirmativa Incorreta: O teste de
integração não tem por objetivo avaliar usabilidade e segurança. Ele avalia se se as
unidades se integram corretamente. V- Afirmativa Correta: Como mencionado em outra
afirmação os testes de aceitação são feitos pelo cliente visando validar que o software está
de acordo com os requisitos.
Questão 3
Respondida
A necessidade de fazer entregas mais rápidas e principalmente com qualidade tem se tornado
objetivo de muitas empresas, nesse âmbito de desenvolvimento de software, muitas técnicas
de testes surgiram e cada um tem um objetivo especifico, podemos citar os testes de sistemas
como uma dessas técnicas, e dentro dos testes de sistemas temos uma técnica que pode ser
empregada para a auxiliar a garantia de qualidade do sistema os testes de carga.
Diante do apresentado, assinale a alternativa que apresenta os objetivos dessa técnica:
• As funcionalidades das unidades quando integradas entre si.
• A conformidade do sistema com os requisitos desejados pelo cliente.
• Avaliar o nível de segurança do sistema contra ataques maliciosos.
• Avaliar os limites e capacidades do sistema sob diferentes condições.
• Verificar o funcionamento da menor unidade lógica do sistema.
Sua resposta
Avaliar os limites e capacidades do sistema sob diferentes condições.
As funcionalidades das unidades quando integradas entre si. ALTERNATIVA
INCORRETA. Objetivo da afirmação é referente ao testes de integração.
A conformidade do sistema com os requisitos desejados pelo cliente. ALTERNATIVA
INCORRETA. Objetivo da afirmação é referente ao teste de aceitação. Avaliar o nível de
segurança do sistema contra ataques maliciosos. ALTERNATIVA
INCORRETA. Objetivo da afirmação é referente ao teste de segurança. Avaliar os limites
e capacidades do sistema sob diferentes condições. ALTERNATIVA
CORRETA. Objetivo exato do testes de carga, lembre-se que na aula foi descrito que o
teste de carga identifica gargalos no sistema. Verificar o funcionamento da menor unidade
lógica do sistema. ALTERNATIVA INCORRETA. Objetivo da afirmação é referente ao
teste de unidade.
Questão 4
Respondida
Considerando a construção de um sistema de uma calculadora, um testador apresentou o
seguinte texto para exemplificar uma técnica de testes:
"se um dos requisitos do cliente é que o programa some dois números, esse tipo de teste se
importa apenas em verificar se, ao digitar os números para a soma, o programa apresenta a
resposta correta na tela."
Ao ouvir esse exemplo um colega do testador compreendeu imediatamente que ele estava
falando sobre o teste
• de integração
• de regressão
• de caixa preta
• de caixa branca
• de segurança
Sua resposta
de caixa preta
de integração - ALTERNATIVA INCORRETA - esse tipo de teste verifica se as unidade
estão funcionando corretamente ao serem integradas.
de regressão - ALTERNATIVA INCORRETA - esse tipo de testesverifica se
funcionalidades já estável não serão afetadas por novas atualizações.
de caixa preta - ALTERNATIVA CORRETA - esse tipo de teste considera apenas os
requisitos do sistema, sem se importar ou conhecer o código interno. de caixa branca
- ALTERNATIVA CORRETA - esse tipo de testes considera e se importa com o código
do sistema para desenhar seus casos de testes. de segurança - ALTERNATIVA
INCORRETA - esse tipo de testes valida o nível de segurança do sistema.
Questão 5
Respondida
A metodologia XP (Extreme Programming) traz 4 principais atividades dentro de seu ciclo
de desenvolvimento, sendo que a segunda fase é a atividade do Projeto. É nessa atividade
que, para auxiliar as equipes de desenvolvedores e outros envolvidos, os cartões CRC são
utilizados.
Assinale a alternativa que descreve corretamente o significado da sigla CRC.
• Criação-Responsavel-Classe
• Ciclo-Revisão-Código
• Código-Robusto-Confiável
• Classe-Responsabilidade-Colaborador
• Coragem-Requisitos-Cumprimento
Sua resposta
Classe-Responsabilidade-Colaborador
Lembre-se que durante a aula foi mencionado que durante a atividade do projeto dentro do
ciclo do XP é utilizado o conceito KISS (Keep it simple, stupid!) e indo de encontro com
esse coiceito são utilizados os cartções CRC (CLASSE-RESPONSABILIDADE-
COLABORADOR).
Questão 6
Respondida
Com a popularização dos computadores e o crescimento da área de Tecnologia da
informação, as demandas requeridas para as empresas de desenvolvimento se tornavam cada
vez mais complexas o que e em maior número, dessa maneira as foram sendo criados
métodos de desenvolvimento de software para padronizar o processo dentro das empresas,
alguns exemplos são o método cascata, método em V, RUP e as metodologias ágeis, esse
ultimo surgiu a partir da criação do chamado Manifesto Ágil.
Sobre o Manifesto ágil, assinale a alternativa que o caracteriza corretamente:
• Um documento com valores e princípios para orientar metodologias ágeis.
• Um modelo com etapas no formato de cascata para o desenvolvimento de software.
• Um conjunto de regras e práticas específicas para testes de software.
• Um método de desenvolvimento que prioriza o planejamento e a programação do
teste.
• Uma abordagem com todas as etapas de desenvolvimento de software organizadas
sequencialmente.
Sua resposta
Um documento com valores e princípios para orientar metodologias ágeis.
Um documento com 4 valores e 12 princípios para orientar metodologias ágeis.
ALTERNATIVA CORRETA: O manifesto ágil surgiu para guiar as metodologias ágeis,
trazendo em si 4 valores e 12 princípios que devem ser seguidos. Um modelo em cascata
para desenvolvimento de software. ALTERNATIVA INCORRETA: Modelo cascata é
uma metodologia antiga e não adaptativa como um método ágil deve ser. Um conjunto de
regras e práticas específicas para testes de software. ALTERNATIVA
INCORRETA. Embora tenha um conjunto de valores e princípios, o manifesto não é
focado em testes de software, mas sim no processo de desenvolvimento como um todo. Um
método que prioriza o planejamento e a programação do teste. ALTERNATIVA
INCORRETA. O método que prioriza o planejamento e a programação dos testes é o
TDD Uma abordagem sequencial de desenvolvimento de software. ALTERNATIVA
INCORRETA. O Manifesto Ágil não é uma metodologia de desenvolvimento, mas sim
um norteador para as metodologias ágeis.
Questão 7
Respondida
Para iniciar sua jornada dentro do mundo da qualidade de software, é crucial compreender
os fundamentos das técnicas de teste de software. O teste de software é um elemento de algo
maior: Verificação e Validação, também conhecido como V&V. Esse processo crítico visa
identificar defeitos, erros e falhas em um sistema de software, por meio da criação de casos
de testes e dos resultados esperados. Sobre os conceitos de Defeitos, erros e Falhas, considere
as asserções abaixo:
(I) É considerado um Defeito uma inconsistência na implementação do programa, ou seja,
um código que apresenta algum problema em sua lógica.
(II) No entanto mesmo que um defeito esteja presente no código ele pode nunca ser
encontrado, e quando for encontrado então ocorre uma falha.
A respeito das asserções acima, assinale a alternativa correta:
• As asserções I e II são proposições verdadeiras, mas a II não justifica a I.
• As asserções I e II são proposições verdadeiras e a II justifica a I.
• As asserções I é uma proposição verdadeira e a II, falsa.
• A asserção I é uma proposição falsa e a II, verdadeira.
• As asserções I e II são proposições falsas.
Sua resposta
As asserções I e II são proposições verdadeiras, mas a II não justifica a I.
As asserções I e II são proposições verdadeiras e a II justifica a I. Pois a definição de
defeito está correta, é um código mal produzido que tem potência de causar algum efeito
negativo, no entanto esse potencial só se concretiza em FALHA se o fluxo passar pelo
trecho de código que foi mal produzido.
Questão 8
Respondida
Na manutenção de software, tanto a implementação quanto a implantação são fases cruciais
para garantir a eficiência e a funcionalidade do sistema. A implementação refere-se à
tradução do projeto em código-fonte, onde os programadores escrevem e integram as
funcionalidades conforme planejado. Por outro lado, a implantação envolve a introdução do
software em ambiente real, seja para testes ou uso pelos usuários finais.
A implementação é essencial para transformar o projeto em algo funcional, exigindo
habilidades técnicas e conhecimento específico para traduzir as ideias em código. Já a
implantação é a etapa em que o software ganha vida, sendo crucial para verificar se as
funcionalidades atendem às expectativas e requisitos estabelecidos.
Ambos os processos são interdependentes: uma implementação mal realizada pode
comprometer a eficiência do sistema, enquanto uma implantação inadequada pode resultar
em falhas na entrega do software. Portanto, a compreensão e a execução adequada de ambas
as fases são fundamentais para o sucesso da manutenção de software.
Considerando a diferença entre implementação e implantação na manutenção de software,
assinale a alternativa correta:
• A implementação focaliza na integração do software para diferentes plataformas,
enquanto a implantação se concentra na adaptação do software com hardware
específico.
• A implementação é responsável pela padronização do código-fonte, enquanto a
implantação é a fase de customização para atender a requisitos específicos do cliente.
• A implementação é o processo de transformar requisitos em código, enquanto a
implantação é a adaptação do software para diferentes ambientes de execução.
• A implementação se refere à verificação de conformidade com padrões de segurança,
enquanto a implantação trata da análise de desempenho e eficiência do software.
• A implementação é a fase de otimização do código-fonte para melhor desempenho,
enquanto a implantação é a fase de análise e monitoramento do que foi realizado na
etapa de implementação.
Sua resposta
A implementação é o processo de transformar requisitos em código, enquanto a
implantação é a adaptação do software para diferentes ambientes de execução.
A implementação é o processo de transformar requisitos em código, enquanto a
implantação é a adaptação do software para diferentes ambientes de execução. CORRETO,
pois a implementação é de fato transformar requisitos em código, sejam eles novas
funcionalidades ou correções de problemas. Enquanto a implantação é a aplicação dessa
implementação na adaptação do software, para os mais diferentes ambientes de
execução. A implementação focaliza na integração do software para diferentes
plataformas, enquanto a implantação se concentra na adaptação do software com hardware
específico. ERRADA, pois a implementação não se trata da integração esim da adaptação.
Da mesma forma, a implantação é o inverso, sendo a atuação na integração e não na
adaptação. A implementação é responsável pela padronização do código-fonte, enquanto a
implantação é a fase de customização para atender a requisitos específicos do cliente.
ERRADA, pois a implementação não é somente a padronização do código, mas sim a
amplitude dele, como correções e novas funcionalidades. Enquanto a implantação não
customizar nenhum processo. Ela é responsável pela inserção da implementação feita no
código geral para ser aplicado na etapa de operação. A implementação se refere à
verificação de conformidade com padrões de segurança, enquanto a implantação trata da
análise de desempenho e eficiência do software. ERRADA, pois a implementação não está
integralmente ligada à verificação de seguranças. Isso faz parte da etapa de monitoramento.
Da mesma forma, a implantação não faz análises de desempenho. Isso é um misto entre as
etapas de monitoramento e operação. A implementação é a fase de otimização do código-
fonte para melhor desempenho, enquanto a implantação é a fase de análise e
monitoramento do que foi realizado na etapa de implementação. ERRADA, pois a
implantação não analisa e não monitora nenhum processo. Isso é realizado na etapa de
monitoramento.
Questão 9
Respondida
Suponha que você tenha acabado de entrar em uma equipe de qualidade de uma startup
focada no desenvolvimento de aplicações web. Como parte do seu treinamento você recebe
um projeto simples para fazer uma calculadora e o seu papel é desenvolver testes para o
sistema. Em determinado momento durante a execução desse treinamento um de seus líderes
decide aplicar um pequeno teste e apresenta para você o seguinte texto escrito em papel:
Cenário 2: Subtração com Números Negativos
Dado que a calculadora está ligada
Quando eu inserir os números -8 e 3 e solicitar uma subtração
Então o resultado exibido deve ser -11
Enquanto você lê o texto o líder ficar lhe observando e pergunta qual é o método ágil que
possui a técnica apresentada nesse papel?
Assinale a alternativa com o método ágil que faz uso do trecho descrito acima:
• TDD
• XP
• Scrum
• BDD
• RUP
Sua resposta
BDD
O texto descrito no enunciado possui uma estrutura que descreve um cenário de
comportamento no padrão Dado uma situação, quando algo for feito, então deve-se receber
alguma resposta, ou no inglês GIVEN, WHEN, THEM.
Essa estrutura de cenários de comportamento são utilizadas na metodologia BDD (Behavior
Driven Development), portanto a alternativa correta é a letra D.
Questão 10
Respondida
No cenário do desenvolvimento de software, os Testes Unitários destacam-se como uma
prática fundamental no processo de garantia de qualidade. Essa abordagem específica de teste
concentra-se na verificação de unidades individuais de código, como funções, métodos ou
classes, de forma isolada do restante do sistema.
Uma das possibilidades de criação de testes unitário avaliar a função alvo do teste e criar
casos de testes para elas.
public static String getSubAccountID(String strComboAccount) {
strComboAccount = strComboAccount.trim();
int nPos = strComboAccount.indexOf("|");
if (nPos > 0) {
String strText = strComboAccount.substring(0, nPos).trim();
nPos = strText.indexOf("|");
if (nPos > 0) {
return strText.substring(nPos + 1).trim();
} else {
return "";
}
} else {
return "";
}
}
Considere a função em java acima que recebe uma string e retorna uma substring dela mesma.
As afirmações abaixo apresentam casos de testes desenhados por um membro de uma equipe
de qualidade, contendo entradas para a função e saídas esperadas.
I - Entrada: "Account1|SubAccount1"
- Saída: "SubAccount1"
II - Entrada: "Account2"
- Saída: "Account2"
III - Entrada: ""
- Saída:""
IV - Entrada:"Account4 | SubAccount3"
- Saída:"SubAccount3"
V - Entrada:"Account5 | SubAccount4"
- Saída:" SubAccount3 "
Assinale a alternativa que apresenta apenas as afirmações corretas
• Apenas as afirmações I e V estão corretas.
• Apenas as afirmações I, II e V estão corretas.
• Apenas as afirmações I, III e IV estão corretas.
• Apenas as afirmações I, II, III e IV estão corretas.
• Apenas as afirmações II, III, IV e V estão corretas.
Sua resposta
Apenas as afirmações I, III e IV estão corretas.
A função em Java apresentada na questão, getSubAccountID, recebe uma
string strComboAccount como entrada e realiza a extração de um identificador de subconta a
partir dessa string, considerando o caractere "|" como um separador. Além disso a função
também remove os espaços em branco no inicio e no fim da string da subconta. sendo
assim:
I - Alternativa Correta - Ao receber a string: "Account1|SubAccount1" é feito a divisão
no "|" e retornado apenas "SubAccount1", então o caso de teste tem entradas e saídas
esperadas corretas. II - Alternativa Incorreta - Ao receber a string: "Account2" é feito a
divisão no "|" e retornado apenas "", então o caso de teste não tem entradas e saídas
esperadas corretas. III - Alternativa Correta - Ao receber a string: "" é feito a divisão no
"|" e retornado apenas "", então o caso de teste tem entradas e saídas esperadas
corretas. IV - Alternativa Correta - Ao receber a string: "Account4 | SubAccount3" é
feito a divisão no "|" e retornado apenas " SubAccount3", depois é removido o espaço em
branco no inicio da string resultando em "SubAccount3" então o caso de teste tem entradas
e saídas esperadas corretas. V - Alternativa Incorreta - Ao receber a string: "Account4 |
SubAccount3" é feito a divisão no "|" e retornado apenas " SubAccount3", depois é
removido o espaço em branco no inicio da string resultando em "SubAccount3" então o
caso de teste não tem entradas e saídas esperadas corretas.