terça-feira, 28 de outubro de 2014

Questões de Concurso: Protocolos de Roteamento

Nessa seção são listadas e discutidas algumas questões de concurso referentes a temas já abordados em publicações anteriores.

1. (CESPE, 2008, TCU) Em decorrência da manifestação, por parte do administrador, de que a rede da organização está sofrendo com problemas de roteamento, um analista avaliou minuciosamente o tráfego de pacotes, procurando identificar os protocolos de roteamento empregados. Com os dados de tráfego coletados, esse analista produziu um relatório que indicava apenas o fato de que estavam em uso, no interior da rede, os protocolos RIPv2 e OSPF. Um outro analista, após receber esse relatório, produziu um segundo relatório, no qual apontou o uso dos algoritmos de roteamento empregados pelos roteadores que implementam cada um dos protocolos indicados como origem dos problemas de roteamento na rede da organização. Nessa situação, o segundo analista agiu de modo tecnicamente correto, uma vez que protocolos de roteamento normalmente ditam quais algoritmos de roteamento são usados.


Gabarito: C

2. (CESPE, 2013, ANCINE) Ao se empregar a técnica por vetor de distância no roteamento por multicast, deve-se utilizar o protocolo DVMRP (distance vector multicast routing protocol), pois ele realiza a poda da árvore de forma recursiva.

Na verdade, o processo de poda do protocolo DVMRP ocorre por meio da técnica de repasse pelo caminho inverso (reverse path flooding), o qual não é necessariamente recursivo.
Gabarito: E

3. (CESPE, 2014, ANTAQ) O OSPF não utiliza protocolos de transporte como TCP e UDP. O OSPF gera os datagramas IP diretamente e utiliza, no campo protocolo do cabeçalho IP, o número 89, que, por convenção, representa o OSPF.

Diferente de outros protocolos de roteamento, como RIP e BGP, o OSFP não utiliza protocolos de transporte. Suas informações são enviadas diretamente utilizando-se a camada IP.
Gabarito: C

4. (CESPE, 2012, PEFOCE) Uma das vantagens do protocolo RIP v.1 é que sua tabela de roteamento considera tanto a distância entre os roteadores quanto o desempenho do caminho entre eles.

O RIP usa um único roteamento métrico, a contagem de hops (saltos) para medir a distância entre a fonte e uma rede de destino.
Gabarito: E

5. (CESPE, 2013, Telebrás) Caso o protocolo de roteamento OSPF esteja habilitado entre dois roteadores ligados por um mesmo link e que aceitam os parâmetros de comunicação do OSPF, esses roteadores passarão a ser vizinhos OSPF (OSPF neighbors).

Gabarito: C

6.  (CESPE, 2013, ANTT) O protocolo OSPF (open shortest path first) utiliza um algoritmo para traçar o caminho de menor custo e um broadcasting de informação do estado de enlace.

Segundo Kurose (2010,p.288),"O OSPF [...] é um protocolo de estado de enlace que usa broadcasting de informação de estado de enlace e um algoritmo de caminho de menor custo de Dijkstra."
Gabarito: C

Considerando a topologia de rede apresentada na figura, julgue os itens 7 e 8.


7. (CESPE, 2012, Banco da Amazônia) O RIPv1 é um dos protocolos de roteamento que pode ser implementado no switch 1.

Analisando a figura, repare que o switch 1 é de camada 2 (enlace de dados); logo não pode suportar qualquer algoritmo de roteamento, incluindo o RIP (independente da versão).
Gabarito: E

8. (CESPE, 2012, Banco da Amazônia) O switch 2 pode implementar o protocolo de roteamento OSPF.

O switch 2 é de camada 3 (layer 3). Essa classe de switch suporta roteamento. Nesse caso, é possível que se tenha roteamento por meio do OSPF.
Gabarito: C

9. (CESPE, 2012,TRE-RJ) Tanto no protocolo de roteamento OSPF quanto no RIP, a rota que um pacote de dados faz é sempre a mesma, já que os roteadores não percebem que há mais de um caminho para atingir o destino.

Com o OSPF é possível que se tenha rotas alternativas; quando os custos são os mesmos.
Gabarito: E

10. (CESPE, 2012, Banco da Amazônia) Empregado para interligar vários SAs (sistemas autônomos), o BGP utiliza uma porta UDP, não tendo, assim, de se ocupar da transmissão correta das informações de roteamento.

O BGP utiliza o TCP, não o UDP. Recordando:
- RIP: UDP porta 520;
- OSPF: não utiliza TCP ou UDP; utiliza diretamente IP com código de protocolo 89;

- BGP: TCP porta 179;
Gabarito: E

11. (CESPE, 2012, Banco da Amazônia) Uma das principais diferenças entre o BGP e o OSPF consiste no fato de o BGP possibilitar a implementação de diversas políticas de roteamento, enquanto o OSPF ocupa-se apenas da eficiência no encaminhamento dos pacotes.

Lembrando que: 
OSPF, IS-IS, RIP-> protocolos intradomínio
BGP-> protocolo interdomínio

Segundo Tanenbaum (2011,p.300),"Dentro de um único AS, OSPF e IS-IS são os protocolos normalmente utilizados. Entre os ASs, um protocolo diferente, chamado BGP (Border Gateway Protocol), é utilizado. Um protocolo diferente é necessário porque os objetivos de um protocolo intradomínio e interdomínio não são os mesmos. Tudo o que um protocolo intradomínio tem a fazer é mover pacotes da forma mais eficiente possível da origem ao destino. Ele não precisa se preucupar com a política. Ao contrário, os protocolos de roteamento interdomínio precisam se preucupar muito com a política."
Gabarito: C


12. (CESPE, 2009, INMETRO) Entre outras características do protocolo OSPF, pode-se listar: suporte à hierarquia dentro de um mesmo domínio de roteamento; uso de autenticação nas mensagens; permissão para o uso de múltiplos caminhos de mesmo custo; suporte integrado a tráfego unicast e multicast; permissão para o uso de diferentes métricas para tipos de serviço (TOS) diferentes.

Segundo Kurose(2010,p.289),"Alguns avanços incorporados ao OSPF são:
-Segurança: Trocas entre roteadores OSPF são autenticadas.
-Caminhos múltiplos de igual custo.
-Suporte integrado para roteamento unicast e multicast.
-Suporte para hierarquia dentro de um único domínio de roteamento."

Segundo Tanenbaum(2011,p.297),"O OSPF [...] tinha de dar suporte ao roteamento com base no tipo de serviço. O novo protocolo deveria ser capaz de rotear o tráfego em tempo real de uma maneira  e o restante do tráfego de outra."

Gabarito: C

REFERÊNCIAS

[1] http://www.questoesdeconcursos.com.br/

[RC] Protocolos de Roteamento (v 1.0)

    Uma das principais funções da camada de rede é a de estabelecer uma rota de menor custo entre determinada origem e destino. Essa função é chamada de roteamento e é executada por elementos ativos da rede chamados de roteadores (e, atualmente, também pelos chamados switches de camada 3).
    A literatura enumera muitas classificações para os algoritmos de roteamento. Uma delas leva em consideração a adaptabilidade (ou não) das rotas estabelecidas. Quanto a esse critério, os algoritmos de roteamento são classificados em estáticos e dinâmicos.
    Os algoritmos estático não se adaptam às mudanças na carga da rede ou em sua topologia. Através deles, as rotas a serem utilizadas pelos pacotes em tráfego, são estabelecidas normalmente off-line para, somente então, serem transferidas aos roteadores.
    Por outro lado, os algoritmos dinâmicos se adaptam de acordo com mudanças na topologia e na carga da rede. Esses algoritmos diferem na forma de obter informações de roteamento, no tempo de atualização de suas tabelas e na unidade métrica utilizada para a otimização.
    Essa última classe de algoritmos, tema central do nosso post de hoje, são classificados em mais duas categorias: vetor de distância e estado de enlace.
    Utilizando um algoritmo de vetor de distância (DV - Distance Vector), um roteador mantêm uma tabela (vetor) atualizada através da troca de informações com roteadores vizinhos. Esse mesmo procedimento é realizado pelos outros nós (roteadores), cascateando e atualizando as informações. Portanto o processo é iterativo e distribuído.
    Através do algoritmo de estado de enlace (LS - Link State), as rotas são calculadas usando conhecimento completo e global sobre a rede. Essa característica ocasiona um overhead inicial, mas que são suavizados nas alterações subsequentes na tabela. Para o cálculo do menor custo, algoritmos de estado de enlace normalmente são baseados no SPF (Shortest Path First) de Dijkstra.
    Complicou? Vamos esquematizar:



    Portando essas informações, vamos discutir alguns protocolos utilizados na Internet que se baseiam nas ideias desses algoritmos de roteamento.

1. RIP (Routing Information Protocol)

    O RIP é um protocolo de roteamento interno (intra-SA), ou seja, é rodado dentro de um sistema autônomo (SA) da Internet. Ele é um protocolo de vetor de distância que usa contagem de saltos (hops) como métrica de custo, utilizando um limite de 15 saltos por SA.
    Por meio do RIP, as tabelas de roteamento são trocadas, aproximadamente,  a cada 30 segundos por meio de mensagens chamadas de anúncios (ou resposta) RIP. Roteadores enviam mensagens RIP por UDP, porta 520.
    As principais melhorias da versão 2 do RIP em relação a sua versão original é o reconhecimento de sub-redes e uma camada de segurança por meio de autenticação utilizando MD5.

2. OSPF (Open Shortest Path First)

    O OSPF é considerado como sucessor do RIP. Ele apresenta características mais avançadas em relação ao seu antecessor. É um protocolo de roteamento interno que utiliza o algoritmo de estado de enlace (por isso o SPF em seu nome).
    Por meio do OSPF é construído um grafo de todo o sistema autônomo. O algoritmo SPF é rodado, a partir de um nó (roteador) raiz, de forma a gerar uma árvore de escoamento considerando os demais nós do SA.
     O pacote Hello do OSPF é utilizado para estabelecer adjacências de roteadores vizinho. Por padrão, esses  pacotes são enviados a cada 10 segundos.
    Diferente do RIP, o OSPF não utiliza protocolos de transporte. Suas informações são enviadas diretamente utilizando-se a camada IP.
    Outras características do OSPF:

  • Autenticação com MD5;
  • Capacidade de estruturar hierarquicamente um SA;
    • Nesse caso, cada área (ou "sub-SA") criada, roda sua própria instância do OSPF;
  • Suporte para roteamento unicast e multicast;
  • Considera caminhos múltiplos quando esses têm o mesmo custo;

3. BGP (Border Gateway Protocol)

    A versão 4 do BGP é o padrão "de fato" para roteamento entre SAs (inter-SA) na Internet. Por meio dele, são estabelecidas conexões semipermanentes TCP entre pares de roteadores (pares BGP), usando a porta 179.
    Uma sessão BGP corresponde a uma conexão TCP junto com o conjunto de mensagens trocadas entre pares BGP. Essa sessão pode ser denominada externa (ou eBGP) quando abrange dois SAs e interna (ou iBGP) quando estabelecida por roteadores dentro do mesmo SA. Sim! Também há conexões semipermanentes dentro dos SAs.

Fonte: Kurose

Para questões de concurso sobre esse tema, clique aqui.


REFERÊNCIAS
[1] TANENBAUM, A. S. – Redes de Computadores – 5ª Ed.,Pearson, 2011.
[2] KUROSE, J. F. e ROSS, K. - Redes de Computadores e a Internet - 5ª Ed., Pearson, 2010.
[3] http://imasters.com.br/artigo/3457/redes-e-servidores/roteadores-vizinhos-distance-vector
[4] http://www.dcc.fc.up.pt/~pbrandao/aulas/0405/arq_r/slides/Routing-RIP.pdf
[5] http://www.kraemer.pro.br/cisco/exploration2/cap11.pdf

segunda-feira, 27 de outubro de 2014

Questões de Concurso: Testes em Engenharia de Software

Nessa seção são listadas e discutidas algumas questões de concurso referentes a temas já abordados em publicações anteriores.

1. (CESPE, 2013, MPU) Para realizar testes de unidade ou estrutural, pode-se utilizar uma representação conhecida como grafo de fluxo de controle de um programa. A partir do grafo, executam- se todos os caminhos do programa, principalmente na presença de laços.


A técnica de grafo de fluxo de controle é normalmente utilizada somente para os testes estruturais, 

Gabarito: E

2. (CESPE, 2013, MPU) Um dos critérios do teste de unidade é o particionamento de equivalência, que consiste no particionamento do domínio de entrada do programa de modo que o conjunto de testes resultantes corresponda a uma representação satisfatória de todo o domínio.



A partição de equivalência é uma técnica de teste do método caixa preta. Teste de unidade é classificado como teste de caixa branca.
Gabarito: E

3. (CESPE, 2011, BRB) O teste de regressão tem o objetivo de localizar defeitos na estrutura interna do produto, exercitando, suficientemente, os possíveis caminhos de execução do sistema.


O Teste de Regressão tem o objetivo após uma atualização da versão, refazer os testes feitos anteriormente e verificar se a nova versão acarretou em problemas na versão anterior, se sim, o software regrediu. 

Gabarito: E

4. (CESPE, 2010, ABIN) Nos testes de caixa branca, o código-fonte do programa é usado para identificar testes de defeitos potenciais, particularmente no processo de validação, o qual demonstra se um programa atende a sua especificação.



Por meio do teste estrutural são testados os caminhos lógicos através do software, fornecendo casos de teste que põem à prova conjuntos específicos de condições e/ou garante que todos os caminhos independentes dentro de um módulo tenham sido exercitados pelo menos uma vez.  
Portanto esse teste não demonstra se um programa atende a especificação e sim se o seu funcionamento está correto.
Gabarito: E

5. (CESPE, 2009, UFBA) Os testes de software Caixa-Branca examinam o comportamento interno do componente de software.

Gabarito: C


6. (CESPE, 2008, TRT-BA) Entre os tipos de testes de caixa preta, encontram-se o teste baseado em grafos; o particionamento de equivalência; a análise de valor-limite; e o teste de matriz ortogonal.


Os testes elencados na questão correspondem a teste de caixa branca.
Gabarito: E

7. (CESPE, 2011, TRE-ES) O framework JUnit, embora tenha sido projetado para realizar testes de unidade em um programa, também é utilizado para realizar testes funcionais.

O JUnit é um framework de teste cujo objetivo principal é executar teste unitário, ou seja, teste de caixa branca dado que você conhece a estrutura do código. Contudo, o framework se baseia em rodar os testes com uma determinada entrada e comparar  a saída com o esperado, muito próximo de teste funcional.
Gabarito: C

8. (CESPE, 2009, INMETRO) A rotina diária dos desenvolvedores, ao empregar processos baseados no TDD (Test Driven Development), é concentrada na elaboração de testes de homologação.

A rotina dos desenvolvedores que seguem TDD é baseada na implementação de testes unitários no início do desenvolvimento de cada funcionalidade, 
Gabarito: E


REFERÊNCIAS
[1] http://www.questoesdeconcursos.com.br/
[2] http://www.labes.icmc.usp.br/site/sites/default/files/NotaDidatica31.pdf


[ESw] Testes em Engenharia de Software (v 1.3)

    A execução de testes é de extrema importância em Engenharia de Software. Por isso consta como uma subetapa na maioria dos modelos prescritivos de processo de software, ou até mesmo como uma atividade ou "metaetapa" em metodologias como TDD, ATDD e XP.
    Antes de elucidar o significado e características das siglas xDD (que será feito em publicações seguintes), é importante relacionar os principais tipos de testes de software. Eles são executados em diferentes níveis e em paralelo ao desenvolvimento do software:

Fonte: Devmedia


    Através do teste unitário, as unidades funcionais do sistema são testadas independentemente. No paradigma orientado a objeto, normalmente é aplicada a classes, métodos e objetos. Um ótimo exemplo (teórico) desse tipo de teste é o que é realizado na indústria aeronáutica. Quando um avião é construído, todos os seus componentes são exaustivamente testados e de forma isolada.
    É fortemente indicado que os testes unitários sejam elaborados antes da codificação, pois de forma contrária essa elaboração pode ser tendenciosa; influenciada pelo desenvolvimento da unidade funcional. Já a execução desses testes é feita posteriormente ao desenvolvimento da unidade e com determinada frequência; de preferência quando suas respectivas unidades sofrerem alguma alteração.
    O teste de integração constitui o nível seguinte. Através daquele, é possível testar a integração de duas ou mais funcionalidades. Isso pode ser feito gradativamente (de forma incremental; mais recomendado) ou de uma só vez (não incremental ou “big-bang”; menos recomendado).
    Considera-se que, a partir desse nível, as unidades funcionais tenham sido testadas exaustivamente, pois a ocorrência de erros de unidades em níveis subsequentes podem custar caro ao desenvolvedor. 
    O teste de sistema visa ao funcionamento do software como um todo; ou seja, com todas as unidades funcionais trabalhando em conjunto. Ele leva em consideração a validação referente a requisitos funcionais e não funcionais.
    Nesse nível, deve haver uma integração dos componentes de software com o ambiente operacional em que ele será efetivamente utilizado.
    O teste de aceitação é o último nível antes da implantação do software. Por meio dele, o sistema é testado com dados fornecidos pelo usuário (cliente). Desse modo, ainda podem ser encontrados problemas com os requisitos funcionais e não-funcionais, uma vez que os dados reais "exercitam" o sistema de modo diferente dos dados simulados.
    Testes de aceitação podem ser classificados em duas categorias: 1) Alfa, quando feitos por usuários, geralmente nas instalações do desenvolvedor ou 2) Beta, quando feitos por usuários, geralmente em suas próprias instalações, sem supervisão do desenvolvedor.
    Finalmente, o teste de regressão. Este corresponde, na verdade, mais a uma estratégia do que a um teste propriamente dito. Através dele, são aplicados, a cada novo ciclo (ou versão) do software, todos os testes já aplicados em ciclos (ou versões) anteriores.
    Resumidamente, temos:



Fonte: Slideshare


Para questões de concurso sobre esse tema, clique aqui.


REFERÊNCIAS
[1] PRESSMAN, Roger S. Engenharia de software. 6ª ed. Porto Alegre: Bookman, 2006.
[2] SOMMERVILLE, Ian. Engenharia de software. 8ª ed. São Paulo: Pearson Addison-Wesley, 2007.
[2] http://blog.fasagri.com.br/?p=113
[3] http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de-software/8035
[4] http://www.devmedia.com.br/junit-implementando-testes-unitarios-em-java-parte-i/1432