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
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
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.