Baixe o app para aproveitar ainda mais
Prévia do material em texto
www.tiparaconcursos.net Página 1 de 60 AULA 06: Qualidade; Teste de software; Uso/conceitos de ferramentas de suporte à análise e projetos orientados a objetos. Sumário 1. Bibliografia ............................................................................................................................ 1 2. Qualidade .............................................................................................................................. 1 3. Testes .................................................................................................................................. 12 4. Ferramentas CASE ............................................................................................................... 39 5. Lista das Questões Utilizadas na Aula. ................................................................................ 42 6. Gabarito. .............................................................................................................................. 60 Oi Oi pessoal, vamos agora estudar 03 assuntos que podem significar sua aprovação, pois são pouco cobrados e pouco estudados por causa disso. Vai que cai e você sabe! 1. Bibliografia 1. Pressman, R. S. Software Engineering. A practioner’s approach. 7ª Ed. McGraw 2. Sommerville, I. Software Engineering. 9ª Ed. Addison-Wesley. 2011. 2. Qualidade INTRODUÇÃO QUESTÃO 01 Prova: FUNIVERSA - 2010 - CEB - Analista de Sistemas Qualidade de software é uma área da engenharia de software que tem como objetivo garantir a qualidade pela definição e normatização dos processos de desenvolvimento de sistemas. O grupo de normas técnicas "ISO 9000/2000" define qualidade como o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para esses. Assinale a alternativa que melhor define "qualidade", dentro da área de engenharia de software. a) Conformidade de um sistema com os requisitos levantados no início do processo de desenvolvimento. b) Tempo de vida útil de um sistema e sua efetiva utilidade e aplicação. www.tiparaconcursos.net Página 2 de 60 c) É medida pelo máximo de tempo de uso entre falhas ocorridas (MTBF) no ciclo de vida do software. d) Desempenho medido pelo tempo de resposta no processamento e apresentação das informações. e) Equilíbrio entre o prazo de entrega do sistema e o atendimento mínimo dos requisitos levantados. Comentários: Pressman passa mais de meia hora enrolando enquanto tenta definir o conceito de qualidade, alegando que este é um conceito difícil de se definir, mas que todo mundo sabe e entende o que é. No fim das contas, após citar algumas definições de outros autores, ele afirma que a qualidade em um projeto de desenvolvimento de software engloba o grau de atendimento às funções e características específicas do modelo de requisitos. Seria então uma qualidade de conformidade, que avalia o quanto o sistema atende suas necessidades e metas de desempenho. Veja que estamos falando de qualidade de projeto de software. A qualidade de um software na versão atual do livro de Pressman é definida como: uma gestão de qualidade efetiva aplicada de modo a criar um produto útil que forneça valor mensurável para aqueles que o produzem e para aqueles que o utilizam. Assim, nossa questão peca um pouco ao pedir a qualidade sem esclarecer se fala em qualidade de projeto ou qualidade de software. No entanto, por eliminação chagamos facilmente em nosso gabarito. Gabarito: A QUESTÃO 02 Prova: FCC - 2012 - TCE-AM - Analista de Controle Externo - Tecnologia da Informação Considere o excerto a seguir: A engenharia de software pode ser considerada uma tecnologia, com métodos e ferramentas próprios, estruturada em camadas, do ponto de vista sistêmico. A abordagem sistêmica da engenharia de software deve se apoiar num compromisso organizacional com a qualidade que leve à cultura de um processo contínuo de aperfeiçoamento, e é essa cultura que, em última análise, leva ao desenvolvimento de abordagens cada vez mais efetivas. A camada de base em que a engenharia de www.tiparaconcursos.net Página 3 de 60 software se apoia é I e o “adesivo” que mantém unidas as camadas, estruturadas segundo a visão sistêmica, é o I I . As lacunas I e II devem ser preenchidas, correta e respectivamente, por: a) o foco na qualidade - processo b) o uso de ferramentas - controle de qualidade c) o controle de qualidade - método d) o controle de requisitos - projeto e) a qualidade de processo - método Comentários: O texto é de Pressman, que nos apresenta as seguintes camadas da engenharia de software: Daí nossa camada base é a qualidade e o adesivo (que define e encadeia os métodos e ferramentas) é o processo. Gabarito: A CRITÉRIOS DE QUALIDADE QUESTÃO 03 Prova: FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual - Parte III - Tecnologia da Informação Relacione cada característica ou subcaracterística de qualidade de software da Coluna 1 com a frase que melhor a representa na Coluna 2. Coluna 1 1. Analisabilidade 2. Conformidade 3. Estabilidade 4. Funcionalidade 5. Recuperabilidade www.tiparaconcursos.net Página 4 de 60 Coluna 2 ( ) Está de acordo com padrões de portabilidade? ( ) Satisfaz as necessidades? ( ) É capaz de recuperar dados em caso de falha? ( ) Há grande risco quando se faz alterações? ( ) É fácil de encontrar uma falha, quando ocorre? Assinale a alternativa que indica a sequência correta, de cima para baixo. a) 2 - 4 - 3 - 5 - 1 b) 2 - 4 - 5 - 3 - 1 c) 3 - 1 - 2 - 4 - 5 d) 4 - 1 - 2 - 3 - 5 e) 4 - 2 - 5 - 1 - 3 Comentários: Bem, nossa questão é baseada na ISO 9126 a qual foca na qualidade do produto de software, propondo Atributos de Qualidade, distribuídos em seis características principais, com cada uma delas divididas em subcaracterísticas, a saber: Acho um pouco de falta de noção cobrar este nível de detalhamento, mas já que assim o fazem, precisamos nos armar. Achei um artigo no site linha de código com uma imagem com um bom resumo sobre cada característica / subcaracterística: www.tiparaconcursos.net Página 5 de 60 Daí vem a dica que serve para todas as listas de critérios de qualidade apresentados: avalie a necessidade de ficar remoendo nos conceitos, tendo em vista que suas definições são intuitivas. Atenha-se a saber o que cada padrão tem de critérios. Gabarito: B QUESTÃO 04 Prova: CESGRANRIO - 2012 - Chesf - Profissional de Nível Superior - Analista de Sistemas Dentre os atributos de um software de qualidade, incluem-se: a) controlabilidade, dependabilidade e eficiência b) controlabilidade, eficiência e manutenibilidade c) eficiência, imutabilidade e manutenibilidade d) eficiência, manutenibilidade e usabilidade e) imutabilidade, manutenibilidade e usabilidade Comentários: Não existem na ISO 9126: controlabilidade, dependabilidade e imutabilidade. Gabarito: D www.tiparaconcursos.net Página 6 de 60 QUESTÃO 05 Prova: FCC - 2012 - TJ-PE - Analista Judiciário - Análise de Sistemas No contexto dos atributos de qualidade de software, considere: I. A resiliência é a capacidade de o sistema voltar ao nível de desempenho anterior a falhas ou comportamento imprevisto de usuários, software ou hardware e recuperar os dados afetados, caso existam. II. O desempenho e uso de recursos referem-se à capacidade do sistema de alcançar tempos de resposta, latência, tempo de processamento, vazão, etc dentro doperíodo de tempo especificado e ao fato do software exigir mais ou menos recursos de acordo com suas condições de uso. III. A analisabilidade é o grau de facilidade, com qual seja possível procurar por deficiências no software ou por partes que devem ser modificadas para algum fim. As subcaracterísticas contidas nos itens I, II e III referem-se, respectivamente, aos atributos de qualidade a) funcionabilidade, confiabilidade e usabilidade. b) eficiência, manutenibilidade e portabilidade. c) funcionabilidade, usabilidade e manutenibilidade. d) confiabilidade, eficiência e manutenibilidade e) confiabilidade, eficiência e portabilidade. Comentários: Funcionabilidade é apenas uma tradução diferente do critério de funcionalidade. A primeira afirmativa está ligada à confiabilidade do software, em especial à sua recuperabilidade. A segunda fala em tempo de resposta e de utilização de recursos, que são as subcaracterísticas da eficiência. Por fim, a analisabilidade é uma subcaracterística da manutenibilidade. Gabarito: D QUESTÃO 06 Prova: FMP-RS - 2013 - MPE-AC - Analista - Tecnologia da Informação Nos modelos de qualidade de software, derivados de normas ISO, foram estabelecidos critérios fundamentais de um software para medir sua qualidade. Qual das alternativas abaixo NÃO é um desses critérios. a) Confiabilidade (Reliability). b) Manutenção (Maintenability). www.tiparaconcursos.net Página 7 de 60 c) Eficiência (Efficiency). d) Baixo custo (Low Cost). e) Segurança (Security). Comentários: Baixo custo não é critério de qualidade!!! Em tempo, confiabilidade e eficiência são facilmente identificados como critérios da ISO 9126. Manutenção é apenas uma tradução mal feita, pois o nome correto seria manutenibilidade. Já Security é o nome original em ingles da subcaracterística de "segurança de acesso" do critério de funcionalidade. Gabarito: D QUESTÃO 07 Prova: IADES - 2013 - EBSERH - Analista de Tecnologia da Informação - Teste e Qualidade De acordo com o padrão de qualidade ISO 9126, são identificados seis atributos fundamentais da qualidade. Sobre o tema, assinale a alternativa correta. a) A usabilidade diz respeito à quantidade de tempo, que o software fica disponível para uso. b) A eficiência é o grau com que o software satisfaz às necessidades declaradas. c) A disponibilidade é o grau de tempo em que o software permanece no ar para utilização d) A portabilidade é a facilidade com a qual um software pode ser transportado de um ambiente para outro. e) A confidencialidade é a capacidade de manter partes do software, em sigilo, só sendo permitido o conhecimento, por parte de pessoas autorizadas. Comentários: Os erros saltam aos olhos. Usabilidade é facilidade de uso! Eficiência relaciona-se com a velocidade e uso de recursos. Disponibilidade nem existe na ISO 9126 e confidencialidade é a imunidade a falhas. Gabarito: D QUESTÃO 08 Prova: FGV - 2010 - DETRAN-RN - Programador Assinale a alternativa que NÃO contém somente atributos para características externas e internas do modelo de qualidade de software, definido na ISO/IEC 9126-1: a) Funcionalidade, confiabilidade, usabilidade. www.tiparaconcursos.net Página 8 de 60 b) Funcionalidade, confiabilidade, eficiência. c) Funcionalidade, confiabilidade, alta gerência. d) Funcionalidade, usabilidade, portabilidade. e) Eficiência, manutenibilidade, portabilidade. Comentários: Alta gerência não pe critério de qualidade. Gabarito: C QUESTÃO 09 Prova: UFPR - 2010 - UFPR - Analista de Tecnologia da Informação Na avaliação da qualidade de software, corretitude é: a) a quantidade de recursos de computação e de código exigida para que um programa execute a sua função. b) o esforço exigido para modificar um programa operacional. c) a medida com que um programa satisfaz sua especificação e cumpre os objetivos visados pelo cliente. d) o esforço exigido para localizar e reparar erros num programa. e) o esforço para aprender um programa, operá-lo, preparar a entrada e interpretar a saída dos dados. Comentários: Aqui estamos tratando dos fatores de qualidade de McCall e Cavano. que avaliam o software em três pontos distintos: Transição do Produto, Revisão do Produto e Operação do Produto. A corretitude é um deles (sendo que no Pressman foi traduzida como "correção"). Vamos conhecer os fatores: I - Com relação à operação do produto (Características Operacionais). Corretitude: Medida na qual o software satisfaz as especificações e objetivos visados pelo cliente. www.tiparaconcursos.net Página 9 de 60 Confiabilidade: Avalia o quanto um programa executa sua função pretendida com a precisão exigida. Eficiência: É a quantidade de recursos computacionais e de código exigida para que um programa execute sua função, com total precisão, visando realizar a operação de forma 100% segura. Integridade: Medida na qual, controla-se o acesso ao software e aos dados (observe que não bate com o conceito que conhecemos da segurança da informação). Usabilidade: Mede a facilidade para a utilização do software. II - Com relação à revisão do produto (Habilidade para ser alterado). Manutenção: O esforço exigido para localizar e reparar erros em um programa. Flexibilidade: O esforço utilizado para realizar uma alteração no software, Testabilidade: Esforço necessário para testar um programa para garantir que este atende suas funcionalidades. III - Transição do produto (Adaptabilidade a novos ambientes). Portabilidade: Mede a facilidade com que um produto pode ser movido para outra plataforma, ou software. Reusabilidade: Medida na qual o software, ou parte dele, poder ser reusado em outros softwares. Interoperabilidade: O software é capaz de ser acoplado ao outro. Gabarito: C QUESTÃO 10 Prova: FCC - 2011 - TCE-PR - Analista de Controle - Informática Segundo a ISO/IEC 12119:1994, dentre os requisitos de qualidade de um produto está sua descrição. Um dos objetivos básicos da descrição do produto é o de servir de base para os testes do produto. Dentre os itens que compõe a descrição do produto estão a) declarações de usabilidade, declarações de eficiência e declarações de suporte e treinamento. b) identificadores, declarações de funcionalidade e declarações de confiabilidade. c) declarações de manutenibilidade, declarações de portabilidade e declarações de consistência. www.tiparaconcursos.net Página 10 de 60 d) declarações de funcionalidade, declarações de manutenibilidade e declaração de suporte e treinamento. e) declarações de usabilidade, declarações de consistência e indicadores. Comentários: Existe apenas a versão internacional "monolingual" em inglês. Acho que a banca errou a mão na dificuldade desta questão. A norma tem como objetivo estabelecer os requisitos de qualidade de um software tipo pacote e também fornecer instruções para testar este software em relação aos requisitos definidos. Ela não trata de processos de produção de software, somente de pacotes de software na forma como são oferecidos e liberados para uso. De acordo com a norma, um pacote de software deve ser composto pelos seguintes itens: descrição do produto, documentação do usuário, programa e dados. A descrição e a documentação do usuário formam a documentação do pacote. Nossa questão pede o que temos na descrição do produto. Pois bem, temos: requisitos gerais sobre o conteúdo da descrição do produto, identificadores e iindicações, declaração sobre confiabilidade, declaração sobre usabilidade, declaração sobre eficiência,declaração sobre manutenibilidade e declaração sobre portabilidade. Não aconselho ninguém a ir a fundo na norma. Vamos parar por aqui não é? Gabarito: B PLANO DE QUALIDADE QUESTÃO 11 Prova: FCC - 2012 - MPE-PE - Analista Ministerial - Informática Sobre os itens que devem ser incluidos em uma estrutura preliminar para um plano de qualidade de software, considere: I. Uma introdução ao produto, contendo uma descrição do produto, seu mercado pretendido e as expectativas de qualidade do produto. II. Planos do produto, com datas críticas de release e responsabilidades para o produto, junto com os planos para a distribuição e prestação de serviço do produto. III. Descrições de processo. Os processos de desenvolvimento e serviço são padrões que devem ser usados para o gerenciamento e desenvolvimento de produto. IV. Os riscos mais importantes que podem afetar a qualidade do produto e as ações que devem ser tomadas ao lidar com eles. www.tiparaconcursos.net Página 11 de 60 É correto incluir os itens: a) II e IV, apenas. b) I, II e III, apenas. c) I, III e IV, apenas. d) I, II, III e IV. e) II e III, apenas. Comentários: O planejamento da qualidade, de acordo com o Sommerville, significa a construção de um plano de qualidade. O plano deve conter a definição de qualidade do software a ser construído e como esta será avaliada. Sommerville cita Humphrey (1989), que sugere as 4 afirmativas da questão como desejáveis em um plano de qualidade. Gabarito: D MEDIDAS DE QUALIDADE QUESTÃO 12 Prova: CESGRANRIO - 2010 - Petrobrás - Analista de Sistemas Júnior - Processos de Negócios Tanto no paradigma orientado a objetos quanto no paradigma estruturado, existem diversas técnicas úteis para averiguar se um sistema de software foi bem projetado. No primeiro, essas medidas são aplicáveis a classes, e no segundo, são aplicáveis a módulos. Quais, dentre os termos apresentados a seguir, são medidas de qualidade de projeto aplicáveis em ambos os paradigmas? a) Fan-in, fan-out e herança. b) Encapsulamento, herança e coesão. c) Coesão, acoplamento e polimorfismo. d) Fan-in, fan-out e acoplamento. e) Coesão, acoplamento e polimorfismo. Comentários: Sommerville apresenta um quadro com métricas que são aplicáveis em ambos os paradigmas de programação cobrados na questão. Neste quadro temos: 1. Fan-in/Fan-out (fan-in é o número de métodos ou funções que chamam determinada função enquanto que fan-out é o número de métodos ou funções chamados por uma função). www.tiparaconcursos.net Página 12 de 60 2. Tamanho do Código. 3. Complexidade Ciclomática (é uma medida da complexidade do fluxo de controle de um programa). 4. Tamanho de Identificadores (medida do tamanho dos identificadores do programa, nomes muito grandes podem indicar dificuldades para manutenções futuras). Acoplamento e coesão, são métricas que já conhecemos e que podem ser aplicadas em ambos os paradigmas. Gabarito: D 3. Testes INTRODUÇÃO QUESTÃO 13 Prova: CESGRANRIO - 2010 - Petrobrás - Analista de Sistemas Júnior - Processos de Negócios Uma das principais atividades do processo de teste de um ciclo de vida de um projeto qualquer é a) projetar testes que tratem da especificação de procedimentos externos ao computador, tais como: captação das informações, identificação das partes interessadas e distribuição das saídas. b) projetar o processo de teste criando casos de teste, rotinas de teste e, eventualmente, desenvolvendo programas que fazem o teste de forma automática. c) analisar e definir testes através da manipulação de ferramentas de processos usadas especialmente para obtenção de requisitos de teste de software, tais como: CMMI, BPM e ISO 9001:2000. d) produzir testes e o manual de especificação do uso do sistema que é utilizado para ensinar o usuário a manipular o produto final do software. e) testar as unidade de software na fase de operação e manutenção do sistema e utilizar os resultados como métricas para eventuais ajustes em projetos anteriores. Comentários: Bem, vamos analisar cada alternativa em separado: a) projetar testes que tratem da especificação de procedimentos externos ao computador, tais como: captação das informações, identificação das partes interessadas e distribuição das saídas. Os testes servem para fazer duas avaliações. A www.tiparaconcursos.net Página 13 de 60 primeira é: estamos construindo o software solicitado pelo cliente, ou seja, os requisitos que foram levantados estão sendo corretamente implementados? Já a segunda avaliação está relacionada à forma como o software está sendo construindo. Ou seja, se a análise e o projeto do software foram obedecidos na etapa de codificação. Assim sendo, nossa querida disciplina se teste se preocupa com os aspectos internos do sistema. Não existes testes para verificar se o usuário sabe o que está digitando ou se ele está aproveitando as saídas do sistema. Além disso, não existe teste que identifique partes interessadas. Alternativa errada. b) projetar o processo de teste criando casos de teste, rotinas de teste e, eventualmente, desenvolvendo programas que fazem o teste de forma automática. Exato, estamos falando de 03 coisas afetas ao processo de teste de software. Em engenharia de software, caso de teste é um conjunto de condições usadas para teste de software. Ele pode ser elaborado para identificar defeitos na estrutura interna do software, através de situações que exercitem adequadamente todas as estruturas utilizadas na codificação; ou ainda, garantir que os requisitos do software que foi construído sejam plenamente atendidos. Podemos utilizar a ferramenta de casos de uso para criar e rastrear um caso de teste, facilitando assim identificação de possíveis falhas. O caso de teste deve especificar a saída esperada e os resultados esperados do processamento. Numa situação ideal, no desenvolvimento de casos de teste, se espera encontrar o subconjunto dos casos de teste possíveis com a maior probabilidade de encontrar a maioria dos erros. As rotinas de testes são os procedimentos que irão concretizar a realização do caso de teste, sendo que a automatização destes casos de teste é uma prática comum. Sommerville nos apresenta o seguinte modelo de processo de testes: Ou seja, o processo começa com o projeto e geração dos casos de teste, depois os dados de teste são preparados e rodados com o programa, gerando os resultados www.tiparaconcursos.net Página 14 de 60 dos testes, que são comparados com o planejamento inicial previsto no caso de teste, resultando, por fim, nos relatórios de testes. c) analisar e definir testes através da manipulação de ferramentas de processos usadas especialmente para obtenção de requisitos de teste de software, tais como: CMMI, BPM e ISO 9001:2000. Tá viajando geral, a disciplina de testes se preocupa em escrever os casos de teste, aplicá-los e verificar os resultados. Não se define testes com o auxílio de CMMI, BPM ou ISO 9001:2000. Alternativa errada. d) produzir testes e o manual de especificação do uso do sistema que é utilizado para ensinar o usuário a manipular o produto final do software. Produção de material é na etapa de implantação do sistema, em processos de software mais rigidos como o RUP. Em metodologias ágeis, a criação ocorre ao longo do processo de desenvolvimento. Ou seja, não é objetivo da disciplina de testes criar manuais de utilização do sistema. Alternativa errada. e) testar as unidade de software na fase de operação e manutenção do sistema e utilizar os resultados como métricaspara eventuais ajustes em projetos anteriores. Os testes ocorrem antes da entrada em operação do sistema. Alternativa errada. Gabarito: B QUESTÃO 14 Prova: FCC - 2013 - DPE-SP - Agente de Defensoria - Analista de Sistemas O teste de software constitui-se em uma etapa importante no ciclo de desenvolvimento de software. Uma das características mais importantes de um conjunto de testes de software, adequadamente planejados, é a) provar a correção integral no programa sob teste. b) ter alta probabilidade de detectar erros no programa sob teste. c) ter grande redundância, a fim de testar mais de uma vez cada linha do programa sob teste. d) ser de alta complexidade, pois assim pode-se cobrir todo o programa sob teste com apenas um teste. e) ser ocultado da equipe de desenvolvimento do software, pois esta pode querer impedir sua aplicação. www.tiparaconcursos.net Página 15 de 60 Comentários: Indo direto, um bom conjunto de casos de teste terá como característica a alta probabilidade de detectar erros no programa, pois este é o seu objetivo primário. Encontrar todos os erros de um programa é impossível, devido aos custos associados. Ter grande redundância não é uma boa ideia, pois é impossível testar todas as linhas de um programa. Assim, é preferível que se tenha um grande range, realizando testes em extensas áreas do código, do que testar mais de uma vez uma mesma região do programa. Testes não devem ser complexos, pois perderia-se muito tempo no desenvolvimento de casos de testes, nem devem ser ocultados da equipe de desenvolvimento. Antes, alguns tipos de testes são executados pelo próprio desenvolvedor na medida em que vai criando o código do programa. Gabarito: B QUESTÃO 15 Prova: FCC - 2011 - TRE-PE - Analista Judiciário - Análise de Sistemas Com relação aos testes de software, é correto afirmar: a) Um princípio muitas vezes adotado ao testar um software é o de Pareto. Ele afirma que existe um forte desequilíbrio entre causas e efeitos, entre esforços e resultados e entre ações e objetivos alcançados. b) Testes sempre podem mostrar a ausência de erros. c) Para que o resultado de um teste de software seja confiável, é preciso garantir que os casos de teste utilizados cubram um número reduzido de possibilidades de execução. d) Um software que produz saídas corretas deve ser aprovado, pois isso demonstra que todos os erros foram corrigidos. e) Um programador deve testar seu próprio código porque facilmente conseguirá criar um caso de teste que rompe com a lógica de funcionamento do seu código. Comentários: Analisando cada alternativa: a) Um princípio muitas vezes adotado ao testar um software é o de Pareto. Ele afirma que existe um forte desequilíbrio entre causas e efeitos, entre esforços e resultados e entre ações e objetivos alcançados. Esta é uma ideia lançada por www.tiparaconcursos.net Página 16 de 60 Pressman quando fala de qualidade de software. Segundo este autor, um processo de garantia de qualidade de um software deve ter seu início na coleta de informações sobre erros provenientes de testes de software e suas causas associadas. Daí ele utiliza o princípio de pareto para inferir que 80% dos defeitos de um sistema estão relacionados à 20% das causas possíveis (causas vitais). Assim, os esforços e ações devem ser concentradas para resolver os problemas associados a estas causas. Alternativa correta. b) Testes sempre podem mostrar a ausência de erros. Nada disso, Sommerville nos apresenta um texto de Dijkstra: "Testes podem somente mostrar a presença de erros, não a ausência". Alternativa errada. c) Para que o resultado de um teste de software seja confiável, é preciso garantir que os casos de teste utilizados cubram um número reduzido de possibilidades de execução. Nada disso, lembra daquela boba de "redundância em testes" apresentada em uma questão anterior? Pois é, nossos casos de testes não devem ser redundantes nem devem cobrir um número reduzido de possibilidades de execução. Ou seja, não se deve escrever casos de testes distintos, mas que utilizem a mesma entrada de dados no programa. Alternativa errada. d) Um software que produz saídas corretas deve ser aprovado, pois isso demonstra que todos os erros foram corrigidos. É impossível corrigir todos os erros de um software. Alternativa errada. e) Um programador deve testar seu próprio código porque facilmente conseguirá criar um caso de teste que rompe com a lógica de funcionamento do seu código. Isto é valido em pequena escala, quando o programador está testando um método ou uma classe pequena de um programa. Quando avançamos nos testes e precisamos testar a lógica do programa como um todo, uma equipe de desenvolvimento e aplicação de testes deve entrar em ação. Gabarito: A VERIFICAÇÃO E VALIDAÇÃO www.tiparaconcursos.net Página 17 de 60 QUESTÃO 16 Prova: CESGRANRIO - 2010 - Petrobrás - Analista de Sistemas Júnior - Processos de Negócios No contexto da Engenharia de Software, a verificação e a validação são conjuntos de atividades que a) envolvem o uso de inspeções técnicas, cujo objetivo é verificar características funcionais de um produto de software, tais como desempenho e usabilidade. b) asseguram a inexistência de erros de lógica no códigofonte de um produto de software. c) são de uso exclusivo entre si e correspondem a verificar se o produto de software que está sendo construído atende às expectativas do usuário. d) são aplicadas após a finalização da etapa de projeto (design) e se limitam às etapas de implementação e de testes. e) são opcionalmente auxiliadas por ferramentas CASE ou pela construção de protótipos. Comentários: Pressman nos fala que as atividades de testes de software encontram-se dentro do contexto de uma etapa maior: a verificação e a validação. Para este autor, a verificação é o conjunto de tarefas que garantem que um software implementa corretamente uma funcionalidade. Já a validação se refere a um conjunto diferente de tarefas que garantem que o software construído atendem os requisitos do cliente. Boehm nos traz as duas frases famosas da verificação e validação: Verificação: "Nós estamos construindo o produto da maneira correta?" Validação: "Nós estamos construindo o produto certo?" Sommerville nos diz que a verificação tem como objetivo checar se o software atende os requisitos funcionais e não funcionais e coloca a validação como um processo mais genérico, pois esta tem como objetivo assegurar que as expectativas dos clientes foram alcançadas. Assim, a validação vai além da simples verificação se o software atende determinados requisitos, sendo, pois, essencial, tendo em vista que muitas vezes os requisitos não refletem as necessidades dos clientes (e isso só é descoberto no fim de uma iteração). www.tiparaconcursos.net Página 18 de 60 As alternativas a até d são absurdas e não apresentam nenhuma relação com V&V. A única opção viável é a alternativa e que fala no uso de ferramentas case para automatização dos testes e o uso de protótipos, que podem ser usados nas primeiras iterações do desenvolvimento no processo de validação das funcionalidades levantadas junto aos usuários e demais partes interessadas no sistema. Gabarito: E QUESTÃO 17 Prova: FGV - 2010 - FIOCRUZ - Tecnologista em Saúde - TI - Sistemas de Informação No que diz respeito aos sistemas de software, teste é um conjunto de atividades que podem ser planejadas antecipadamente e conduzidas sistematicamente. Um tipo I de teste se refere ao conjunto de atividades quegarante que o software implementa corretamente uma função específica, associado à construção do produto de forma correta ou não, enquanto um tipo II se refere a um conjunto de atividades diferente que garante que o software construído corresponde aos requisitos do cliente, associado à construção do produto certo. Esses testes do tipo I e II são denominados, respectivamente: a) depuração e homologação. b) homologação e aceitação. c) aceitação e verificação. d) verificação e validação. e) validação e depuração. Comentários: Testes de verificação buscam verificar se uma funcionalidade foi implemetada corretamente, sem erros ou bugs. Já a validação visa garantir que as funcionalidades desenvolvidas estão de acordo com o especificado originalmente, se os requisitos do cliente foram atendidos, sendo necessários testes de validação para tanto. Gabarito: D www.tiparaconcursos.net Página 19 de 60 TESTES DE UNIDADE, INTEGRAÇÃO E SISTEMA QUESTÃO 18 Prova: CESGRANRIO - 2008 - BNDES - Profissional Básico - Especialidade - Análise de Sistemas - Suporte No contexto de engenharia de software, testes de software podem ser decompostos numa série de passos que devem ser executados seqüencialmente. Considerando a arquitetura de software convencional, o primeiro passo deve ser o teste de a) estresse. b) integração. c) sistema. d) unidade. e) validação. Comentários: O processo de software pode ser visto como uma espiral, conforme figura a seguir extraída de Pressman: Nossa leitura desta figura deve ser a seguinte: inicialmente os engenheiros de sistemas definem os grandes objetivos do sistema. Na sequência, os requisitos são levantados, a arquitetura é definida e o sistema é codificado. Pois bem, para cada uma dessas etapas, temos uma etapa atrelada de testes. No vortex da espiral temos os testes de unidade, que se concentram em cada unidade (uma classe, uma funcionalidade etc.), sendo analisado o código-fonte. Na sequência, temos os testes de integração (ou de componentes, segundo Sommerville), onde o foco é a arquitetura do software desenhada. Nos testes de validação, os requisitos são www.tiparaconcursos.net Página 20 de 60 validados junto ao software que já foi construído. Finalmente, os testes de sistema analisam o sistema como um todo. Os testes de unidade verificam cada componente individualmente, garantindo que cada um funciona individualmente. Estes testes fazem uso pesado de técnicas que exercitam caminhos do fluxo do programa, buscando garantir o máximo de cobertura e de detecção de erros. Já durante os testes de integração, técnicas para testes de arquitetura são utilizadas. Nossa questão pergunta qual o primeiro tipo de teste que deve ser aplicado no contexto de uma arquitetura de software convencional, que é, logicamente, o teste de unidade. Gabarito: D QUESTÃO 19 Prova: FCC - 2012 - TCE-AM - Analista de Controle Externo - Tecnologia da Informação Sobre teste de software considere: I. Uma estratégia de teste que é escolhida por grande parte das equipes de software adota uma visão incremental do teste, começando com o teste de unidades individuais de programa, avançando para testes projetados a fim de facilitar a integração das unidades e culmina com testes que exercitam o sistema construído. II. O teste de unidade focaliza o esforço de verificação na menor unidade de projeto do software - o componente ou módulo de software. Usando a descrição de projeto no nível de componente como guia, caminhos de controle importantes são testados para descobrir erros dentro dos limites do módulo. III. O teste de unidade é normalmente considerado um apêndice ao passo de codificação. O projeto de teste de unidade pode ser realizado antes que o código seja iniciado ou depois de o código-fonte ter sido gerado. IV. O teste de integração é uma técnica sistemática para construir a arquitetura do software enquanto, ao mesmo tempo, conduz testes para descobrir erros associados às interfaces. O objetivo é, a partir de componentes testados no nível de unidade, construir uma estrutura de programa determinada pelo projeto. Está correto o que se afirma em a) I, II, III e IV. www.tiparaconcursos.net Página 21 de 60 b) I, II e IV, apenas. c) II, III e IV, apenas. d) III e IV, apenas. e) I e III, apenas. Comentários: Todas as quatro afirmativas estão corretas. A afirmativa I apresenta a espiral de Pressman: teste de unidade, de integração e de sistema. A afirmativa II nos mostra o conceito de teste de unidade. No que concerne à afirmativa III, por sua simplicidade e importância, o teste de unidade é quase sempre projetado e aplicado pelo próprio desenvolvedor. Quando ele é projetado antes, temos a famosa prática (muitas vezes promovida a um processo de software em si mesma) do desenvolvimento orientado a testes. Neste caso, o teste é projetado antes da escrita do pedaço de código relacionado. Apesar de estar muito na moda esta prática, nada impede de se projetar o teste depois de pronto o código. Por fim, a afirmativa IV apresenta o conceito correto de teste de integração. Gabarito: A QUESTÃO 20 Prova: FCC - 2012 - TRT - 11ª Região (AM) - Analista Judiciário - Tecnologia da Informação Considere: O objetivo é executar o sistema sob o ponto de vista de seu usuário final, varrendo as funcionalidades em busca de falhas em relação aos objetivos originais. Os testes são executados em condições similares àquelas que um usuário utilizará no seu dia- a- dia de manipulação do sistema. A afirmativa refere-se ao teste de a) aceitação. b) sistema. c) unidade. d) operação. e) integração. www.tiparaconcursos.net Página 22 de 60 Comentários: O teste de sistema é a última etapa de testes, normalmente envolvendo testes de validação do sistema entregue. Normalmente, se cria um ambiente de homologação onde o software é instalado e testado pelo usuário final. Gabarito: B QUESTÃO 21 Prova: FCC - 2011 - INFRAERO - Analista de Sistemas - Desenvolvimento e Manutenção Analise os itens a seguir sobre as estratégias de teste para softwares convencionais: I. Uma estratégia de teste que é escolhida normalmente por uma boa parte das equipes de software adota uma visão incremental do teste, começando com o teste de unidades individuais de programa, avançando para testes projetados a fim de facilitar a integração das unidades e culmina com testes que exercitam o sistema construído. II. O teste de unidade focaliza o esforço de verificação na maior unidade de projeto do software: o componente ou módulo de software. III. O teste de unidade enfoca a lógica interna de processamento e as estruturas de dados dentro dos limites de um componente. IV. No teste de unidade, a interface do módulo é testada para garantir que a informação flui adequadamente para dentro e para fora da unidade de programa que está sendo testada. Está correto o que consta em a) I, II, III e IV. b) I e II, apenas. c) I, II e III, apenas. d) II, III e IV, apenas. e) I, III e IV, apenas. Comentários: Vamos analisar cada afirmativa separadamente: I. Afirmativa Correta (são as 03 etapas do processo de teste). II. O teste de unidade focaliza o esforço de verificação na maior unidade de projeto do software: o componente ou módulo de software. Na verdade, o componente ou o módulo é a menor unidade de projeto do software. www.tiparaconcursos.net Página 23 de 60 III. O teste de unidade enfoca a lógica interna de processamento e asestruturas de dados dentro dos limites de um componente. Correto, foi o que vimos anteriormente. IV. No teste de unidade, a interface do módulo é testada para garantir que a informação flui adequadamente para dentro e para fora da unidade de programa que está sendo testada. Exato, via de regra, um caso de teste é construído tendo como base dados de teste que servirão de entrada para a unidade testada, sendo avaliado todo o fluxo de execução dentro da unidade até o término da execução do módulo e verificação se a saída do processamento foi adequada. Gabarito: E QUESTÃO 22 Prova: FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário - Tecnologia da Informação Sobre os processos de teste de software, considere: I. Em um processo de desenvolvimento iterativo, o teste de sistema concentra-se no teste de um incremento que será entregue ao cliente. II. No teste de integração é feito o planejamento de uma série de testes em que a carga é constantemente aumentada até que o desempenho do sistema torne-se aceitável. III. A única meta do teste de software é descobrir falhas ou defeitos no software que apresenta comportamento incorreto, não desejável ou em não conformidade com sua especificação. Está correto o que consta em a) I, apenas. b) I, II e III. c) I e II, apenas. d) II e III, apenas. e) III, apenas. Comentários: Novamente, vamos analisar cada afirmativa: I. Em um processo de desenvolvimento iterativo, o teste de sistema concentra-se no teste de um incremento que será entregue ao cliente. Exato, o teste de sistema www.tiparaconcursos.net Página 24 de 60 ocorre ao término de uma iteração, essencialmente validando o que está sendo entregue ao cliente. II. No teste de integração é feito o planejamento de uma série de testes em que a carga é constantemente aumentada até que o desempenho do sistema torne-se aceitável. Não, o teste de integração avalia a integração entre os módulos. III. A única meta do teste de software é descobrir falhas ou defeitos no software que apresenta comportamento incorreto, não desejável ou em não conformidade com sua especificação. Lembra da verificação e da validação? Enquanto que a verificação tem como objetivo descobrir falhas no software, a validação é a outra vertente dos testes, buscando avaliar se o software produzido atende as necessidades do cliente. Afirmativa incorreta. Gabarito: A QUESTÃO 23 Prova: FCC - 2010 - BAHIAGÁS - Analista de Processos Organizacionais - Análise de Sistemas Na direção dos tipos de teste focados pela engenharia de software, os testes de integração cuidam dos tópicos associados com os problemas de verificação a) da engenharia de sistemas. b) do projeto do software. c) dos códigos de programa. d) dos requisitos funcionais. e) dos requisitos não funcionais. Comentários: Teste de unidade avalia o código de um módulo ou componente. Os testes de integração avaliam a arquitetura do software, descobrindo problemas relacionados ao projeto do software. Por fim, os testes de sistema analisam se os requisitos definidos pelo cliente foram corretamente atendidos. Gabarito: B QUESTÃO 24 Prova: FCC - 2010 - TRT - 20ª REGIÃO (SE) - Analista Judiciário - Tecnologia da Informação No contexto da estratégia para o teste de um projeto, os estágios de teste desempenham um papel importante. O teste que é aplicado a componentes do www.tiparaconcursos.net Página 25 de 60 modelo de implementação para verificar se os fluxos de controle e de dados estão cobertos e funcionam conforme o esperado, é o teste a) do desenvolvedor. b) independente. c) de integração. d) de sistema. e) unitário. Comentários: Os testes de unidade, que avaliam determinado componente no que concerne aos fluxos de controle e de dados, também são conhecidos como testes unitários. Gabarito: E TESTES CAIXA-PRETA E CAIXA-BRANCA QUESTÃO 25 Prova: CESGRANRIO - 2010 - Petrobrás - Analista de Sistemas Júnior - Engenharia de Software Testar é uma disciplina de suma importância para a engenharia de software. A literatura divide os tipos de testes em duas grandes categorias: teste de caixa preta e teste de caixa branca. Sobre esta classificação, pode-se afirmar que I - testes de interfaces são classificados como de caixa branca; II - testes de caixa preta são também chamados de teste comportamental, onde o foco são os requisitos funcionais do software; III - testes de caixa preta são complementares aos testes de caixa branca, uma vez que contemplam diferentes classes de erros. É correto o que se afirma em a) I, apenas. b) I e II, apenas. c) I e III, apenas. d) II e III, apenas. e) I, II e III. Comentários: Outra classificação bastante cobrada é a que separa os testes de caixa- preta dos testes de caixa-branca. www.tiparaconcursos.net Página 26 de 60 Os testes de caixa-preta são testes conduzidos na interface do software. Eles examinam aspectos fundamentais do sistema, sem se importar com a lógica interna. Os testes de caixa-branca trabalham examinando os detalhes da lógica do programa. Assim, os fluxos do programa e a colaboração entre componentes são testados por meio da avaliação de loops e testes de condição. Pessoal, os testes de caixa-branca (ou de caixa de vidro) procuram garantir que os fluxos possíveis em um módulo foram todos testados ao menos uma vez, as decisões lógicas foram testadas para condições verdadeiras e falsas, os loops foram testados em seus limites inferior e superior de repetição e as estruturas de dados foram testadas quanto às suas validades. Pessoal, os testes de caixa-preta (ou comportamentais) focam nos requisitos funcionais do sistema. Com eles, você define um conjunto de entradas para testar as funcionalidades e verifica a corretude das saídas com relação às funcionalidades testadas. Estes testes procuram encontrar: erros nas funcionalidades, erros da interface, erros nas estruturas de dados e no acesso a bases de dados externas, erros de performance ou comportamentais e erros de inicialização e finalização dos sistemas. Diferentemente dos testes de caixa-branca, os testes de caixa-preta tendem a ser aplicados no fim do processo de desenvolvimento. Pra cristalizar o conhecimento, olha o texto existente sobre o tema na disciplina de testes do RUP: "As ferramentas de caixa branca utilizam o conhecimento do código, dos modelos de design ou de outros materiais de origem para implementar e executar os testes. As ferramentas de caixa preta só utilizam os casos de uso ou a descrição funcional do objetivo do teste. Enquanto as ferramentas de caixa branca têm conhecimento de como o objetivo do teste processa a solicitação, as ferramentas de caixa preta utilizam as condições de entrada e saída para avaliar o teste." Isto posto, vamos analisar as afirmativas da questão: I - testes de interfaces são classificados como de caixa branca. Um teste de caixa- branca vai analisar o código de um módulo ou componente por dentro. Não é o caso do teste de interface, que avalia a interação homem-máquina. Afirmativa errada. II - testes de caixa preta são também chamados de teste comportamental, onde o foco são os requisitos funcionais do software. Exato. Foi o que aprendemos acima. www.tiparaconcursos.net Página 27 de 60 III - testes de caixa preta são complementares aos testes de caixa branca, uma vez que contemplam diferentes classes de erros. É isto mesmo pessoal, enquanto o teste de caixa branca avalia o código por dentro, buscando erros no código ou na lógica interna, o teste caixa-preta analisa asfuncionalidades do módulo ou componente testado, verificando inconsistências na saída de dados. Gabarito: D QUESTÃO 26 Prova: CESGRANRIO - 2010 - BACEN - Analista do Banco Central - Área 1 Em determinado formulário de um sistema WEB, é apresentado um campo de entrada que deve aceitar números inteiros de 10 a 500. De acordo com a análise de valor limite, que valores devem ser testados? a) 9, 10, 500, 501 b) 0, 455, 1000 c) -1, 20, 490, 1010 d) -10, 0, 455 e) -32768, -1024, 18, 455, 492, 1024, 32768 Comentários: Existem quatro técnicas utilizadas em testes caixa-preta apresentadas por Pressman: 1. Testes baseados em grafos: São testes que verificam se objetos apresentam os relacionamentos corretos com outros objetos, colocando os objetos como nós de um grafo e os vértices representando os relacionamentos. 2. Particionamento de equivalência: é um método que divide as entradas de um programa em partições (ou classes de dados) como base para a definição dos testes. 3. Análise de valor-limite: Parte do pressuposto de os erros acontecem mais nos limites de valores aceitos por determinado atributo, desta forma são selecionados os valores limites para derivação dos testes. 4. Teste de matriz ortogonal: Aplicados a problemas nos quais o domínio de entrada é relativamente limitado (o número de parâmetros de entrada é pequeno e os valores que cada um desses parâmetros pode assumir é discreto e limitado), mas não é possível considerar testes exaustivos com todas as possíveis combinações dos valores de entrada. www.tiparaconcursos.net Página 28 de 60 A técnica da análise do valor-limite escolhe, como vimos, os valores limites, o que corresponde ao primeiro valor fora do range de valores possíveis e o último valor dentro do range, em ambas as extremidades. Assim, se uma determinada entrada de dados aceita valores de 10 a 500. Serão construídos testes para avaliar as seguintes entradas: 9, 10, 500 e 501. Gabarito: A QUESTÃO 27 Prova: CESGRANRIO - 2008 - Petrobrás - Analista de Sistemas Júnior - Processos de Negócios Um importante aspecto da elaboração de casos de testes para um sistema em desenvolvimento é a escolha dos valores de entrada e das saídas previstas dos casos de teste. Escolhas baseadas apenas em valores típicos, em geral, são incapazes de revelar todas as falhas da implementação. É necessário identificar conjuntos de valores que possuam características comuns, do ponto de vista das funcionalidades a serem testadas, como, por exemplo, "números negativos", "números com mais dígitos do que o previsto", "strings sem brancos", "arrays de um só elemento", além de prever casos de teste cobrindo a totalidade destes conjuntos, e projetar, para cada conjunto, casos de teste com valores nos limites e próximos ao ponto médio do conjunto. Esses conjuntos são denominados a) partições de equivalência. b) grupos de controle. c) espaços amostrais. d) classes características. e) intervalos de testes. Comentários: As partições de equivalência são estratos construídos em cima dos ranges de valores de cada entrada. Como descrito na questão, são conjunto de valores com características comuns e que juntos representam todas as possibilidades de valores associados a determinada entrada. Gabarito: A www.tiparaconcursos.net Página 29 de 60 QUESTÃO 28 FGV - 2010 - FIOCRUZ - Tecnologista em Saúde - TI - Sistemas de Informação Um tipo de teste de sistemas de software é também chamado de “teste comportamental” e focaliza os requisitos funcionais do software, permitindo ao engenheiro de software derivar conjuntos de condições de entrada que vão exercitar plenamente todos os requisitos funcionais de um programa. Esse tipo de teste tende a ser aplicado durante os últimos estágios do teste e tenta encontrar erros em funções incorretas ou omitidas, de interfaces, de estrutura de dados ou de acesso à base de dados externa, de comportamento ou desempenho de iniciação e término. Além disso, é um tipo de teste que despreza, de propósito, a estrutura de controle, sendo a atenção focalizada no domínio da informação. Esse tipo é conhecido por teste: a) caixa-preta. b) caixa-branca. c) de fluxo de dados. d) de caminho básico. e) de lógica composta. Comentários: Nosso enunciado apresenta uma visão bem completa do teste de caixa- preta ou comportamental. Gabarito: A QUESTÃO 29 Prova: FGV - 2010 - BADESC - Analista de Sistemas - Desenvolvimento de Sistemas O teste de software que projeta casos de testes derivados do conhecimento da estrutura e da implementação do software é conhecido por: a) teste de releases. b) teste caixa-claro. c) teste caixa-preta. d) teste de aceitação. e) teste de integração. www.tiparaconcursos.net Página 30 de 60 Comentários: Professor, acabamos de aprender que o tipo de teste que estuda a estrutura interna de um componente ou módulo é o teste caixa-branca. Cadê ele entre as alternativas? Ele está sendo representado por um dos seus apelidos, teste caixa- claro. Gabarito: B QUESTÃO 30 Prova: FGV - 2009 - MEC - Analista de Teste de Qualidade O teste de software que garante o atendimento aos requisitos, ou seja, que verifica se os requisitos estão corretamente codificados, são conhecidos como: a) teste de conformidade. b) teste de requisitos. c) teste caixa-branca. d) teste funcional. e) teste estutural. Comentários: Lembre-se sempre de que o teste de caixa-branca avalia a estrutura interna de um pedaço de código enquanto que o teste caixa-preta (ou funcional) é utilizado para avaliação do atendimento dos requisitos pelo software. Gabarito: D QUESTÃO 31 Prova: FCC - 2012 - TJ-RJ - Analista Judiciário - Análise de Sistemas No que se refere a testes de software, é correto afirmar que a) o teste de operação é a fase onde é testada a ergonomia da interface de uso do software. b) o teste da caixa preta (teste funcional), baseia-se em analisar os arquivos de log do sistema procurando por mensagens de funcionamento inconsistente. c) um teste bem sucedido é um teste que não encontra nenhum erro no software. d) o teste da caixa branca (teste estrutural), baseia-se em testar as estruturas do código fonte, como comandos condicionais e de repetição. e) um caso de teste é uma categoria de possíveis resultados na execução de testes. Comentários: Vamos analisar cada alternativa: a) o teste de operação é a fase onde é testada a ergonomia da interface de uso do software. O Teste de Operação é conduzido pelos administradores do ambiente final www.tiparaconcursos.net Página 31 de 60 onde o sistema ou software entrará em ambiente produtivo. Nessa fase de teste devem ser feitas simulações para garantir que a entrada em produção do sistema será bem sucedida. Envolve testes de instalação, simulações com backup e restore das bases de dados. Em alguns casos um sistema entrará em produção para substituir outro e é necessário garantir que o novo sistema continuará garantindo o suporte ao negócio. Ou seja, o teste de operação não tem nenhuma relação com testes de interface e a alternativa está errada. b) o teste da caixa preta (teste funcional), baseia-se em analisar os arquivos de log do sistema procurando por mensagens de funcionamento inconsistente. Nada a ver né pessoal? Alternativa errada. c) um teste bem sucedido é um teste que não encontra nenhum erro no software. Pelo contrário, um teste do bom é aquele que encontra erros, pois erros são garantidos de existir em um sistema :) d) o teste da caixa branca (testeestrutural), baseia-se em testar as estruturas do código fonte, como comandos condicionais e de repetição. Perfeito! Análise das estruturas internas do código, incluindo os ifs, whiles e fors da vida! e) um caso de teste é uma categoria de possíveis resultados na execução de testes. Nada disso! Os casos de teste são construídos previamente aos testes, sendo uma espécie de script para a execução dos testes. Gabarito: D QUESTÃO 32 Prova: FCC - 2012 - TRT - 11ª Região (AM) - Técnico Judiciário - Tecnologia da Informação NÃO É uma técnica típica de teste de caixa preta: a) teste de tabela de decisão. b) teste de todos os pares. c) teste de integração. d) teste de caso de uso. e) tabelas de estado de transição. www.tiparaconcursos.net Página 32 de 60 Comentários: Os testes caixa-preta são aplicáveis em todas as fases de teste, incluindo nos testes de integração. Ou seja, teste de integração não é uma técnica de testes, mas uma das etapas da espiral do processo de testes. As técnicas utilizadas em testes caixa-preta são: 1. Testes baseados em Grafo 2. Particionamento de equivalência 3. Análise de valor limite 4. Teste de tabela de decisão 5. Teste de todos os pares 6. Tabelas de estado de transição 7. Teste de caso de uso Gabarito: C QUESTÃO 33 Prova: FCC - 2010 - TRT - 9ª REGIÃO (PR) - Técnico Judiciário - Tecnologia da Informação A técnica de teste de software, também chamada de comportamental, é a técnica de a) caixa-preta. b) caixa-branca. c) ciclo. d) condição. e) fluxo de dados. Comentários: Teste de caixa-preta ou teste comportamental. Gabarito: A TIPOS DE TESTE QUESTÃO 34 Prova: CESGRANRIO - 2007 - EPE - Analista de Gestão Corporativa Júnior - Área Tecnologia da Informação Devido ao aumento da demanda por aplicações que funcionem 24 horas por dia na Internet, um software deve ser capaz de manter-se em operação após uma determinada falha. A estratégia de teste que melhor garante essa característica é o(a): a) teste de estresse. www.tiparaconcursos.net Página 33 de 60 b) teste de recuperação. c) teste unitário. d) debugging. e) simulação combinatória. Comentários: Os testes de recuperação avaliam a capacidade de um sistema continuar funcionando após determinada falha. Encontramos este tipo de teste no SWEBOK, o guia de boas práticas para desenvolvimento de software. Vamos aproveitar para apresentar um resumo do capítulo de testes do guia. Para o SWEBOK, testar é uma atividade realizada para avaliação da qualidade do produto, para melhorar este e identificar defeitos e problemas. O teste de software é uma verificação dinâmica do comportamento do programa real em relação ao comportamento experado, por meio de um conjunto finito de casos de teste, escolhidos de um domínio provavelmente infinito de situações. Quanto ao alvo, os testes podem ser classificados como: de unidade, de integração e de sistema. Quanto ao objetivo, os testes podem ser classificados como: testes de aceitação (ou de validação), testes de instalação (posterior à validação e verificam a instalação do software), testes alpha e beta (logo após a release, o software pode ser apresentado a um subconjunto pequeno de potencial usuários, dentro da empresa - testes alpha - ou externamente - testes beta), testes funcionais (ou de correção - testes caixa-preta para avaliação do atendimento às especificações), testes de confiança (geração de casos de testes randomicamente com o objetivo de definir um grau de confiança para o software), testes de regressão (reteste do sistema após release), testes de performance (testam se o sistema atende os requisitos de performance), testes de estresse (testam o software na sua carga máxima de operação, ou acima dela), testes back-to-back, testes de recuperação (avaliam a capacidade do sistema se recuperar de um desastre), testes de configuração (testa as diferentes configurações possíveis de um software) e testes de usabilidade (avaliam a facilidade de uso e aprendizado, bem como a capacidade do sistema se recuperar de um erro realizado pelo usuário). www.tiparaconcursos.net Página 34 de 60 O SWEBOK também fala das técnicas para a realização de testes, apresentando algumas outras classificações dos testes Quanto à intuição e a experiência do engenheiro de software, os testes podem ser classificadas como ad-hoc, onde os testes são derivados a partir dos conhecimentos do engenheiro, e como exploratórios, onde os testes são planejados dinamicamente, na medida em que o desenvolvimento vai avançando, num processo de aprendizado junto com a implementação do sistema. Os testes caixa-preta podem ser classificados em: particionamento de equivalência, análise do valor limite, tabela de decisão (estas tabelas representam uma correlação entre entradas e saídas), máquinas de estados finitos (modelando o sistema como uma máquina de estados finitos e definindo-se testes para os estados e transições), testes de especificações formais e testes randômicos. Já os testes de caixa-branca podem ser: testes baseados no fluxo de dados ou testes de grafos de fluxos. Além destes dois grandes conjuntos de testes, o SWEBOK fala também em testes baseados em falhas, sendo estes dividido em técnicas para advinhar falhas e em teste de mutações (onde versões ligeiramente modificadas são testadas juntamente com a versão oficial do software, buscando-se encontrar diferenças nos testes e a condenação das versões mutantes). Já quanto a natureza da aplicação, os testes podem ser: orientados a objetos, baseados em componente, web, testes de GUI, testes de programas concorrentes, testes de protocolos, de sistemas de tempo real e de sistemas críticos. Na sequência, o SWEBOK apresenta algumas medidas e formas de avaliar os testes, como a densidade das falhas, avaliações de confiança etc. e finaliza falando do processo de testes. Ao falar do processo, são apresentadas as seguintes considerações de ordem prática: 1. Atitude colaborativa durante a execução das atividades de tes. 2. Definição dos objetivos dos testes. 3. Organização do processo por meio do gerenciamento. 4. Documentação das atividades de teste. www.tiparaconcursos.net Página 35 de 60 5. Organização das equipes de teste (com membros internos e externos) 6. Estimativa de custo e esforço das atividades. 7. Finalização dos testes atreladas a medidas de qualidade do sistema. 8. Reúso de testes e uso de padrões de testes. Quanto ao processo em si, o SWEBOK apresenta as seguintes etapas: 01. Planejamento. 02. Geração dos casos de teste. 03. Desenvolvimento do ambiente de testes. 04. Execução. 05. Avaliação dos resultados. 06. Reporte e log de problemas nos testes. 07. Rastreamento dos defeitos encontrados no software. Gabarito: B QUESTÃO 35 Prova: CESGRANRIO - 2011 - BNDES - Profissional Básico - Análise de Sistemas - Desenvolvimento Um gerente de projeto está preocupado com o desempenho de um sistema de informação que está prestes a ser implantado, uma vez que existe uma expectativa de acesso de muitos usuários. Que tipo de teste, mais especificamente, pode ser realizado para avaliar o desempenho desse sistema, dadas condições operacionais variáveis, tais como número de usuários e transações? a) Carga b) Funcional c) Integração d) Unidade e) Usabilidade Comentários: O Teste de Carga (ou Teste de Volume) é usado para verificar o limite de dados processados pelo software até que ele não consiga mais processa-lo, sendo usado para validare avaliar a aceitabilidade dos limites operacionais de um sistema de www.tiparaconcursos.net Página 36 de 60 acordo com cargas de trabalho variáveis, ao passo que o sistema em teste permanece constante. Gabarito: A QUESTÃO 36 Prova: CESGRANRIO - 2007 - TCE - RO - Analista de Informática O teste alfa (alpha test) é conduzido pelo: a) cliente, no seu próprio ambiente. b) cliente, no ambiente do desenvolvedor. c) analista de teste, no ambiente do desenvolvedor. d) analista de teste, no seu próprio ambiente. e) desenvolvedor, no seu próprio ambiente. Comentários: O período entre o término do desenvolvimento e a entrega é conhecido como fase alfa e os testes executados nesse período, como testes alfa. O teste alfa é conduzido pelo cliente no ambiente do desenvolvedor, com este registrando erros e problemas de uso decorrentes da utilização do sistema pelo usuário. Completada a fase alfa de testes, são lançadas a grupos restritos de usuários, versões de teste do sistema denominadas versões beta. O teste beta também é um teste de aceitação voltado para softwares cuja distribuição atingirá grande número de usuários (ainda que sendo um grupo restrito). O teste beta é conduzido em uma ou mais instalações do cliente, pelo usuário final do software. Diferente do teste alfa, o desenvolvedor geralmente não está presente. Assim, o teste beta é uma aplicação do software num ambiente que não pode ser controlado pelo desenvolvedor. O cliente registra todos os problemas (reais ou imaginários) que são encontrados durante o teste beta e os relata ao desenvolvedor em intervalos regulares. Com o resultado dos problemas relatados durante os testes beta, os engenheiros de software fazem modificações e depois se preparam para liberar o produto de software para toda a base de clientes. Gabarito: B www.tiparaconcursos.net Página 37 de 60 QUESTÃO 37 Prova: CESGRANRIO - 2010 - EPE - Analista de Gestão Corporativa - Tecnologia da Informação Um novo sistema de informação interno de uma empresa está sendo testado por um grupo restrito de usuários, fora do ambiente dos desenvolvedores. Isso caracteriza o teste a) de unidade. b) de usabilidade. c) alfa. d) beta. e) de stress. Comentários: Como vimos, testes realizados no ambiente do cliente, por um grupo restrito de usuários, são os testes beta. Gabarito: D QUESTÃO 38 Prova: CESGRANRIO - 2006 - Petrobrás - Analista de Sistemas Pleno - Engenharia de Software Uma estratégia de teste de software integra métodos de projeto de casos de teste em uma série bem planejada de passos, que resultam na construção bem sucedida de um software. O objetivo principal do projeto de casos de teste é originar um conjunto de testes que tenha a maior probabilidade de detectar erros no software. Sobre as estratégias e técnicas de teste de software, assinale a afirmativa correta. a) O teste de caixa-preta enfoca a estrutura de controle do programa, tendo como exemplos o teste de caminho básico, que faz uso de grafos de para originar um conjunto de testes linearmente independentes que vão garantir a cobertura e a análise de valor-limite, que investiga a habilidade do programa de manipular dados no limite de aceitabilidade. b) O teste de caixa-branca são projetados para validar os requisitos funcionais de funcionamento interno de um programa, tendo como exemplos o particionamento de equivalência, que divide o domínio de entrada em classes de dados que provavelmente exercitam função específica do software e o teste de matriz www.tiparaconcursos.net Página 38 de 60 ortogonal, que fornece um método eficiente e sistemático para testar sistemas com pequeno número de parâmetros de entrada. c) O teste de integração focaliza o esforço de verificação na menor unidade de projeto do softwar e, usando a descrição de projeto no nível de componente como guia, caminhos de controle importantes são testados para descobrir erros dentro dos limites do módulo. O teste fumaça é um exemplo de abordagem de teste de integração. d) O teste de recuperação é um teste de sistema que força o software a falhar de diversos modos e verifica se a recuperação é adequadamente realizada, seja ela feita de forma automática (realizada pelo próprio sistema) ou requerendo intervenção humana. e) A fase alpha de testes é realizada ainda no processo de desenvolvimento, nas instalações do desenvolvedor com os usuários finais e utilizando um ambiente controlado, enquanto a beta é realizada entre o término do desenvolvimento e a entrega do produto, nas instalações do desenvolvedor com um ambiente controlado pelo usuário final. Na fase gama são gerados pela equipe de desenvolvimento casos de teste que são realizados por grupos restritos de usuários finais. Comentários: Vamos analisar cada alternativa: a) O teste de caixa-preta enfoca a estrutura de controle do programa, tendo como exemplos o teste de caminho básico, que faz uso de grafos de para originar um conjunto de testes linearmente independentes que vão garantir a cobertura e a análise de valor-limite, que investiga a habilidade do programa de manipular dados no limite de aceitabilidade. Trata-se do teste caixa-branca. b) O teste de caixa-branca são projetados para validar os requisitos funcionais de funcionamento interno de um programa, tendo como exemplos o particionamento de equivalência, que divide o domínio de entrada em classes de dados que provavelmente exercitam função específica do software e o teste de matriz ortogonal, que fornece um método eficiente e sistemático para testar sistemas com pequeno número de parâmetros de entrada. Trata-se do teste caixa-preta. c) O teste de integração focaliza o esforço de verificação na menor unidade de projeto do softwar e, usando a descrição de projeto no nível de componente como www.tiparaconcursos.net Página 39 de 60 guia, caminhos de controle importantes são testados para descobrir erros dentro dos limites do módulo. O teste fumaça é um exemplo de abordagem de teste de integração. Trata-se do teste de unidade. d) O teste de recuperação é um teste de sistema que força o software a falhar de diversos modos e verifica se a recuperação é adequadamente realizada, seja ela feita de forma automática (realizada pelo próprio sistema) ou requerendo intervenção humana. Afirmativa correta. O teste de recuperação pode tanto testar se um sistema aguenta uma falha ou se ele consegue se recuperar satisfatoriamente de uma falha. e) A fase alpha de testes é realizada ainda no processo de desenvolvimento, nas instalações do desenvolvedor com os usuários finais e utilizando um ambiente controlado, enquanto a beta é realizada entre o término do desenvolvimento e a entrega do produto, nas instalações do desenvolvedor com um ambiente controlado pelo usuário final. Na fase gama são gerados pela equipe de desenvolvimento casos de teste que são realizados por grupos restritos de usuários finais. O erro da questão está na conceituação da fase gama. Esta é a "fase" que se sucede a implantação de um software pouco testado e cheio de bugs, cujos testes serão realizados para valer em produção para desespero do cliente. Gabarito: D 4. Ferramentas CASE QUESTÃO 39 Prova: FCC - 2012 - MPE-AP - Técnico Ministerial - Informática Em relação às funcionalidades oferecidas por ferramentas CASE (Computer-Aided Software Engineering), é possível dizer que são utilizadas para a I. uniformização do processo de desenvolvimento e das atividades realizadas. II. reutilização de vários artefatos ao longo dos projetos, permitindo o aumentoda produtividade. III. automação de atividades, destacando-se a geração de código e de documentação. IV. modelagem de processos de negócio. Está correto o que consta em a) I, II, III e IV. b) I, II e IV, apenas. www.tiparaconcursos.net Página 40 de 60 c) III e IV, apenas. d) II, III e IV, apenas. e) I, II e III, apenas. Comentários: Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abrange todas ferramentas baseadas em computadores que auxiliam atividades de engenharia de software, desde análise de requisitos e modelagem até programação e testes. Podem ser consideradas como ferramentas automatizadas que tem como objetivo auxiliar o desenvolvedor de sistemas em uma ou várias etapas do ciclo de desenvolvimento de software. As ferramentas CASE auxiliam a padronização do processo de software, pois o processo precisa ser adaptado à ferramenta. Elas via de regra possuem uma biblioteca de classes padrão, o que culmina em reaproveitamento de código. A função mais importante de uma ferramenta CASE, na minha opinião, é apresentada na afirmativa III, que versa sobre a escrita automática de código. Por fim, modelagem de processos de negócio está relacionada mais à ferramentas de design que se utilizam de BPMN. Gabarito: E QUESTÃO 40 Prova: CESGRANRIO - 2010 - ELETROBRÁS - Analista de Sistemas Júnior - Engenharia de Software As ferramentas CASE auxiliam nas atividades de engenharia de software, desde a análise de requisitos e modelagem até a programação e os testes. Entre as vantagens do uso de ferramentas CASE, NÃO se aplica a a) qualidade no produto final. b) produtividade e a agilidade para tomada de decisão. c) compatibilidade das ferramentas CASE no mercado. d) menor quantidade de códigos de programação. e) melhoria e a redução de custos na manutenção. Comentários: Podemos citar as seguintes vantagens para as ferramentas CASE: Qualidade no produto final, Produtividade, Agilizar o tempo para tomada de decisão, Menor quantidade de códigos de programação, Melhoria e redução de custos na www.tiparaconcursos.net Página 41 de 60 manutenção, Agilidade no retrabalho do software e Maior facilidade para desenvolvimento. A única desvantagem entre as alternativas é a c. Cada ferramenta CASE de mercado se utiliza de seus padrões, bibliotecas, ferramentas e documentos de processo, o que dificulta a integração de projetos realizados com ferramentas CASE distintas. Gabarito: C QUESTÃO 41 Prova: FCC - 2010 - TRE-RS - Técnico Judiciário - Programação de Sistemas NÃO constitui uma vantagem do uso de ferramentas CASE: a) Agilizar o tempo para tomada de decisão. b) Menor quantidade de códigos de programação. c) Melhoria e redução de custos na manutenção. d) Treinamento para utilização. e) Ganho de produtividade. Comentários: As ferramentas CASE necessitam de treinamento para se tornarem produtivas no contexto de uma empresa. Claramente, isto não é uma vantagem. Gabarito: D QUESTÃO 42 Prova: FCC - 2012 - MPE-PE - Técnico Ministerial - Informática Uma primeira classificação das ferramentas CASE pode ser efetuada com base nas fases do processo de desenvolvimento às quais as ferramentas se aplicam. As ferramentas Upper-Case são aplicações a) que se especializaram no suporte ao trabalho em equipe, e implementam funcionalidades de gestão de versões (como CVS, Subversion etc.). b) utilizadas na fase de implementação (ferramentas de desenho técnico, de edição e compilação de código e de testes). c) que compreendem apenas ferramentas para a definição de regras de testes e a geração de scripts para posterior execução de testes. d) que se especializaram na fase de concepção do software (ferramentas de análise e especificação e/ou modelagem de requisitos). www.tiparaconcursos.net Página 42 de 60 e) cuja principal funcionalidade se destina a facilitar as tarefas de gestão e coordenação dos projetos, como o planejamento e estimativa de tempos, custos e recursos. Comentários: as ferramentas CASE podem ser classificadas em: Front End ou Upper CASE: apóia as etapas iniciais de criação dos sistemas: as fases de planejamento, análise e projeto do programa ou aplicação. Back End ou Lower CASE: dão apoio à parte física, isto é, a codificação testes e manutenção da aplicação. I-CASE ou Integrated CASE: classifica os produtos que cobrem todo o ciclo de vida do software, desde os requisitos do sistema até o controle final da qualidade. Nosso gabarito é a alternativa D. Gabarito: D 5. Lista das Questões Utilizadas na Aula. QUESTÃO 01 Prova: FUNIVERSA - 2010 - CEB - Analista de Sistemas Qualidade de software é uma área da engenharia de software que tem como objetivo garantir a qualidade pela definição e normatização dos processos de desenvolvimento de sistemas. O grupo de normas técnicas "ISO 9000/2000" define qualidade como o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para esses. Assinale a alternativa que melhor define "qualidade", dentro da área de engenharia de software. a) Conformidade de um sistema com os requisitos levantados no início do processo de desenvolvimento. b) Tempo de vida útil de um sistema e sua efetiva utilidade e aplicação. c) É medida pelo máximo de tempo de uso entre falhas ocorridas (MTBF) no ciclo de vida do software. d) Desempenho medido pelo tempo de resposta no processamento e apresentação das informações. e) Equilíbrio entre o prazo de entrega do sistema e o atendimento mínimo dos requisitos levantados. www.tiparaconcursos.net Página 43 de 60 QUESTÃO 02 Prova: FCC - 2012 - TCE-AM - Analista de Controle Externo - Tecnologia da Informação Considere o excerto a seguir: A engenharia de software pode ser considerada uma tecnologia, com métodos e ferramentas próprios, estruturada em camadas, do ponto de vista sistêmico. A abordagem sistêmica da engenharia de software deve se apoiar num compromisso organizacional com a qualidade que leve à cultura de um processo contínuo de aperfeiçoamento, e é essa cultura que, em última análise, leva ao desenvolvimento de abordagens cada vez mais efetivas. A camada de base em que a engenharia de software se apoia é I e o “adesivo” que mantém unidas as camadas, estruturadas segundo a visão sistêmica, é o I I . As lacunas I e II devem ser preenchidas, correta e respectivamente, por: a) o foco na qualidade - processo b) o uso de ferramentas - controle de qualidade c) o controle de qualidade - método d) o controle de requisitos - projeto e) a qualidade de processo - método QUESTÃO 03 Prova: FEPESE - 2010 - SEFAZ-SC - Auditor Fiscal da Receita Estadual - Parte III - Tecnologia da Informação Relacione cada característica ou subcaracterística de qualidade de software da Coluna 1 com a frase que melhor a representa na Coluna 2. Coluna 1 1. Analisabilidade 2. Conformidade 3. Estabilidade 4. Funcionalidade 5. Recuperabilidade Coluna 2 ( ) Está de acordo com padrões de portabilidade? ( ) Satisfaz as necessidades? ( ) É capaz de recuperar dados em caso de falha? www.tiparaconcursos.net Página 44 de 60 ( ) Há grande risco quando se faz alterações? ( ) É fácil de encontrar uma falha, quando ocorre? Assinale a alternativa que indica a sequência correta, de cima para baixo. a) 2 - 4 - 3 - 5 - 1 b) 2 - 4 - 5 - 3 - 1 c) 3 - 1 - 2 - 4 - 5 d) 4 - 1 - 2 - 3 - 5 e) 4 - 2 - 5 - 1 - 3
Compartilhar