Você está na página 1de 4

Exercícios

1) O desenvolvimento de uma solução computacional, geralmente, é marcado


por uma série de análises, documentos, codificações e operações que podem
gerar algum erro.

Se, em um processo de verificação de erros, um analista propõe um


controle de tipo de caracteres de entrada em um formulário digital de cadastro
Web, ele está se apoiando, mais diretamente:

Resposta: Na eliminação de entradas com caracteres inválidos, evitando


inconsistências em execução.

Comentário:

Quando se evita qualquer entrada inválida, automaticamente se elimina a


possibilidade de o sistema aceitar caracteres inválidos no campo em questão,
uma vez que o usuário é sempre a prioridade em relação à usabilidade do
sistema.

Isso não significa que serão sanadas quaisquer falhas de cálculo em outra
parte do software, nesse caso, o processo de teste e, posteriormente, o debug,
para capturar comportamentos não previstos, serão os próximos passos na
análise da solução.

Entradas inválidas de usuários, importantes atores no sistema, são erros


comuns que podem ocorrer, e seu tratamento evita inconsistências.

Lembre-se que debugging está relacionado com a busca de bugs durante


execução de código, onde você geralmente não sabe onde estão.

2) Em uma ambiguidade, têm-se duas ou mais descrições ou funcionalidades


que se contradizem ou se excluem quando associadas a uma mesma operação.

Dada a importância da coesão e coerência dos requisitos de sistema


levantados, qual das assertivas apresenta descrições ambíguas?

Resposta: I. O usuário escolherá livremente a data para geração de relatórios do


sistema. II. Os relatórios deverão ser limitados em no máximo 30 dias.
Comentário:

Se um requisito afirma que o usuário pode gerar um relatório com data


livre e, em outro requisito, generalizando, impõe limitação de data, ocorre uma
ambiguidade de informação.

Para uma mesma função, apontamentos diferentes podem confundir o


testador e desenvolvedor.

É diferente se você diz que um campo tem X caracteres e outro Y (por


serem campos diferentes), ou, ainda, se você permite exportação de dados e
indica como esses dados devem ser exibidos na tela, pois estão em contextos
diferentes.

3) Os mais variados tipos de erros e testes estão relacionados com a fase do


desenvolvimento e com o que se está testando ou prevenindo.

Dentre as opções a seguir, assinale aquela em que se pode afirmar existir


um erro lógico ou gramatical:

Resposta: If (x > y){


print ("Y é maior que X");
}

Comentário:

Existe um erro matemático em:

If (x > y){

print ("Y é maior que X");

Ao avaliar um item, deve-se efetivamente verificar o resultado para que a


escrita esteja correta, ou para determinada mensagem, verificar se a lógica está
correta.
No caso, avaliou-se X como maior que Y, mas na mensagem aparece Y
como maior que X.

Em casos com erro no cálculo, considera-se erro matemático.

Por outro lado, o fato de o teste ser realizado em uma variável e o


resultado for atualizado em outra, não implica em erro, uma vez que tudo
depende da lógica do programa, e que a variável esteja sendo utilizada
corretamente.
4) O teste de software é uma técnica de verificação e validação de software e
contribui para a garantia da qualidade do mesmo.

Sobre o teste de software, analise as afirmativas a seguir:

I. O teste de sistema permite analisar as menores partes de um sistema.


(INCORRETA)

II. Testes não garantem um software livre de falhas. (CORRETA)

III. Analisar todas as possibilidades de entradas para um teste não é viável para
grande parte dos sistemas. (CORRETA)

Comentários:

A “afirmativa I” está INCORRETA, porque os testes procuram capturar


uma grande quantidade de falhas, mas não evitam que algumas delas acabem
passando despercebidas.

A “afirmativa II” está CORRETA, visto que é praticamente impossível


realizar todo tipo de teste e capturar todos os erros ou falhas de um sistema.

A “afirmativa III” está CORRETA, com relação aos testes, se você for
realizá-los em todos os sistemas, estará efetuando um teste de sistema, caso
seja em partes menores, são os testes de unidade.

5) A depuração de software (ou debbuging, em inglês) é o processo de detecção


e remoção de erros potenciais existentes (também chamados de bugs) em um
código de software que pode fazer com que ele se comporte inesperadamente.

Para evitar a operação incorreta de um software ou sistema, a depuração


é usada para encontrar e resolver bugs ou defeitos.

Assinale a alternativa que indica a associação correta de uma estratégia


de depuração com seu conceito.

(1) Palpite.

(2) Dividir e conquistar.

(3) Alteração individual das proposições.

Respostas:

( ALTERAÇÃO INDIVIDUAL das PROPOSIÇÕES ) Possibilita que o profissional


teste uma alteração, verifique se há falha e retorne para a condição inicial, para
testar outro elemento.
( PALPITE ) Permite que se teste alguns elementos ou áreas que se considere
provável, eliminando-os imediatamente caso o erro não esteja ali.

( DIVIDIR e CONQUISTAR ) Estabelece que um problema, classes ou funções


possam ser analisados em problemas menores, podendo eliminar todo elemento
que esteja exclusivamente ligado a ele.

Comentários:

PALPITE: O “Palpite” deverá ser sempre pensado tentando "atacar" o que


parecer mais óbvio quanto à localização do bug, excluindo-se aquele que
efetivamente não contempla o que se busca.

DIVIDIR e CONQUISTAR: O critério "Dividir e Conquistar" é aplicado quando se


tem classes, funções ou módulos maiores para serem analisados, dividindo-os
em partes menores que possibilitem, inclusive, a eliminação da parte maior
relacionada caso o bug não esteja ali.

ALTERAÇÃO INDIVIDUAL das PROPOSIÇÕES: Por fim, se mais de um item é


candidato a ter bug, realizam-se separadamente os testes, faz-se a “Alteração”
de um item e, caso não haja bug, volta-se ao estado anterior antes de alterar
outro, e assim sucessivamente.

Você também pode gostar