Considere as seguintes afirmativas sobre testes em programas...
I. O conceito de herança leva a algumas dificuldades; por exemplo, se alterações forem feitas em uma classe pai ou superclasse, será difícil testar as subclasses individualmente e isolar o erro para uma classe.
II. O fluxo de controle é caracterizado pela passagem de mensagens entre objetos, e o fluxo de controle não muda de um objeto para outro. Consequentemente, o fluxo de controle sequencial dentro de uma classe é similar ao das funções, sendo mais indicado o uso de técnicas de teste tradicionais.
III. Em uma função, os parâmetros passados com dados globais determinam o caminho de execução em seu código. Mas, em um objeto, o estado a ele associado também influencia o caminho de execução, e os métodos de uma classe podem se comunicar entre si por meio desse estado. Consequentemente, para testar objetos, o estado de um objeto desempenha um papel importante.
Está correto o que se afirma em
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - I e III, apenas.
A questão aborda o tema de testes em programas orientados a objetos, enfocando especialmente os desafios e particularidades que surgem devido aos conceitos de herança, fluxo de controle e estado dos objetos. Para resolver essa questão, é necessário ter conhecimento das características da programação orientada a objetos, como o conceito de herança, o fluxo de controle através da passagem de mensagens e a importância do estado do objeto nos métodos da classe.
A afirmativa I está correta porque a herança pode introduzir complexidade nos testes. Quando uma superclasse é modificada, todas as subclasses que herdam comportamentos ou atributos dessa superclasse podem ser afetadas. Isso torna o teste de subclasses individualmente mais desafiador, pois é necessário verificar como as alterações na superclasse impactaram cada subclasse, aumentando a complexidade para isolar e identificar erros.
A afirmativa II está incorreta porque o fluxo de controle em programas orientados a objetos é caracterizado pela passagem de mensagens entre objetos, e esse fluxo de controle pode, de fato, mudar de um objeto para outro. Isso difere do fluxo de controle sequencial comum em funções, pois a interação entre objetos pode levar a fluxos de controle não lineares e dinâmicos, o que significa que técnicas de teste tradicionais podem não ser suficientes ou ideais para testar programas orientados a objetos.
A afirmativa III está correta porque, em programação orientada a objetos, o estado do objeto desempenha um papel crucial nos caminhos de execução dos métodos. Diferente das funções, onde os parâmetros definem o comportamento, os métodos podem alterar ou depender do estado interno do objeto, que é mantido entre chamadas de métodos. Isso implica que para testar objetos eficientemente, é necessário considerar o estado do objeto, o que pode exigir uma abordagem de teste mais complexa e detalhada.
Portanto, as afirmativas I e III explicam corretamente algumas das dificuldades e considerações ao testar programas orientados a objetos, enquanto a afirmativa II apresenta uma compreensão equivocada do fluxo de controle em tais programas. Logo, a alternativa E é a correta, pois apenas as afirmativas I e III estão corretas.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GAB E
II - Um dos erros: "fluxo de controle não muda de um objeto para outro". O fluxo pode alterar de um objeto para o outro dependendo do estado desse objeto. Por exemplo, posso ter um IF que definirá se parte de uma estrutura de controle será executada
- I. O conceito de herança leva a algumas dificuldades; por exemplo, se alterações forem feitas em uma classe pai ou superclasse, será difícil testar as subclasses individualmente e isolar o erro para uma classe. Esta afirmativa está correta. A herança cria dependências entre classes. Se uma superclasse é modificada, as subclasses que herdam dela podem ser afetadas, exigindo que sejam retestadas. Isolar a causa de um erro pode ser mais complexo, pois pode estar na superclasse ou em como a subclasse a utiliza.
- II. O fluxo de controle é caracterizado pela passagem de mensagens entre objetos, e o fluxo de controle não muda de um objeto para outro. Consequentemente, o fluxo de controle sequencial dentro de uma classe é similar ao das funções, sendo mais indicado o uso de técnicas de teste tradicionais. Esta afirmativa está incorreta. Embora o fluxo de controle sequencial dentro de um método possa ser similar ao de uma função, a característica central da programação orientada a objetos é a passagem de mensagens e a colaboração entre objetos. O fluxo de controle muda de um objeto para outro à medida que as mensagens são enviadas e os métodos são invocados. Portanto, testar a interação entre objetos e o fluxo de controle que se estende por múltiplas classes é fundamental e requer técnicas de teste específicas para orientação a objetos, além das tradicionais.
- III. Em uma função, os parâmetros passados com dados globais determinam o caminho de execução em seu código. Mas, em um objeto, o estado a ele associado também influencia o caminho de execução, e os métodos de uma classe podem se comunicar entre si por meio desse estado. Consequentemente, para testar objetos, o estado de um objeto desempenha um papel importante. Esta afirmativa está correta. Em programação orientada a objetos, o comportamento de um objeto (ou seja, o caminho de execução de seus métodos) não depende apenas dos parâmetros de entrada, mas também do seu estado interno (os valores de seus atributos). Métodos diferentes podem acessar e modificar esse estado, influenciando o comportamento subsequente de outros métodos. Por isso, o teste de objetos deve considerar as diferentes sequências de operações que podem levar o objeto a diferentes estados, e como esses estados afetam o resultado das operações.
Estão corretas as afirmativas I e III.
By Futuro DEV Estável.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo