• Nenhum resultado encontrado

ESS - Prova

N/A
N/A
Protected

Academic year: 2021

Share "ESS - Prova"

Copied!
9
0
0

Texto

(1)

a) #lapp

Scenario:​ ​Matricular​ ​disciplinas​ ​com​ ​choque​ ​de​ ​horário Given​ ​eu​ ​estou​ ​na​ ​página​ ​de​ ​matrícula

And​ ​eu​ ​estou​ ​com​ ​a​ ​disciplina​ ​“A”​ ​adicionada​ ​na​ ​grade​ ​de​ ​horário​ ​no​ ​horário “15-17h”

And​ ​A​ ​disciplina​ ​“B”​ ​está​ ​na​ ​lista​ ​de​ ​disciplinas​ ​disponíveis​ ​com​ ​horário​ ​“15-17h” When​ ​eu​ ​tento​ ​adicionar​ ​a​ ​disciplina​ ​“B”​ ​na​ ​grade​ ​de​ ​horário

Then​ ​eu​ ​vejo​ ​uma​ ​mensagem​ ​relacionada​ ​ao​ ​choque​ ​de​ ​horário And​ ​a​ ​disciplina​ ​“B”​ ​não​ ​aparece​ ​na​ ​grade​ ​de​ ​horário

b) #lapp

Given​ ​a​ ​disciplina​ ​“B”​ ​não​ ​está​ ​na​ ​grade​ ​de​ ​horário​ ​da​ ​matrícula And​ ​a​ ​disciplina​ ​“A”​ ​está​ ​na​ ​grade​ ​de​ ​horário

When​ ​é​ ​adicionada​ ​a​ ​disciplina​ ​“B”​ ​na​ ​grade Then​ ​a​ ​disciplina​ ​“B”​ ​não​ ​é​ ​cadastrada​ ​na​ ​grade c) sim

d) Pois​ ​é​ ​necessário​ ​verificar​ ​se​ ​tudo​ ​está​ ​ocorrendo​ ​como​ ​desejado​ ​nos​ ​métodos​ ​de controllers​ ​e​ ​na​ ​GUI,​ ​caso​ ​contrário​ ​os​ ​testes​ ​mostrarão​ ​onde​ ​as​ ​modificações deverão​ ​ser​ ​feitas​ ​para​ ​que​ ​os​ ​testes​ ​passem.

a) Testes​ ​de​ ​regressão​ ​são​ ​feitos​ ​antes​ ​de​ ​lançar​ ​novas​ ​versões​ ​do​ ​projeto​ ​original, tendo​ ​certeza​ ​que​ ​os​ ​testes​ ​anteriores​ ​continuem​ ​funcionando.

b) Testes​ ​de​ ​aceitação​ ​são​ ​feitos​ ​entregando​ ​o​ ​programa​ ​completo​ ​para​ ​alguns usuários​ ​finais​ ​a​ ​fim​ ​de​ ​saber​ ​sua​ ​corretude.

a) Epics​ ​são​ ​usados​ ​para​ ​agrupar​ ​histórias​ ​que​ ​fazem​ ​sentidos​ ​estarem​ ​juntas.​ ​A​ ​epics seria​ ​uma​ ​grande​ ​história​ ​que​ ​dentro​ ​tem​ ​histórias​ ​menores​ ​que​ ​a​ ​compõem

(2)

a) Decorator​ ​e​ ​Abstract​ ​Factory

b) Decorator​ ​é​ ​um​ ​padrão​ ​de​ ​projeto​ ​que​ ​serve​ ​para​ ​adicionar​ ​um​ ​comportamento​ ​a​ ​um objeto​ ​em​ ​tempo​ ​de​ ​execução.​ ​Funciona​ ​como​ ​uma​ ​alternativa​ ​às​ ​subclasses​ ​como método​ ​para​ ​adicionar​ ​funcionalidade​ ​a​ ​uma​ ​classe.

Abstract​ ​Factory​ ​permite​ ​a​ ​criação​ ​de​ ​famílias​ ​de​ ​objetos​ ​relacionados​ ​ou dependentes​ ​por​ ​meio​ ​de​ ​uma​ ​única​ ​interface,​ ​sem​ ​que​ ​a​ ​classe​ ​concreta​ ​seja especificada.

(3)

Será​ ​que​ ​é​ ​essa​ ​resposta​ ​de​ ​baixo?

a) O​ ​​continue​​ ​dentro​ ​do​ ​​if​​ ​quebra​ ​o​ ​fluxo​ ​do​ ​programa.

b) Debug​ ​(?)//O​ ​analyze​ ​code​ ​tem​ ​uma​ ​ferramenta​ ​que​ ​detecta​ ​if​ ​desnecessário ou​ ​if​ ​​ ​errado(mas​ ​não​ ​sei​ ​o​ ​nome​ ​dessa​ ​merda)

c) Colocar​ ​todo​ ​o​ ​código​ ​abaixo​ ​do​ ​​if​​ ​dentro​ ​dele,​ ​porém​ ​tirando​ ​a​ ​​!​​ ​da​ ​condição. d) Rodando​ ​testes​ ​para​ ​esse​ ​código.

e) f)

void​ ​prepareListsOfSourceAndSinks(Collection<SDGClass> classes,...)​ ​{

​ ​​ ​for​ ​(SDGClass​ ​sdgClass​ ​:​ ​classes)​ ​{

​ ​​ ​​ ​​ ​if​ ​(mapClassFeatures.containsKey(sdgClass.toString()))​ ​{ ​ ​​ ​​ ​​ ​​ ​​ ​for​ ​(SDGAttribute​ ​sdgAttribute​ ​:

sdgClass.getAttributes())​ ​{ ​ ​​ ​…​ ​//​ ​8​ ​lines​ ​of​ ​code

(4)

​ ​​ ​​ ​​ ​​ ​​ ​}

​ ​​ ​​ ​​ ​​ ​​ ​for​ ​(SDGMethod​ ​sdgMethod​ ​:​ ​sdgClass.getMethods())​ ​{ ​ ​​ ​…​ ​//​ ​20​ ​lines​ ​of​ ​code

​ ​​ ​​ ​​ ​​ ​​ ​} ​ ​​ ​​ ​​ ​} ​ ​​ ​} }

a) O​ ​cenário​ ​declarativo​ ​é​ ​mais​ ​simples​ ​em​ ​relação​ ​aos​ ​cenários​ ​imperativos.​ ​Os cenários​ ​imperativos​ ​são​ ​mais​ ​detalhados​ ​em​ ​seus​ ​passos​ ​enquanto​ ​os​ ​declarativo usam​ ​de​ ​uma​ ​maior​ ​abstração​ ​para​ ​descrever​ ​seus​ ​passos.

b) As​ ​desvantagens​ ​de​ ​um​ ​cenário​ ​imperativo​ ​é​ ​que​ ​este​ ​é​ ​mais​ ​custoso​ ​para manutenção,​ ​pois​ ​quaisquer​ ​modificações​ ​acarretariam​ ​em​ ​mudanças​ ​detalhadas nesse​ ​tipo​ ​de​ ​cenário,​ ​o​ ​que​ ​acaba​ ​sendo​ ​complexo,​ ​e​ ​esse​ ​cenário​ ​costuma​ ​ser muito​ ​extenso.​ ​Já​ ​o​ ​cenário​ ​declarativo​ ​tem​ ​uma​ ​vantagem​ ​em​ ​questão​ ​de​ ​usar​ ​um nível​ ​mais​ ​alto​ ​de​ ​abstração​ ​maior​ ​em​ ​seus​ ​passos​ ​para​ ​que​ ​fique​ ​mais​ ​fácil​ ​de​ ​se discutir​ ​sobre​ ​os​ ​testes​ ​com​ ​os​ ​stakeholders​ ​(tanto​ ​o​ ​cliente​ ​quanto​ ​os

desenvolvedores),​ ​além​ ​de​ ​ser​ ​menos​ ​custoso​ ​para​ ​manutenção. c)

a) Testes​ ​de​ ​unidade​ ​servem​ ​para​ ​testar​ ​um​ ​componente​ ​de​ ​um​ ​projeto​ ​(ou​ ​seja,​ ​testar um​ ​módulo​ ​-​ ​classe​ ​ou​ ​método​ ​-​ ​individualmente,​ ​caso​ ​dependa​ ​de​ ​outros​ ​módulos, eles​ ​serão​ ​simulados).​ ​Seu​ ​objetivo​ ​é​ ​verificar​ ​corretude​ ​funcional​ ​dos​ ​módulos independentes.

b) Testes​ ​de​ ​integração​ ​consistem​ ​nos​ ​teste​ ​realizados​ ​entre​ ​os​ ​conjuntos​ ​dos​ ​módulos e​ ​as​ ​interfaces​ ​entre​ ​eles.​ ​O​ ​propósito​ ​principal​ ​é​ ​verificar​ ​a​ ​funcionalidade,

performance​ ​e​ ​confiabilidade​ ​dos​ ​módulos​ ​que​ ​são​ ​integrados.

c) Testes​ ​de​ ​aceitação​ ​servem​ ​para​ ​determinar​ ​se​ ​o​ ​sistemas​ ​estão​ ​de​ ​acordo​ ​com​ ​as especificações.​ ​O​ ​propósito​ ​principal​ ​é​ ​avaliar​ ​se​ ​o​ ​sistema​ ​está​ ​complacente​ ​com os​ ​requerimentos​ ​e​ ​se​ ​ele​ ​entrega​ ​para​ ​o​ ​usuário​ ​final​ ​os​ ​requisitos.

a) Uma​ ​branch​ ​é​ ​um​ ​ponteiro​ ​que​ ​marca​ ​um​ ​commit.​ ​Inicialmente​ ​o​ ​usuário​ ​tem​ ​a branch​ ​inicial​ ​do​ ​git,​ ​que​ ​é​ ​chamada​ ​de​ ​master.​ ​O​ ​usuário​ ​pode​ ​criar​ ​novas branches,​ ​que​ ​irão​ ​funcionar​ ​como​ ​uma​ ​ramificação​ ​da​ ​branch​ ​master.

b) É​ ​interessante,​ ​em​ ​um​ ​projeto,​ ​a​ ​criação​ ​de​ ​diferentes​ ​branches​ ​para​ ​que​ ​códigos​ ​de implementações​ ​diferentes​ ​não​ ​se​ ​misture,​ ​pois​ ​um​ ​bug​ ​em​ ​um​ ​implementação​ ​pode causar​ ​problemas​ ​em​ ​outra.​ ​No​ ​caso​ ​de​ ​branches​ ​separadas​ ​esse​ ​problema​ ​é evitado.

(5)

c) O​ ​merge​ ​tem​ ​o​ ​proposito​ ​de​ ​juntar​ ​duas​ ​branches​ ​diferentes.​ ​Para​ ​que​ ​isso​ ​ocorra​ ​é necessário​ ​que​ ​os​ ​conflitos​ ​no​ ​códigos​ ​entre​ ​elas​ ​sejam​ ​resolvidos.​ ​Após​ ​a

resolução​ ​dos​ ​conflitos​ ​um​ ​commit​ ​é​ ​lançado​ ​e​ ​as​ ​informações​ ​para​ ​finalizar​ ​o merge.

d) Os​ ​conflitos​ ​podem​ ​ser​ ​detectados​ ​caso​ ​novos​ ​códigos​ ​de​ ​uma​ ​branch​ ​A​ ​sejam inseridos​ ​em​ ​posição​ ​de​ ​uma​ ​branch​ ​B​ ​onde​ ​outros​ ​códigos​ ​foram​ ​adicionado​ ​ou mexidos.​ ​Outro​ ​caso​ ​é​ ​o​ ​das​ ​mesmas​ ​variáveis​ ​serem​ ​mexidas​ ​nas​ ​branches​ ​do merge

a) Os​ ​dois​ ​if’s​ ​estão​ ​com​ ​códigos​ ​repetidos,​ ​sendo​ ​assim​ ​uma​ ​forma​ ​de​ ​“mau​ ​cheiro” b) Análise​ ​do​ ​código​ ​(?)​ ​->​ ​No​ ​IntelliJ,​ ​por​ ​exemplo,​ ​usa-se​ ​Analyze/Locate​ ​Duplicate c) (Confiram​ ​pls)

def​ ​newMethod(TechnicalReport​ ​trInstance,​ ​String​ ​x){ trInstance.discardMembers()

flash.message​ ​=​ ​x

render(view:​ ​“create”,​ ​model:​ ​[trInstance:​ ​trInstance]) }

def​ ​save()​ ​{

def​ ​trInstance​ ​=​ ​new​ ​TechnicalReport(params)

if(!PublicationController.newUpload(trInstance,​ ​flash,​ ​request)){ newMethod(trInstance,​ ​‘technicalReport.filesaving.failure’) return } if(!technicalReportInstance.save(flush:​ ​true)){ newMethod(trInstance,​ ​‘technicalReport.saving.failure’) return

(6)

}

flash.message​ ​=​ ​message(code:​ ​‘default.created.message’,​ ​...) redirect(action:​ ​“show”,​ ​id:​ ​trInstance.id)

}

http://refactoring.com/catalog/extractClass.html

a) Está​ ​relacionado​ ​ao​ ​excesso​ ​de​ ​métodos​ ​em​ ​uma​ ​classe,​ ​tornando​ ​a​ ​mesma sobrecarregada.

b) Extrair​ ​métodos​ ​e/ou​ ​dados​ ​dessa​ ​classe​ ​e​ ​mover​ ​os​ ​mesmos​ ​para​ ​uma​ ​nova​ ​classe e​ ​renomear,​ ​se​ ​necessário,​ ​a​ ​classe​ ​antiga.

c) Porque​ ​na​ ​classe​ ​antiga,​ ​haverá​ ​um​ ​método/atributo​ ​que​ ​retornará​ ​as​ ​informações retiradas​ ​da​ ​classe.

d) Realizando​ ​testes​ ​sobre​ ​os​ ​módulos​ ​alterados​ ​para​ ​garantir​ ​a​ ​manutenção​ ​da corretude​ ​após​ ​a​ ​refatoração

#lapp

variavel​ ​-​ ​“([^”]*)”

And(~’^I​ ​select​ ​the​ ​new​ ​article​ ​option​ ​at​ ​the​ ​article​ ​page$’)​ ​{-> to​ ​ArticlesPage

at​ ​ArticlesPage

page.selectNewArticle() }

Then(~’^I​ ​can​ ​fill​ ​the​ ​article​ ​details$’)​ ​{ at​ ​ArticlesCreatePage

(7)

assert​ ​page.fillArticleDetailsAndCheck(“title”,​ ​“journal”) }

import​ ​geb.Page

class​ ​ArticlesCreatePage​ ​extends​ ​Page​ ​{ static​ ​url​ ​=​ ​“/article/create” static​ ​at​ ​=​ ​{

title​ ​==~​ ​/Create​ ​Article/ }

boolean​ ​fillArticleDetailsAndCheck(String​ ​title,​ ​String​ ​journal)​ ​{ $(“form”).title​ ​=​ ​title $(“form”).journal​ ​=​ ​journal return​ ​($(“form”).title.equals(title) &&​ ​$(“form”).journal.equals(journal)) } } import​ ​geb.Page

class​ ​ArticlesPage​ ​extends​ ​Page​ ​{ static​ ​url​ ​=​ ​“/article/index/” static​ ​at​ ​=​ ​{

title​ ​==~​ ​/Article​ ​List/ }

boolean​ ​selectNewArticle​ ​()​ ​{ $(“a.create”).click() }

}

Velocity​ ​é​ ​a​ ​média​ ​de​ ​pontos​ ​em​ ​stories​ ​alcançada​ ​por​ ​um​ ​predeterminado​ ​número​ ​de iterações.​ ​Serve​ ​para​ ​determinar​ ​o​ ​que​ ​pode​ ​ser​ ​planejado​ ​para​ ​futuras​ ​iterações, mostrando​ ​o​ ​quanto​ ​a​ ​equipe​ ​pode​ ​desenvolver​ ​(produtividade).

Questão​ ​extra​ ​por​ ​Walber

Quais​ ​são​ ​os​ ​conceitos​ ​de​ ​qualidade​ ​de​ ​software? - Corretude, - Completude - Robustez - Adaptabilidade - Portabilidade - Escalabilidade

(8)
(9)

Referências

Documentos relacionados

Nessa fase o cliente é orientado na criação ou revisão de sua Visão, Missão e Valores, o processo pode ser aplicado de forma segmentada em áreas da empresa, grupos de trabalho

% Relativo Dilma Rousseff 47.9 Marina Silva 7.7 Aécio Neves 4.5 Eduardo Campos 4.0 Outros 1.3 Não Sabe 18.4 Nulo/Branco 11.7 Não iria votar 4.5.. Retrospecto &amp; Contexto

As parcelas de cada semestre contratado não pagas, serão divididas após a conclusão do curso, de acordo com o percentual parcelado pelo aluno durante o curso, sem cobrança de

A Constituição da República de 1988, numa visão emancipadora incluiu em seu texto de forma vanguardeira a proteção cultural, quando prevê no artigo 215 que “O

Com esse intuito, é apresentado o kit didático para ensino da disciplina de Controle digital de processos, em que consiste em uma planta industrial com dois tanques

Pesquisados e submetidos a tratamento estatístico: dados demográficos, etiologia do Síndrome de Dificuldade Respiratória Aguda, comorbilidades, Índices de Gravidade,

Não há pessoas elegíveis no agregado 386 Contacto com alguém, mas não foi seleccionado o entrevistado 33 Contacto com o entrevistado, mas sem entrevista (sem marcação de nova data)

INCORRETA. C) Alto risco: T2b-T3, PSA 10-0, escore de Gleason 3+4 ou 4+3, &gt; 50% dos fragmentos positivos na biópsia ou invasão linfovascular ou diferenciação neuroendócrina.