Prévia do material em texto
Prof. MSc. Tarcísio Peres UNIDADE II Gerenciamento de Projetos de Software Priorização de backlog e roadmaps ágeis. Ciclos de desenvolvimento iterativos: sprints. Daily stand-ups e sincronização de equipe. Gestão de backlogs e iterações. Integração Contínua (CI) e Entrega Contínua (CD). Testes automatizados e TDD (Test Driven Development). Deployment e monitoramento em ambientes ágeis. Conteúdo da Unidade II O planejamento, a execução e a gestão ágil se destacam como abordagens essenciais para garantir a entrega de valor contínuo e adaptativo às necessidades do cliente. A priorização de backlog e a elaboração de roadmaps ágeis são etapas cruciais neste processo, permitindo que a equipe se concentre nas funcionalidades e melhorias que trazem maior benefício ao produto final. A definição de um backlog claro e bem priorizado é fundamental para direcionar os esforços da equipe, assegurando que os itens de maior valor sejam trabalhados primeiro. Os ciclos de desenvolvimento iterativos, conhecidos como sprints, são a espinha dorsal das metodologias ágeis, permitindo ajustes rápidos e respostas ágeis às mudanças. Planejamento e Execução Ágil As reuniões diárias ou daily stand-ups desempenham um papel vital na sincronização da equipe durante os sprints, permitindo a comunicação contínua e transparente. O backlog do produto é frequentemente revisitado e reavaliado à medida que novos insights e feedbacks são obtidos, com o Product Owner tomando decisões informadas sobre as prioridades. Ao final de cada sprint, uma revisão detalhada é realizada para avaliar o trabalho concluído e identificar áreas de melhoria. A integração das práticas de priorização de backlog, ciclos de desenvolvimento iterativos, daily stand-ups e gestão contínua de backlogs e iterações constitui o núcleo da gestão ágil. Sincronização e Comunicação O backlog do produto é uma lista ordenada de tudo o que é necessário para o produto, contendo funcionalidades, melhorias, correções e requisitos técnicos. A priorização é feita de maneira que os itens de maior valor e impacto sejam trabalhados primeiro, com base em critérios como valor de negócio, feedback de usuários, urgência e viabilidade técnica. Métodos comuns como a matriz de Eisenhower e o WSJF (Weighted Shortest Job First) são utilizados na priorização de backlog, garantindo que as tarefas com maior impacto relativo sejam abordadas primeiro. A matriz de Eisenhower organiza as tarefas com base em urgência e importância, enquanto o WSJF avalia tarefas pelo valor ao usuário, criticidade do tempo e redução de risco. Priorização de Backlog Priorização de Backlog Fonte: autoria própria. O roadmap é uma representação visual e estratégica do planejamento de longo prazo do desenvolvimento do produto, oferecendo uma visão de alto nível dos principais objetivos e entregas. Um roadmap ágil é flexível e adaptável, permitindo ajustes conforme necessário e destacando marcos importantes ao longo do tempo. A principal diferença entre o backlog e o roadmap está no nível de detalhe e no propósito, sendo o backlog mais detalhado e operacional, enquanto o roadmap é mais abstrato e estratégico. Integrando backlog e roadmap, as equipes ágeis conseguem planejar e executar o desenvolvimento de maneira eficiente, garantindo o alinhamento com os objetivos do negócio. Roadmap e Alinhamento Estratégico Roadmap Fonte: imagem produzida pelo próprio autor com tecnologia DALL-E, uma ferramenta de inteligência artificial desenvolvida pela OpenAI. Perspectiva artística Os sprints são períodos de tempo fixos durante os quais a equipe trabalha para completar um conjunto específico de tarefas do backlog, permitindo que o produto evolua de maneira incremental e adaptativa. A técnica de time boxing, utilizada nos sprints, ajuda a criar um ritmo sustentável de trabalho, evitando a sobrecarga e promovendo um ciclo contínuo de entrega de valor. A duração fixa dos sprints facilita a previsão e o planejamento, permitindo que a equipe e os stakeholders compreendam claramente o que pode ser realizado dentro de cada ciclo. Ao final de cada sprint, há uma oportunidade para revisar o trabalho realizado, coletar feedback e ajustar o plano conforme necessário, promovendo uma abordagem iterativa e incremental. Ciclos de Sprints As reuniões do sprint no Scrum incluem o planejamento do sprint, a reunião diária (daily stand-up), a revisão do sprint e a retrospectiva do sprint, cada uma desempenhando um papel essencial na eficácia do processo. O planejamento do sprint envolve a seleção dos itens do backlog que serão trabalhados, com a equipe definindo uma meta clara e criando um plano detalhado para atingir essa meta. Práticas comuns como os “Scrum Buts” podem comprometer a eficácia dos sprints, especialmente quando a equipe não consegue completar as tarefas planejadas ou quando o escopo é alterado durante o sprint. A estrutura do “Scrum But” envolve três componentes principais: a prática original do Scrum, a modificação ou omissão feita e o impacto dessa mudança. “Fazemos Scrum, mas nossos sprints são flexíveis e podem ser estendidos se não completarmos o trabalho”. “Fazemos Scrum, mas nossas reuniões diárias geralmente duram 30 minutos ou mais porque discutimos detalhes técnicos extensivamente”. Rituais e Cerimônias do Scrum Durante o sprint, as daily stand-ups mantêm todos sincronizados e identificam problemas rapidamente, sendo essencial que essas reuniões permaneçam rápidas e focadas. Ao final do sprint, a equipe realiza duas reuniões importantes: a revisão do sprint e a retrospectiva do sprint, garantindo o alinhamento com as expectativas e necessidades dos stakeholders. A revisão do sprint permite que a equipe apresente o trabalho concluído e colete feedback, sendo crucial a participação ativa dos principais stakeholders. A retrospectiva do sprint oferece uma oportunidade para a equipe refletir sobre o processo, discutir o que funcionou bem e identificar áreas de melhoria para os próximos sprints. Ignorar ou minimizar a retrospectiva pode levar à repetição de erros e à estagnação no desenvolvimento de práticas mais eficazes. Rituais e Cerimônias do Scrum Os sprints promovem uma cultura de entrega contínua e de alta qualidade, incentivando a equipe a manter altos padrões em todas as etapas do desenvolvimento. Cada incremento do produto deve ser funcional e potencialmente utilizável, assegurando que o trabalho esteja sempre alinhado com as expectativas do cliente. A abordagem iterativa e incremental dos sprints ajuda a gerenciar o risco, permitindo que a equipe detecte e resolva problemas rapidamente. A combinação dessas práticas ágeis resulta em um ambiente de trabalho dinâmico, adaptável e centrado no cliente, focado na entrega de valor contínuo e na melhoria contínua do produto final. Entrega Contínua e Qualidade Na priorização de backlog, qual técnica avalia as tarefas com base em urgência e importância? a) WSJF (Weighted Shortest Job First) b) Matriz de Eisenhower c) Scrum d) Daily stand-up e) Sprint review Interatividade Na priorização de backlog, qual técnica avalia as tarefas com base em urgência e importância? a) WSJF (Weighted Shortest Job First) b) Matriz de Eisenhower c) Scrum d) Daily stand-up e) Sprint review Resposta O principal objetivo das daily stand-ups é garantir que todos na equipe estejam cientes do que está acontecendo e possam colaborar de forma mais eficaz. Cada membro da equipe responde a três perguntas fundamentais: o que fizeram desde a última reunião, o que planejam fazer até a próxima e se há algum impedimento. A prática de realizar essas reuniões em pé visa reforçar a brevidade e a objetividade das discussões. A sincronização de equipe promovida pelas daily stand-ups é vital para osucesso das metodologias ágeis. Daily Stand-ups e Sincronização de Equipe As daily stand-ups melhoram a comunicação e a colaboração, criando um ambiente de transparência e responsabilidade. Elas permitem que a equipe identifique rapidamente desvios do plano original e ajuste suas ações conforme necessário. A daily stand-up ajuda a construir confiança dentro da equipe e assegurar o comprometimento com os objetivos do sprint. Para entender a criticidade da sincronização, o termo "Scrum" no desenvolvimento ágil deriva do jogo de rúgbi, que exige intensa coordenação e trabalho em equipe. Benefícios das Daily Stand-ups Fonte: imagem produzida pelo próprio autor com tecnologia DALL-E, uma ferramenta de inteligência artificial desenvolvida pela OpenAI. No Scrum ágil, o sucesso de um projeto depende da capacidade da equipe de colaborar efetivamente, ajustar-se às mudanças e focar em entregas incrementais. As cerimônias e os papéis definidos no Scrum promovem a comunicação contínua, inspeção e adaptação. O termo "Scrum" foi popularizado no contexto de desenvolvimento de produtos por Hirotaka Takeuchi e Ikujiro Nonaka em 1986. Ferramentas de software são utilizadas para auxiliar na condução de daily stand-ups, melhorando a comunicação e a visibilidade das reuniões. Scrum e Metodologias Ágeis Preparar uma reunião diária é crucial; a reunião deve ser breve, estruturada e focada na comunicação clara. Para ser eficaz, é importante evitar que a reunião se estenda além do tempo alocado ou que participantes não venham preparados. A preparação garante que o tempo seja usado eficientemente e que todos os pontos importantes sejam cobertos. A preparação ajuda a identificar impedimentos rapidamente, promovendo a responsabilidade e o compromisso com as tarefas atribuídas. Preparação para Daily Stand-ups Um backlog é uma lista organizada e priorizada de tarefas, requisitos, melhorias e funcionalidades para um projeto de software. O Product Backlog é gerenciado pelo Product Owner e é dinâmico, sendo atualizado continuamente. O Sprint Backlog é uma lista mais específica, gerenciada pela equipe de desenvolvimento, detalhando as tarefas para a iteração. A boa gestão do backlog envolve a definição clara dos itens, garantindo que cada item seja compreensível e estimável pela equipe. Gestão de Backlogs e Iterações User stories são descrições curtas e informais de funcionalidades do sistema, escritas do ponto de vista do usuário final. Elas são escritas em linguagem simples, evitando jargões técnicos, para que todos compreendam as necessidades do usuário. As user stories são centradas nas necessidades dos usuários finais, promovendo comunicação e colaboração entre a equipe. Cada user story deve incluir critérios de aceitação claros e específicos que definem as condições para ser considerada completa. Como [tipo de usuário], eu quero [ação ou funcionalidade], para que [benefício ou valor]. Como um comprador online, eu quero poder salvar itens no meu carrinho de compras, para que eu possa continuar comprando mais tarde sem perder minha seleção. User Stories no Desenvolvimento Ágil Revisões regulares do backlog ajudam a manter a qualidade dos itens e ajustar as prioridades conforme necessário. O backlog grooming, agora muitas vezes chamado de backlog refinement, envolve esclarecer requisitos, priorizar itens e remover itens obsoletos. Estimações e identificação de dependências durante o refinamento são cruciais para o planejamento eficaz e a mitigação de riscos. Um backlog bem organizado e priorizado facilita a comunicação e o planejamento dentro da equipe. Refinamento e Priorização do Backlog Exemplo de backlog Backlog Fonte: autoria própria. ID Título Descrição Priori- dade Estima- tiva Status Critérios de Aceitação Respon- sável Data de Criação 1 Login de usuário Como um usuário, eu quero fazer login no sistema para acessar minhas informações pessoais. Alta 5 Novo Usuário pode fazer login com credenciais válidas, ver mensagem de erro para credenciais inválidas. João 01/04 2 Página inicial Como um usuário, eu quero ver informações relevantes na página inicial para facilitar a navegação. Média 3 Em andamento Página inicial carrega em menos de dois segundos, exibe informações personalizadas. Maria 01/04 3 Carrinho de compras Como um usuário, eu quero adicionar itens ao meu carrinho. Alta 8 Novo Usuário pode adicionar e remover itens do carrinho, ver resumo do carrinho. Carlos 02/04 A transformação do backlog de produto em backlog da sprint é um processo essencial no Scrum, envolvendo seleção e priorização de itens. Durante a Sprint Planning, o Product Owner apresenta os itens prioritários do backlog de produto para o time de desenvolvimento. O time de desenvolvimento seleciona os itens que acredita ser capaz de concluir durante a sprint, formando o backlog da sprint. O progresso do backlog da sprint é monitorado por meio de práticas como reuniões diárias, gráficos de burndown e quadros Kanban. Transformação do Backlog de Produto em Backlog da Sprint Fonte: autoria própria. 50 45 40 35 30 25 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gráficos de burndown são usados para mostrar o progresso da sprint, exibindo a quantidade de trabalho restante ao longo do tempo. Quadros Kanban ajudam a visualizar o fluxo de trabalho durante a sprint, promovendo a entrega contínua e a melhoria contínua. Limitar o trabalho em progresso (WIP) no Kanban impede que a equipe se sobrecarregue e ajuda a identificar gargalos no processo. O uso de quadros Kanban e gráficos de burndown facilita o monitoramento e a visualização do progresso do backlog da sprint. Visualização e Monitoramento da Sprint Exemplo de quadro Kanban. Kanban Fonte: autoria própria. Implementar gateway de pagamento Otimizar carregamento de páginas Corrigir bug no cálculo de frete Integrar sistema de feedback dos clientes Redesign da página de checkout Atualizar políticas de privacidade Adicionar recomenda- ções de produtos M a r k e t i n g D e s i g n D e v e l o p m e n t No final de cada sprint, a Sprint Review permite inspecionar o incremento do produto e adaptar o backlog conforme necessário. A Sprint Review envolve stakeholders e coleta feedback, que é essencial para ajustar o backlog e alinhar o desenvolvimento às expectativas. A Sprint Retrospective é uma reunião interna do Scrum Team focada na melhoria contínua do processo de trabalho. A retrospectiva permite identificar o que funcionou bem e o que precisa ser melhorado, influenciando o backlog e as próximas sprints. Revisão e Retrospectiva da Sprint O que é um backlog no contexto do desenvolvimento ágil? a) Uma lista de bugs que precisam ser corrigidos. b) Um cronograma detalhado das entregas do projeto. c) Uma lista organizada e priorizada de tarefas, requisitos, melhorias e funcionalidades a serem desenvolvidas. d) Um relatório diário de progresso do projeto. e) Um documento que descreve as políticas de desenvolvimento da empresa. Interatividade O que é um backlog no contexto do desenvolvimento ágil? a) Uma lista de bugs que precisam ser corrigidos. b) Um cronograma detalhado das entregas do projeto. c) Uma lista organizada e priorizada de tarefas, requisitos, melhorias e funcionalidades a serem desenvolvidas. d) Um relatório diário de progresso do projeto. e) Um documento que descreve as políticas de desenvolvimento da empresa. Resposta Qualidade é definida como a capacidade de um produto ou serviço atender às expectativas dos stakeholders. Gestão da qualidade no PMI envolve planejamento, garantia e controle daqualidade. Qualidade de software inclui requisitos funcionais e não funcionais, como segurança e usabilidade. Gold plating é a prática de adicionar funcionalidades extras não solicitadas, o que pode introduzir riscos e comprometer a qualidade. Qualidade no PMI e Abordagem Tradicional CMMI (Capability Maturity Model Integration) define a qualidade de software como a capacidade de atender às necessidades dos usuários. O CMMI foca a melhoria contínua dos processos de desenvolvimento e a confiabilidade do produto. Práticas como gerenciamento de requisitos e verificação são fundamentais para a qualidade no CMMI. O modelo CMMI é metodológico e detalhado, fornecendo uma estrutura clara para garantir alta qualidade no desenvolvimento de software. Qualidade de Software e CMMI Nas metodologias ágeis, a qualidade é integrada ao longo de todo o processo de desenvolvimento. Os problemas são identificados e corrigidos mais cedo, reduzindo o risco de defeitos. O gold plating é rigorosamente evitado, mantendo o foco nas necessidades reais do cliente. A agilidade promove a entrega contínua de valor ao cliente e a adaptação rápida às mudanças de requisitos. Agilidade e Expansão dos Conceitos de Qualidade Os CMMI V2.0 e V3.0 incorporaram práticas ágeis como entregas incrementais e feedback contínuo. O modelo reconhece a necessidade de adaptação rápida e priorização com base no valor entregue ao cliente. Retrospectivas ágeis e reuniões diárias são alinhadas com os requisitos do CMMI. CMMI V3.0 introduziu novos domínios focados em dados e pessoas, integrando ainda mais a agilidade. Integração de Práticas Ágeis no CMMI Testes no ágil são contínuos e integrados em cada iteração do desenvolvimento. BDD (Behavior Driven Development) e TDD (Test Driven Development) são métodos que garantem que o código atenda aos requisitos desde o início. A garantia de qualidade é uma responsabilidade compartilhada entre toda a equipe de desenvolvimento. A integração contínua de testes melhora a qualidade do produto final e facilita a adaptação às mudanças. Testes Contínuos no Contexto Ágil A CI propõe a integração frequente de código em um repositório central, facilitando a detecção precoce de problemas. Pipelines de CI/CD automatizam a compilação, testes e implantação do código. A automação reduz a necessidade de intervenção manual e minimiza o risco de erros humanos. Ferramentas como Jenkins permitem a personalização dos pipelines para atender às necessidades específicas dos projetos. Integração Contínua (CI) e Melhoria da Qualidade CD garante que o código esteja sempre pronto para ser implantado em produção. Pequenas alterações no código são testadas e integradas continuamente, facilitando a identificação rápida de problemas. A automação do processo de lançamento reduz riscos e aumenta a eficiência. CD permite uma resposta rápida às necessidades dos clientes e melhora a colaboração dentro da equipe de desenvolvimento. Entrega Contínua (CD) e Feedback Rápido Exemplo pipeline CI/CD Integração Contínua (CI) e Melhoria da Qualidade Fonte: autoria própria. Commit e Detecção de Mudanças • Quando um desenvolvedor faz um commit de código em um repositório, o pipeline é acionado automaticamente. Ferramentas como Jenkins, GitLab CI, ou CircleCI monitoram o repositório em busca de mudanças. Construção • O código-fonte é compilado em um formato executável. Dependendo da linguagem de programação e do projeto, isso pode envolver ferramentas de construção com Maven, Gradle, ou Make. Testes Automatizados • Uma série de testes automatizados são executados para garantir que o novo código não quebre funcionalidades existentes. Isso pode incluir testes unitários, testes de integração e testes de sistema. Análise de Qualidade de Código • Ferramentas de análise estática de código, como SonarQube, podem ser usadas para verificar a qualidade do código, buscando padrões de código ruim, vulnerabilidades de segurança e aderência a padrões de codificação. Exemplo pipeline CI/CD Integração Contínua (CI) e Melhoria da Qualidade Empacotamento e Criação de Artefatos • O código construído e testado é empacotado em artefatos que podem ser distribuídos, como arquivos JAR, WAR, ou contêineres Docker. Implantação em Ambientes de Teste • Os artefatos são implantados em ambientes de teste para verificações adicionais. Isso pode envolver a configuração de ambientes de teste semelhantes ao ambiente de produção. Testes de Aceitação • Testes de aceitação do usuário (UAT) e outros testes finais são realizados para garantir que o software atenda aos requisitos especificados. Implantação em Produção • Após a aprovação final, o software é implantado no ambiente de produção. Isso pode ser feito de forma automática ou manual, dependendo das políticas da organização. Fonte: autoria própria. A IA é utilizada para otimizar testes de software e análise de código estático na CI. Algoritmos de aprendizado de máquina podem prever falhas e priorizar testes críticos. A IA facilita a gestão de recursos e a escalabilidade do ambiente de CI. A análise preditiva da IA melhora a estabilidade do código e a confiabilidade do processo de desenvolvimento. Inteligência Artificial e CI/CD Como as metodologias ágeis tratam o conceito de qualidade ao longo do ciclo de desenvolvimento? a) A qualidade é verificada apenas na fase final do desenvolvimento. b) A qualidade é tratada como uma responsabilidade de um único membro da equipe. c) A qualidade é integrada de forma contínua ao longo de todo o processo de desenvolvimento. d) A qualidade é garantida somente por meio de testes de aceitação ao final do projeto. e) A qualidade é assegurada por meio de revisões externas ao final de cada sprint. Interatividade Como as metodologias ágeis tratam o conceito de qualidade ao longo do ciclo de desenvolvimento? a) A qualidade é verificada apenas na fase final do desenvolvimento. b) A qualidade é tratada como uma responsabilidade de um único membro da equipe. c) A qualidade é integrada de forma contínua ao longo de todo o processo de desenvolvimento. d) A qualidade é garantida somente por meio de testes de aceitação ao final do projeto. e) A qualidade é assegurada por meio de revisões externas ao final de cada sprint. Resposta Testes automatizados são programas que verificam se outras partes do software estão funcionando como esperado. Eles são fundamentais para garantir a qualidade e a robustez do software durante seu desenvolvimento e manutenção. A automação dos testes garante que o software continue funcionando como esperado mesmo após múltiplas alterações e atualizações. Existem várias categorias de testes automatizados, cada uma focada em diferentes aspectos do software. Importância dos Testes Automatizados Os testes unitários verificam partes individuais do código, como funções ou métodos de forma isolada. Testes de integração verificam se diferentes partes do sistema funcionam bem juntas. Testes de sistema ou testes end-to-end verificam o software como um todo, simulando o comportamento do usuário. Testes de regressão são testes que verificam se novas alterações ou adições ao código não introduziram novos erros. Tipos de Testes Automatizados Ferramentas como JUnit, PyTest e Selenium são populares para a criação e execução de testes automatizados. Um exemplo prático é a aplicação de cupons de desconto em uma aplicação web de vendas, testando desde o cálculo do desconto até o checkout. A automação desses testes significa que toda vez que uma mudança é feita no código, todos os testes são executados automaticamente. Isso proporciona uma confiança significativa de que o software funciona conforme esperado, mesmo após múltiplas alterações e atualizações. Ferramentas e Exemplos de Testes Automatizados O papeldo QA (Quality Assurance) é fundamental no contexto dos testes automatizados, garantindo que o software atenda aos padrões de qualidade desejados. A integração de QA com testes automatizados começa no início do ciclo de desenvolvimento em ambientes ágeis. Desenvolvimento Orientado por Testes (TDD) é uma abordagem que prioriza a criação de testes antes do código, seguindo etapas de "vermelho-verde-refatorar". Refatorar o código após passar nos testes é crucial para garantir que ele seja limpo, eficiente e fácil de manter. Papel do QA e Desenvolvimento Orientado por Testes (TDD) O processo de TDD começa escrevendo um teste automatizado antes mesmo de escrever o código da funcionalidade. O teste inicialmente falha porque a funcionalidade ainda não foi desenvolvida, marcando o estágio "vermelho". Depois de escrever o código para fazer o teste passar, o estágio "verde" é atingido, indicando que a funcionalidade básica está correta. A refatoração do código melhora sua estrutura e eficiência, garantindo que todos os testes continuem passando. Implementação e Benefícios do TDD Um exemplo concreto é o desenvolvimento de um aplicativo de delivery, no qual o valor total de um pedido é calculado após se aplicar um cupom de desconto. Refatorar o código envolve aprimorar sua estrutura interna sem alterar seu comportamento externo, seguindo boas práticas de programação. Melhorar a eficiência do código pode incluir reescrever loops ineficientes para usar algoritmos mais eficientes, reduzindo o tempo de execução. A remoção de duplicação de código durante a refatoração é uma prática que melhora a reutilização e reduz erros. Aplicação Prática de TDD e Refatoração Exemplo em C#, usando NUnit para testes. Vermelho Fonte: autoria própria. Exemplo em C#, usando NUnit para testes. Verde Fonte: autoria própria. Exemplo em C#, usando NUnit para testes. Refatorado Fonte: autoria própria. Deployment em ambientes ágeis envolve a entrega do software desenvolvido para um ambiente de produção de forma contínua e rápida. O ambiente de desenvolvimento é o lugar onde os programadores escrevem e testam o novo código. O ambiente de teste é onde o software é submetido a testes rigorosos para garantir que funcione conforme o esperado. O ambiente de homologação, ou pré-produção, permite uma última verificação antes da implantação definitiva no ambiente de produção. Deployment e Ambientes de Desenvolvimento O monitoramento é crucial para garantir a qualidade e desempenho contínuos do software em produção. A cultura DevOps integra as práticas de desenvolvimento e operações, promovendo uma colaboração mais estreita entre essas áreas. O monitoramento contínuo e feedback rápido são essenciais para identificar e resolver problemas mais rapidamente. Ferramentas de integração contínua e entrega contínua automatizam o processo de build, teste e implantação do software. Monitoramento e Cultura DevOps Qual das seguintes ferramentas é amplamente utilizada para testes de integração e de sistema? a) Junit b) PyTest c) Selenium d) Jenkins e) Nunit Interatividade Qual das seguintes ferramentas é amplamente utilizada para testes de integração e de sistema? a) Junit b) PyTest c) Selenium d) Jenkins e) Nunit Resposta BECK, K. Test driven development: by example. Boston: Addison-Wesley Professional, 2021. COHN, M. Agile estimating and planning. 1. ed. Londres: Pearson, 2005. CRISPIN, L.; GREGORY, J. Agile testing: a practical guide for testers and agile teams. Boston: Addison-Wesley Professional, 2009. PMI. Project Management Institute, 2024. Disponível em: https://www.pmi.org/. Acesso em: 01 maio 2024. TAKEUCHI,H. ; NONAKA, I. The New New Product Development Game. Harvard Business Review, v. 64, n. 1, p. 137-146, jan. 1986. Referências ATÉ A PRÓXIMA!