O teste de software vem crescendo imensamente nos últimos tempos e vem se tornando uma etapa fundamental até a entrega do software ao usuário final. Sendo assim, apresentamos duas técnicas relacionadas ao teste de software que auxiliam num resultado considerável. Sobre as definições anteriores, quais foram as técnicas abordadas?
Técnica Tradicional e Técnica Funcional.
Não existe uma técnica tradicional, somente a técnica funcional.
Técnica Funcional e Técnica Estrutural.
Correta. O objetivo dessas técnicas e critérios é realizar testes de forma clara e objetiva, conseguindo, assim, determinar em quais situações o software irá falhar.
Técnica Organizacional e Técnica de Verificação.
Incorreta. Não existem a Técnica Organizacional nem Técnica de Verificação.
Técnica Estrutural e Técnica Organizacional.
Incorreta. Não existe uma Técnica Organizacional, somente uma Técnica Estrutural.
Técnica Funcional e Técnica de Verificação.
Incorreta. Não existe uma Técnica de Verificação, somente uma Técnica Funcional.
O teste de software faz parte de todo o processo de desenvolvimento e tem como objetivo revelar erros para possível correção. Ao realizar testes em software, o testador trabalha com algumas atividades. Sobre essas atividades, a alternativa que indica corretamente duas delas é:
Avaliação da equipe e avaliação de módulos.
Incorreta. Avaliação da equipe não é uma das atividades. Avaliação de módulos, sim.
Avaliação da especificação de requisitos e avaliação de interface.
Correta. O profissional que trabalha com a realização dos testes trabalha com um vasto ramo de atividades, como avaliação da especificação de requisitos e projeto técnico, verificação de documentos, testes de performance e capacidade, avaliação de interface, avaliação de módulos e diversas outras que são fundamentais.
Testes de performance e capacidade e avaliação de programadores.
Avaliação de programadores não faz parte das atividades. Testes de performance e capacidade, sim.
Avaliação de projeto técnico e avaliação de irregularidades.
Incorreta. Avaliação de irregularidades não é uma das atividades. Avaliação de projeto técnico, sim.
Avaliação de interface e teste dimensional.
Incorreta. Teste dimensional não faz parte das atividades. Avaliação de interface, sim.
Testes de software possuem determinados processos que são fundamentais para que um software possa ser entregue conforme o solicitado pelas empresas/usuários. Esses processos possuem algumas características que podemos encontrar em qual das alternativas a seguir?
Estratégias, Execução de Testes Automáticos, Controle e Avaliação dos Resultados.
Incorreta. Estratégias e Testes Automáticos não fazem partes das características dos processos fundamentais do software.
Planejamento, Desenho dos Testes, Execução, Monitoração e Controle e Avaliação dos Resultados.
Correta. Os processos fundamentais do software possuem características como: Planejamento; Desenho dos Testes; Execução; Monitoração e Controle; e Avaliação dos Resultados.
Execução de Testes Simples, Monitoração dos Resultados e Controle dos Erros Encontrados.
Incorreta. Execução de Testes não faz parte dos processos fundamentais.
Execução de Análise de Requisitos, Planejamento Estrutural e Controle e Avaliação dos Resultados.
Incorreta. Execução de Análise de Requisitos e Planejamento Estrutural não fazem parte dos processos fundamentais.
Desenho dos Testes, Controle e Monitoramento de Usuários, e Avaliação dos Erros Encontrados.
Incorreta. Controle e Monitoramento de Usuários e Avaliação dos Erros Encontrados não fazem parte dos processos fundamentais.
O teste de software possui alguns conceitos fundamentais que devem estar compreendidos pelos testadores de software. Sobre os conceitos fundamentais, a alternativa que apresenta corretamente o conceito de Verificação é:
A verificação refere-se a um conjunto de tarefas que verificam se o software que foi criado atende às especificações que o cliente deseja.
Incorreta. A definição anterior diz respeito a validação.
A verificação refere-se, simplesmente, ao conjunto de tarefas que irão implementar corretamente uma determinada função do sistema.
Correta. As atividades de verificação se resumem em avaliar se o que foi planejado foi, devidamente, realizado. Assim, estão incluídos os requisitos, funcionalidades, documentação etc.
A verificação é utilizada para testar o sistema, sempre criando testes eficazes na validação e na identificação de defeitos.
Incorreta. A definição anterior diz respeito a desenhos de testes, dos processos fundamentais do teste.
É na verificação que iremos implementar e executar nossos testes. Para isso, serão criados roteiros de testes.
Incorreta. A afirmação diz respeito à definição de execução, dos processos fundamentais do teste.
A verificação auxilia o programador ou testador a conhecer seus objetivos.
Incorreta. A afirmação diz respeito à definição de planejamento, dos processos fundamentais do teste.
Um software é um programa que normalmente é desenvolvido para suprir e auxiliar o usuário a determinadas tarefas e necessidades do dia a dia. Para obter um software “redondo” é necessário aplicar testes de software. A alternativa que contempla corretamente o intuito de um teste de software é:
Demonstrar ao usuário que o software foi construído em tempo hábil.
Alternativa incorreta. O intuito é demonstrar se o software atende o que foi solicitado e se o sistema se comporta de maneira coerente.
Demonstrar se o software está de acordo e descobrir problemas de execução relacionados ao software.
Alternativa correta. Um dos intuitos de um teste de software é demonstrar ao desenvolvedor e ao cliente que ele atende a todos os requisitos ao que foi proposto; e, também, descobrir situações em que o sistema se comporta de maneira incorreta, incoerente ou ainda, de forma indesejável ao que foi especificado.
Demonstrar que o software precisa ser totalmente refeito após as descobertas de erros.
Alternativa incorreta. Não é necessário jogar tudo que foi feito fora, e sim adequar o que foi feito para como o que o usuário espera e se o sistema executa de forma adequada.
Demonstrar que o usuário sempre tem a razão quando começa a utilizar o software e encontra erros.
Alternativa incorreta. Podemos dizer que o usuário ele auxilia no encontro de erros, mas não que ele tem sempre a razão ao testar o software.
Demonstrar que o sistema não precisa ter a aplicação de testes muito coesos.
Alternativa incorreta. Um sistema sempre deve ter testes aplicados de forma coesa, e que encontrem possíveis problemas.
Existem várias técnicas que contemplam os testes de software, e cada uma pode ser aplicado em um determinado momento, ou em qualquer momento do desenvolvimento do software. A técnica do teste de integração é definida corretamente como:
Teste que realiza a descoberta de erros em partes unitárias do software produzido.
Alternativa incorreta. Esse tipo de teste são os testes unitários.
Teste para a descoberta de erros quando módulos, classes e outros são integrados com as interfaces.
Alternativa correta. É uma técnica utilizada para se construir a arquitetura de um software, e ao mesmo tempo, aplicar testes para a descoberta de erros quando integrados, e claro, com as suas interfaces.
Teste que verifica somente a integração com a interface do banco de dados utilizado.
Alternativa incorreta. Neste teste é trabalhado a integração de todos os módulo, classes do sistema, juntamente com a interface.
Teste que verifica a integração do software com o usuário final, ou seja, se o usuário interage corretamente com o software produzido.
Alternativa incorreta. O teste de integração visa a integração dos módulos/classes,e não a integração com o usuário.
Teste que trabalha com problemas relacionados a integração entre os desenvolvedores do software.
Alternativa incorreta. Não existe teste que verifica esse tipo de problema. A integração diz respeito à integração dos módulos; classes do sistema.
Esse tipo de teste está ligado a ações perceptíveis ao usuário. Desta forma, é verificada a funcionalidade do sistema como se o cliente estivesse de acordo com o que está sendo executado. Essa descrição trata da definição do teste de:
Unitário.
Alternativa incorreta. O teste unitário trata de verificação de erros em unidades do sistema.
Validação.
Alternativa correta. O Teste de Validação tem por finalidade validar algo. Se inicia ao término do teste de integração, quando os módulos da unidade já foram testados e o software está integrado e sem erros.
Integração.
Alternativa incorreta. O teste de integração verifica problemas na integração entre os módulos/classes do sistema.
Sistema.
Alternativa incorreta. O teste de sistema verifica problemas relacionados a segurança, esforço e outros.
Conexão.
Alternativa incorreta. Não existe um teste com esse nome.
No teste de sistema, temos técnicas como teste de recuperação, teste de segurança, esforço, desempenho e outros. Podemos dizer que esses tipos de testes se completam. A definição correta de teste de sistema está descrito na alternativa:
Teste de sistema é o teste que verifica as unidades separadas do sistema, a fim de encontrar erros.
Alternativa incorreta. Esse teste chama-se teste unitário.
Teste do sistema deve centrar-se em testar todas as interações entre objetos e componentes que compõem um sistema.
Alternativa correta. O teste de sistema é na realidade, uma série de diferentes testes que verificam se todos os componentes são compatíveis quando são integrados corretamente nesta versão do sistema.
Teste de sistema são teste que verificam a aceitação do sistema por parte do usuário final.
Alternativa incorreta. Esse teste chama-se teste de aceitação.
Teste de sistemas visam realizar a integração dos módulos/classes do sistemas a fim de verificar possíveis erros.
Alternativa incorreta. Esse tipo de teste chama-se teste de integração.
Teste de sistemas visam verificar se usuários e desenvolvedores estão integrados para a construção do software.
Alternativa incorreta. O intuito de testes de sistemas é verificar se todas as interações entre objetos e componentes que compõem um sistema.
O teste de aceitação visa revelar erros e omissões na definição dos requisitos do sistemas, e que desta forma, não atendem às necessidades dos usuários. Essa técnica possui três estratégias, que estão representadas na alternativa:
Teste de Fluxo de Dados e Teste Funcional.
Alternativa incorreta. Esses testes pertencem a técnica de testes de integração.
Teste de Aceitação Formal, Teste de Aceitação Informal e Teste Beta
Alternativa correta. Teste formal deve ser projetado como tudo o que é feito no sistema, com muito cuidado e muito detalhado, são subconjuntos dos testes de sistema. No teste informal, o testador individual determina o que e como fazer, se torna mais subjetivo do que o teste apresentado anteriormente. No este Beta, cada testador pode criar seu próprio ambiente de testes com funções, recursos e tarefas.
Teste de Recuperação e Teste de Segurança.
Alternativa incorreta. Esses testes pertencem a técnica de testes de sistema.
Teste Bottom-up e Teste Big-Bang.
Alternativa incorreta. Esses tipos de testes pertencem a técnica de testes de integração.
Teste de Disponibilização e Teste de Desempenho.
Alternativa incorreta. Esses tipos de testes pertencem a técnica de testes de sistemas.
Temos a existência de técnicas que trabalham com a parte funcional e a parte estrutural do sistema. Sobre a técnica funcional, ou ainda denominada teste de caixa-preta, a alternativa que melhor a define é:
Esta técnica baseia-se na análise dos laços de repetição existentes em todo software desenvolvido.
Alternativa incorreta. A análise dos laços de repetição acontece na técnica da caixa branca.
Esta técnica é baseada nos requisitos funcionais do software, com foco nos requisitos da aplicação, nas ações que ela deve desempenhar.
Alternativa correta. Esta técnica não está preocupada com o sistema age internamente ou o conteúdo do código, mas com o que é gerado como saída e entrada de dados.
Esta técnica analisa a estrutura de controle, ou seja, como é a estrutura de execução do sistema.
Alternativa incorreta. Esta técnica pertence a técnica de caixa branca.
Esta técnica analisa os fluxos de dados de acordo com a sua localização no sistema.
Alternativa incorreta. Este tipo de teste pertence a técnica de caixa branca.
Esta técnica trabalha com o desenvolvimento de software sem as especificações corretas do sistema.
Alternativa incorreta. Não existe uma técnica que trabalha com esse tipo de característica.
Neste teste, o testador tem total acesso à estrutura interna do sistema e assim possibilita que os testes sejam mais precisos. As características expostas se referem a uma técnica importante dos testes, e que está corretamente representada na alternativa:
Teste de Caixa Preta.
Alternativa incorreta. O conceito acima refere-se ao teste de caixa branca.
Teste de Caixa Branca.
Alternativa correta. Também conhecido como teste estrutural, nela o engenheiro pode criar casos de testes que garantem que todos os caminhos independentes foram exercitados ao menos uma vez e exercitam estruturas de dados internas para assegurar a validade.
Teste Funcional.
Alternativa incorreta. O conceito acima refere-se ao teste de caixa branca.
Teste Baseado em Grafos.
Alternativa incorreta. O conceito acima refere-se ao teste de caixa branca.
Teste de regressão.
Alternativa incorreta. O conceito acima refere-se ao teste de caixa branca.
É uma técnica que consiste na aplicação de versões recentes do software, a fim de verificar a ocorrência de novos defeitos em módulos do software que já foram testados. Esta técnica se refere ao teste de:
Recuperação.
Alternativa incorreta. A definição exposta diz respeito ao teste de regressão.
Regressão.
Alternativa correta. Nesta técnica novos componentes ou componentes que foram atualizados são verificados a procura de possíveis problemas com a integração a componentes antigos.
Desempenho.
Alternativa incorreta. A definição exposta diz respeito ao teste de regressão.
Restauração.
Alternativa incorreta. A definição exposta diz respeito ao teste de regressão.
Disponibilização.
Alternativa incorreta. A definição exposta diz respeito ao teste de regressão.
É um teste que verifica se o sistema possui robustez, disponibilidade e confiança diante de condições extremas. A alternativa que contempla corretamente tipo de teste definido é:
Regressão.
Alternativa incorreta. A definição acima diz respeito ao teste de estresse.
Estresse.
Alternativa correta. São consideradas condições de estresse o alto acesso de usuários simultâneos, limitações de recursos computacionais e volume excessivo de dados, o que faz com que haja muita perda de recursos.
Carga.
Alternativa incorreta. A definição acima diz respeito ao teste de estresse.
Segurança.
Alternativa incorreta. A definição acima diz respeito ao teste de estresse.
Desempenho.
Alternativa incorreta. A definição acima diz respeito ao teste de estresse.
Também conhecido como Travessia, esta é uma técnica que realiza um conjunto de revisões com a finalidade de melhorar a qualidade no desenvolvimento de softwares. Estamos nos referindo a que tipo de técnica:
Review
Incorreta, são práticas que também melhoram a qualidade, mas não são conhecidas como travessia.
Walkthrough.
Essa técnica possui características importantes, como avaliações, informações do produto, restrições e discussões sobre a validade do defeito e outros.
Revisões técnicas.
Incorreta, são práticas para encontrar defeitos e também visam melhorar a qualidade, porém não é conhecido como travessia.
Mocks
Incorreta, são ferramentas com o intuito de simular o real, mas não são conhecidos como travessia.
Frameworks
Incorreto, não são chamados de travessia.
A automação de testes é parte importante quando se trata de teste de software. Utilizar-se de todas as técnicas sempre trará benefícios ao produto final. Sobre automação de testes, a alternativa que indica corretamente a sua definição é:
É a execução de testes manuais em softwares a procura de determinados problemas.
Incorreto, automação de testes são testes automáticos.
É a utilização de softwares que controlam a execução de testes, aplicando, assim, possíveis estratégias.
São softwares que procuram as melhores estratégias para aplicar em softwares com a visão de encontrar problemas.
São estratégias para testes unitários aplicados por testadores diferentes.
Incorreto, não são aplicados por testadores diferentes e sim por softwares específicos e automatizados.
São testes que não podem ser realizados por qualquer pessoa integrante da equipe, mas somente por testadores.
Incorreto, são testes aplicados de forma automática por meio de softwares.
São estratégias que são pensadas antes da construção do software e que não podem ser alteradas no decorrer do projeto.
Incorreto, automação significa testar automaticamente uma parte do software utilizando estratégias.
Existem diversas ferramentas que auxiliam a automação de testes no mercado, e cada uma com características destinadas a alguns testes específicos. Sobre isso, a alternativa que menciona, ao menos, três tipos existentes de ferramentas é:
Aquisição de testes, medição estática e geradores.
Incorreto, pois aquisição de testes não é um tipo de ferramenta.
Aquisição de dados, medição dinâmica e simuladores.
Os tipos existentes são de aquisição de dados, medição estática, medição dinâmica, simuladores ou geradores, os que analisam o funcionamento de testes de caixa branca x caixa preta, baseados na especialização, ferramentas de registro/reprodução, medição de qualidade, monitoramento e cobertura, geradores de casos de testes e de comparação.
Medição de qualidade, monitoramento e medição anormal.
Incorreto, medição normal não é um tipo.
Comparação, especialização e gradual.
Incorreto, gradual não é um tipo de ferramenta.
Aquisição de métodos qualitativos, monitoramento e gerenciamento.
Incorreto, aquisição de métodos qualitativos e gerenciamento não são tipos de ferramentas.
Mocks são ferramentas importantes e que simulam o comportamento de objetos reais. Das alternativas a seguir, quais ferramentas mock são exemplos de ferramentas que utilizam a linguagem java.
Mock PP, Simple Teste e Mockito.
Incorreto, Mock PP e Simple Teste fazem parte de outras linguagens.
rMock, jMock e Mockito.
Como exemplos, foram citados em nosso capítulo as ferramentas jMock, EasyMock, rMock, SevenMock Mockito.
FlexMock, EasyMock e MockitNow.
FlexMock e MockitNow são ferramentas que se utilizam de outras linguagens.
Moq, rMock e Amop.
Incorreto, Amop e Moq são ferramentas que se utilizam da outras linguagens.
Mocha, jMock e SMock.
Incorreto, Mocha e SMock são exemplos que se utilizam de outras linguagens.