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.