Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Câmpus Jacareí Tecnologia em Análise e Desenvolvimento de Sistemas ADS 10 Semestre de 2023 Teste de Software – TSWI5 Prof. Lineu Mialaret Aula 4: Teste no Processo de Desenvolvimento de Software ©Prof. Lineu TSWI5 - Aula 4 - 1/18 Desenvolvimento de Software e Teste Um processo (modelo de ciclo de vida) de desenvolvimento de software descreve os tipos de atividades realizadas em cada estágio de um projeto de desenvolvimento de software e como as atividades se relacionam umas com as outras de forma lógica e cronológica. • Há vários modelos de processos de desenvolvimento de software, cada um dos quais requer abordagens diferentes para o teste. ©Prof. Lineu TSWI5 - Aula 4 - 2/18 Desenvolvimento de Software e Teste (cont.) Em qualquer processo de desenvolvimento de software, existem várias características para um bom teste: • Para cada atividade de desenvolvimento, existe uma atividade de teste correspondente. • Cada nível de teste tem objetivos específicos. • A análise e a modelagem de teste para um determinado nível de teste começam durante desenvolvimento correspondente. a atividade de • Os testadores participam de discussões para definir e refinar os requisitos e a modelagem, e estão envolvidos na revisão dos produtos de trabalho (requisitos, modelagem, estórias de usuários, etc.) assim que os rascunhos estiverem disponíveis. ©Prof. Lineu TSWI5 - Aula 4 - 3/18 Desenvolvimento de Software e Teste (cont.) Independentemente do processo de desenvolvimento de software escolhido, as atividades de teste devem começar nos estágios iniciais do ciclo de vida, aderindo ao princípio de testar do início. ©Prof. Lineu TSWI5 - Aula 4 - 4/18 Desenvolvimento de Software e Teste (cont.) Um modelo de desenvolvimento sequencial descreve o processo de desenvolvimento de software como um fluxo sequencial e linear de atividades. • Isso significa que qualquer fase do processo de desenvolvimento deve começar quando a fase anterior estiver concluída. • Em teoria, não há sobreposição de fases, mas, na prática, é benéfico ter antecipadamente o feedback da fase seguinte. ©Prof. Lineu TSWI5 - Aula 4 - 5/18 Desenvolvimento de Software e Teste (cont.) No Modelo Cascata (Waterfall), as atividades de desenvolvimento (análise de requisitos, projeto, codificação, teste) são concluídas uma após a outra. • Nesse modelo, as atividades de teste só ocorrem após todas as outras atividades de desenvolvimento terem sido concluídas. ©Prof. Lineu TSWI5 - Aula 4 - 6/18 Desenvolvimento de Software e Teste (cont.) Ao contrário do Modelo Cascata, o Modelo V integra o processo de teste ao longo do processo de desenvolvimento, implementando o princípio de testar do início. • Além disso, o Modelo V inclui níveis de teste associados a cada fase de desenvolvimento correspondente, suportando o princípio de testar do início, e a execução dos testes associados a cada nível de teste ocorre sequencialmente, mas em alguns casos pode ocorrer a sobreposição. ©Prof. Lineu TSWI5 - Aula 4 - 7/18 Desenvolvimento de Software e Teste (cont.) Os modelos de desenvolvimento sequencial fornecem software que contêm o conjunto completo de funcionalidades, mas normalmente exigem meses ou anos para serem entregues aos stakeholders e aos usuários. ©Prof. Lineu TSWI5 - Aula 4 - 8/18 Desenvolvimento de Software e Teste (cont.) O Desenvolvimento Incremental envolve o estabelecimento de requisitos, a modelagem, a construção e o teste de um sistema em partes, o que significa que o software cresce de forma incremental. • Os incrementos de software podem ser tão pequenos quanto uma única alteração para uma tela de interface do usuário ou uma nova opção de consulta ou uma nova funcionalidade. ©Prof. Lineu TSWI5 - Aula 4 - 9/18 Desenvolvimento de Software e Teste (cont.) O Desenvolvimento Iterativo ocorre quando funcionalidades são especificadas, projetadas, construídas e testadas juntas em uma série de ciclos, geralmente com duração fixa. • Iterações podem envolver mudanças em funcionalidades desenvolvidas em iterações anteriores, juntamente com mudanças no escopo do projeto. • Cada iteração fornece software funcional que é um subconjunto crescente do sistema concebido até que o software final seja entregue ou o desenvolvimento seja interrompido. ©Prof. Lineu TSWI5 - Aula 4 - 10/18 Desenvolvimento de Software e Teste (cont.) Há uma junção de Desenvolvimento Incremental e Desenvolvimento Iterativo. ©Prof. Lineu TSWI5 - Aula 4 - 11/18 Desenvolvimento de Software e Teste (cont.) Exemplos: • Rational Unified Process - cada iteração tende a ser relativamente longa (dois a três meses) e os incrementos de funcionalidades são correspondentemente grandes, como dois ou três grupos de funcionalidades relacionadas. • Scrum - cada iteração tende a ser relativamente curta (horas, dias ou algumas semanas) e os incrementos de funcionalidades são correspondentemente pequenos, como alguns aprimoramentos e / ou dois ou três novos recursos. • Espiral (ou prototipagem) - envolve a criação de incrementos experimentais, alguns dos quais podem ser muito retrabalhados ou até mesmo abandonados em trabalhos subsequentes de desenvolvimento. ©Prof. Lineu TSWI5 - Aula 4 - 12/18 Desenvolvimento de Software e Teste (cont.) Componentes ou sistemas desenvolvidos usando esses métodos geralmente envolvem a sobreposição e a interação dos níveis de teste ao longo do desenvolvimento. Idealmente, cada funcionalidade é testada em vários níveis de teste à medida que se aproxima da entrega. • Em alguns casos, as equipes usam entrega contínua ou implantação contínua, as quais envolvem automação significativa de vários níveis de teste como parte de seus canais de entrega. • Muitos esforços ©Prof. Lineu de desenvolvimento usando esses modelos de desenvolvimento também incluem o conceito de equipes auto-organizadas, que podem mudar a maneira como o trabalho de teste é organizado, bem como a relação entre testadores e desenvolvedores. TSWI5 - Aula 4 - 13/18 Desenvolvimento de Software e Teste (cont.) Todos esses modelos formam um sistema crescente, que pode ser liberado para os usuários finais em uma base de funcionalidade por funcionalidade, em uma iteração por iteração, ou em um modelo de liberação principal mais tradicional. • Independentemente de os incrementos de software serem liberados para os usuários finais, o Teste de Regressão é cada vez mais importante à medida que o sistema cresce. ©Prof. Lineu TSWI5 - Aula 4 - 14/18 Desenvolvimento de Software e Teste (cont.) Os processos de desenvolvimento de software devem ser selecionados e adaptados ao características do projeto e do produto. contexto das • Um processo de desenvolvimento de software apropriado deve ser selecionado e adaptado com base na meta do projeto, no tipo de produto que está sendo desenvolvido, nas prioridades de negócios e nos riscos identificados de produto e projeto. Exemplo: • O desenvolvimento e teste de um pequeno sistema administrativo interno deve diferir do desenvolvimento e teste de um sistema crítico de segurança, como o sistema de controle de freio de um automóvel. • Em alguns casos, questões organizacionais e culturais podem inibir a comunicação entre os membros da equipe, impedindo o desenvolvimento iterativo. ©Prof. Lineu TSWI5 - Aula 4 - 15/18 Desenvolvimento de Software e Teste (cont.) Dependendo do contexto do projeto, pode ser necessário combinar ou reorganizar os níveis e/ou as atividades de teste. Exemplo: • Na integração de um produto de software comercial de prateleira (COTS) em um sistema maior, o comprador pode realizar testes de interoperabilidade no nível de teste de integração do sistema (integração à infraestrutura e outros sistemas) e nível de teste de aceitação (funcional e não funcional, juntamente com os testes de aceitação do usuário e operacional). ©Prof. Lineu TSWI5 - Aula 4 - 16/18 Desenvolvimento de Software e Teste (cont.) Além disso, os próprios processos de desenvolvimento de software podem ser combinados. Exemplo: • Um Modelo de Desenvolvimento V pode ser usado para o desenvolvimento e teste dos sistemas de apoio e suas integrações, enquanto um modelo de desenvolvimento ágil pode ser usado para desenvolver e testar a interface do usuário e a funcionalidade. • A prototipagem pode ser usada no início de um projeto, com um modelo de desenvolvimento incremental adotado uma vez que a fase experimental esteja completa. ©Prof. Lineu TSWI5 - Aula 4 - 17/18 Desenvolvimento de Software e Teste (cont.) Os motivos pelos quais os modelos de desenvolvimento de software devem ser adaptados ao contexto das características do projeto e do produto podem ser: • Diferença nos riscos de produto dos sistemas (projeto complexo ou simples). • Muitas unidades de negócios podem fazer parte de um projeto ou programa (combinação de desenvolvimento sequencial e ágil). • Pouco tempo para entregar um produto ao mercado (mesclagem de níveis de teste ou integração de tipos de teste nos níveis de teste). ©Prof. Lineu TSWI5 - Aula 4 - 18/18