SDLC e STLC - porquê a existência de dois ciclos?
É verdade que nem todas as pessoas conhecem a existência do Software Testing Life Cycle embora a maioria delas o aplique de forma inconsciente no seu dia a dia e planeamento de tarefas.
E por isso surge várias vezes a questão: então mas qual a diferença entre ambas e qual a mais valia de uma definição concreta e implementação do STLC?
Vou apresentar-te de forma bastante resumida por agora cada um dos ciclos (com a promessa de voltar ao tema com mais detalhe!) e focar no porquê, como e quando usar/aplicar o STLC.
SDLC (Software Development Life Cycle)
O SDLC é uma framework que define as etapas e processos necessários para o desenvolvimento de software, desde a sua concepção até à sua entrega e manutenção.
As principais fases do SDLC incluem:
Planeamento: definição dos objetivos, escopo/objectivo e requisitos do projeto.
Análise de Requisitos: descrição e análise das necessidades do sistema e especificação dos requisitos.
Design: definição da arquitetura e design do sistema de forma detalhada, incluindo as interfaces, as bases de dados e lógica de negócio necessária.
Desenvolvimento: codificação e implementação do software.
Teste: verificação e validação do software, para garantir que o mesmo corresponde aos requisitos especificados e não tem nenhum erro não expectável.
Implantação: instalação/entrega do software no ambiente de produção.
Manutenção: correção de problemas, melhorias e actualizações contínuas.
STLC (Software Testing Life Cycle)
O STLC é um sub-conjunto do SDLC, focado exclusivamente nos aspectos de teste do software. O objectivo é definir todas as atividades que devem ser realizadas para garantir a qualidade do software. Acaba por ter nas fases uma grande semelhança com as que são definidas no SDLC.
Pode ser dividido em várias fases, como por exemplo:
Planeamento: definição da estratégia de teste, escopo/objectivos, recursos necessários e cronograma.
Análise de Requisitos: análise dos requisitos definidos, para identificar o que terá de ser testado.
Design: escrita dos casos de teste, roteiros/scripts e dados de teste.
Preparação: configuração do ambiente de teste e preparação dos testes.
Execução: executar os casos de teste definidos, segundo os roteiros e priorização e registo dos resultados obtidos.
Conclusão: revisão dos resultados de teste, relatório de defeitos e avaliação da cobertura de teste (com recurso a métricas para análise).
Hand-off: documentação e arquivo de todos os artefactos de teste, além de possíveis revisões/análises pós-projeto.
Como o SDLC e o STLC se complementam?
Integração de Fases
Cada fase do STLC está alinhada com as fases do SDLC, garantindo assim que os testes são considerados em cada etapa do desenvolvimento.
Por exemplo, durante a fase de análise de requisitos do SDLC deve decorrer em simultâneo a fase de análise de testes do STLC.
Qualidade Contínua
O STLC ajuda a identificar e corrigir defeitos e problemas o mais cedo possível no ciclo de vida do software, permitindo assim reduzir o custo e o tempo para correção de erros em momentos mais avançados do ciclo (ou já mesmo em ambiente de produção). Esta antecipação é feita com base no conhecimento que é transferido durante os períodos de análise e concepção.
Feedback Contínuo
O STLC fornece feedback contínuo ao SDLC sobre a qualidade do software, permitindo ajustes e melhorias de forma contínua e continuada.
Quais são as mais-valias do STLC ?
Detecção precoce e antecipada de defeitos: ao realizar testes em cada fase do desenvolvimento, os erros e defeitos são identificados e corrigidos mais cedo, reduzindo o custo e o esforço para correção.
Qualidade melhorada: ao ter testes sistemáticos e abrangentes é possível garantir que o software corresponde aos requisitos de qualidade e funciona conforme esperado.
Redução de riscos: ao identificar de forma precoce potenciais problemas existe uma maior capacidade de mitigar possíveis riscos associados ao desenvolvimento de software.
Planeamento estruturado: ao fornecer uma abordagem estruturada para planeamento e execução de testes, é possível garantir uma cobertura mais ampla e completa dos requisitos.
Como e Quando usar o STLC ?
Aplicação do STLC
durante TODO o processo de desenvolvimento: o STLC deve ser aplicado logo desde o início do desenvolvimento (análise de requisitos) até à conclusão e fecho do projeto (manutenção e suporte).
em projetos de qualquer tamanho: independentemente do tamanho ou complexidade do projeto, o STLC pode ser adaptado à realidade e necessidades do mesmo, por forma a para garantir a qualidade do software.
ambientes ágeis: em metodologias ágeis, o STLC é iterativo, com testes realizados em cada sprint ou iteração. Portanto, é mesmo uma roda sempre em movimento, um verdadeiro ciclo em execução contínua e continuada.
Implementação na Equipa
Mesmo que a prática de STLC não esteja formalmente estabelecida na equipa, você pode integrá-la da seguinte forma:
Definição de Estratégia de Testes: propõe e documenta uma estratégia de testes alinhada com as fases do projeto.
Criação de Casos de Teste: desenvolve casos de teste e roteiros desde a fase de design até a implementação.
Automação de Testes: introduz a automação (com a devida análise para o caso em questão. Nem todos os testes dão para ser automatizados) para garantir testes contínuos e regressivos.
Comunicação: comunica regularmente os resultados dos testes e os feedbacks à equipa de desenvolvimento.
Feedback e Melhoria Contínua: participa nas reuniões de revisão de sprint (ou de projeto), fornece feedback concreto e válido, e propõe melhorias com base nos resultados dos testes.
O SDLC e o STLC são frameworks essenciais para garantir a entrega de software de alta qualidade.
Enquanto o SDLC cobre todo o ciclo de vida do desenvolvimento de software, o STLC foca-se especificamente nos processos de teste, garantindo que a qualidade é mantida em cada etapa.
Integrar o STLC no teu dia a dia, mesmo em equipas que ainda não o utilizam formalmente, pode trazer benefícios significativos em termos de detecção precoce de defeitos, melhoria da qualidade e redução de riscos.