Computação 3ª série Prova
Desenvolvimento de software: requisitos, testes e qualidade
Prova com 11 questões sobre desenvolvimento de software: requisitos funcionais e não funcionais, testes de fronteira, erros de um, complexidade ciclomática, métricas de qualidade, reúso e controle de versão.
- 11 questões
- cerca de 60 minutos
Computação, 3ª série: Desenvolvimento de software: requisitos, testes e qualidade
Na especificação de um aplicativo de agendamento da biblioteca escolar, a equipe listou vários requisitos. Qual deles é um requisito não funcional, isto é, uma qualidade do sistema, e não uma função que ele executa?
- O bibliotecário deve poder registrar a devolução de um livro emprestado.
- O sistema deve enviar um aviso ao estudante um dia antes do fim do prazo.
- O estudante deve poder reservar um livro informando sua matrícula.
- O estudante deve poder consultar os livros disponíveis por título ou autor.
- As telas devem carregar em até 2 segundos em celulares com conexão 4G.
O requisito diz: "compras de valor acima de R$ 100,00 recebem 10% de desconto". O programador escreveu:
função desconto(valor):
se valor ≥ 100 então
devolva valor · 0,9
senão
devolva valorEntre os testes a seguir, o único que revela o erro dessa função é aquele em que o valor da compra é
- R$ 150,00
- R$ 99,00
- R$ 100,00
- R$ 50,00
- R$ 200,00
Um sistema de inscrição em um campeonato aceita apenas participantes com idade de 16 a 18 anos, inclusive. Para testar a validação da idade com poucos casos, mas com boa chance de encontrar erros, o conjunto de idades mais adequado é
- 0, 50 e 100
- 17, 17, 17 e 17
- 16, 17 e 18
- 10, 20 e 30
- 15, 16, 18 e 19
Uma métrica usada para avaliar a complexidade de um código é a complexidade ciclomática, que, para funções simples, é igual ao número de decisões (como cada "se") mais 1. Ela indica o número mínimo de caminhos independentes que os testes devem cobrir. Considere a função:
função frete(peso, expresso):
custo ← 10
se peso > 5 então
custo ← custo + 8
se expresso então
custo ← custo + 15
devolva custoA complexidade ciclomática dessa função e o valor de frete(7, verdadeiro) são
- 3 e 25
- 2 e 33
- 3 e 33
- 2 e 10
- 4 e 18
Uma equipe precisa gerar arquivos PDF em seu aplicativo e encontrou uma biblioteca de código aberto, bem testada e mantida por uma comunidade ativa, que faz exatamente isso. A decisão mais adequada é
- copiar o código da biblioteca e apresentá-lo como se tivesse sido escrito pela própria equipe.
- desistir da função de gerar PDF, pois não é permitido usar código escrito por outras pessoas.
- usar a biblioteca sem ler a licença, pois todo código disponível na internet pode ser usado livremente.
- reutilizar a biblioteca, conferindo antes se a licença permite o uso e citando-a como exigido.
- escrever do zero uma nova biblioteca de PDF, pois reutilizar código é sempre sinal de pouca competência.
Um grupo vai desenvolver um aplicativo de caronas solidárias para estudantes de uma escola. Usando refinamentos sucessivos, a primeira decomposição do problema, em nível alto de abstração, é mais adequadamente
- escolher as cores dos botões; definir o tamanho da fonte; escrever o código da tela inicial.
- comprar um servidor; instalar o banco de dados; testar a velocidade da internet da escola.
- cadastrar usuários; oferecer caronas; buscar e pedir caronas; avaliar as viagens.
- escrever o código de verificação de senha; depois pensar no que o aplicativo deve fazer.
- declarar as variáveis; escrever os laços de repetição; compilar o programa; publicar na loja.
A função a seguir deveria calcular a soma 1 + 2 + ... + n:
função soma(n):
s ← 0
para i de 1 até n − 1 faça
s ← s + i
fim
devolva sO valor devolvido por soma(5) e a correção necessária são
- 15; o laço deveria ir de 1 até n − 1
- 10; o laço deveria começar em 0
- 14; a variável s deveria começar em −1
- 10; o laço deveria ir de 1 até n
- 15; a função está correta
Duas versões de um aplicativo de banco foram avaliadas em testes com usuários:
Métrica Versão 1 Versão 2 Tempo médio de resposta 1,2 s 0,8 s Falhas a cada 1 000 sessões 2 15 Tamanho do aplicativo 30 MB 25 MB Considerando que, para um aplicativo de banco, a confiabilidade é o requisito mais importante, a escolha e a justificativa adequadas são
- a versão 2, pois é mais rápida, e a velocidade é sempre a métrica mais importante.
- a versão 1, pois falha muito menos, ainda que seja um pouco mais lenta e maior.
- qualquer uma, pois métricas de software não permitem comparar versões diferentes.
- a versão 2, pois é menor e, por isso, tem automaticamente menos erros de programação.
- a versão 1, pois aplicativos maiores são sempre mais seguros que os menores.
Equipes de desenvolvimento usam sistemas de controle de versão, como o Git. Um estudante quer testar uma nova funcionalidade no projeto do grupo sem correr o risco de estragar a versão que já funciona. O recurso mais adequado é
- copiar a pasta do projeto para um pendrive e desenvolver lá, sem avisar o restante do grupo.
- enviar o código novo diretamente para a versão principal, sem testes, e corrigir depois.
- apagar a versão principal e começar a nova funcionalidade a partir de um projeto vazio.
- pedir que todos os colegas parem de trabalhar até que a funcionalidade nova fique pronta.
- criar um ramo (branch) para a funcionalidade e, após os testes, incorporá-lo à versão principal.
Se um programa passou em todos os testes que a equipe escreveu, pode-se garantir que ele não tem nenhum erro.
( ) Verdadeiro ( ) Falso
A escola quer um sistema simples para controlar o empréstimo de livros da biblioteca.
a) Escreva três requisitos funcionais e um requisito não funcional para esse sistema.
b) Para o requisito "um estudante pode ter no máximo 3 livros emprestados ao mesmo tempo", descreva três casos de teste, indicando a situação inicial, a ação e o resultado esperado.
c) Explique por que é importante escrever os testes antes ou durante a programação, e não só no final.
ProvaPiloto · provapiloto.com.br
Gabarito comentado
Já usou com a sua turma?
Conte com um toque. Isso ajuda outros professores a escolher.
Usei em sala Entre na sua conta para contar.


