Este é um curso para quem já tem experiência de programação.
Leia atentamente essas observações:
Não é um curso para iniciantes.
Alguns exemplos serão mostrados em 3 linguagens de programação: Java, Python e Golang.
Você precisa conhecer pelo menos uma delas. Não é necessário conhecer mais do que uma dessas linguagens.
As linguagens de programação usadas como exemplo (Java, Python e Golang) não serão ensinadas no curso.
Experiência com programação HTTP/REST é importante.
Conhecimento de redes e nuvem também.
Conhecimento de repositórios (Git) e alguma ferramenta de CI/CD também é importante.
O curso de Engenharia de Testes de Software é projetado para atender à crescente demanda por profissionais qualificados na área de desenvolvimento e também de qualidade de software. Este programa abrangente tem como objetivo equipar os participantes com conhecimentos teóricos avançados e habilidades práticas essenciais para planejar, executar e gerenciar atividades de testes de software eficazes em ambientes de desenvolvimento ágeis e tradicionais. Através de uma abordagem prática, o curso visa desenvolver competências críticas em testes manuais e automatizados, análise de riscos, gestão de testes e uso de ferramentas modernas de teste de software.
Veremos testes com vários objetivos, como:
Testes unitários
Testes de integração
Testes Behavior-driven development
Testes ponta a ponta (E2E)
Testes de sistema (requisitos não funcionais, carga)
E veremos análises importantes como a de cobertura de testes. E os exemplos da maioria das lições são em: Java, Python e Golang!
Veremos várias bibliotecas e ferramentas como:
Linguagem Gherkin
Cucumber (Java)
Behave (Python)
Godog (Golang)
Cypress (testes E2E)
Postman (testes E2E de API)
K6 (testes de carga)
Postgres, Docker etc.
TestContainers
A abordagem será orientada pelo SDLC (Software Development Life Cycle ou Ciclo de vida de desenvolvimento de software) e o STLC (Software Testing Life Cycle, ou Ciclo de vida de teste de software) que são conceitos fundamentais no desenvolvimento e na garantia da qualidade de software, respectivamente. Eles descrevem as fases e os processos sistemáticos envolvidos no desenvolvimento e no teste de software, garantindo eficiência, qualidade e conformidade com os requisitos do usuário.
Veremos testes em várias categorias diferentes. A classificação de testes de software por objetivo do teste envolve categorizar os diferentes tipos de testes com base no que eles se propõem a verificar ou validar no produto de software. Essa classificação ajuda as equipes a entender o foco e o propósito de cada teste, permitindo uma cobertura de teste mais eficaz e eficiente. Os principais objetivos dos testes de software incluem:
1. Testes Funcionais
Estes testes avaliam as funcionalidades do sistema para garantir que ele opera de acordo com os requisitos especificados. Incluem:
- Testes de Unidade: Verificam a menor parte testável de um software, como funções ou métodos.
- Testes de Integração: Avaliam a combinação e a interação entre diferentes módulos ou serviços.
- Testes de Sistema: Testam o sistema completo para verificar sua conformidade com os requisitos especificados.
- Testes de Aceitação: Realizados com ou pelo cliente para validar a adequação do software para uso em ambientes de produção.
2. Testes Não Funcionais
Focam em aspectos do sistema que não estão relacionados diretamente às funções específicas do software, como:
- Testes de Desempenho: Avaliam o comportamento do sistema sob determinadas condições, incluindo testes de carga, stress e estabilidade.
- Testes de Usabilidade: Verificam o quão fácil e intuitivo o software é para os usuários finais.
- Testes de Segurança: Identificam vulnerabilidades, ameaças e riscos no software.
- Testes de Compatibilidade: Verificam a interoperabilidade do software com diferentes ambientes, sistemas operacionais, navegadores, etc.
3. Testes de Regressão
Verificam se as novas mudanças no software não afetaram as funcionalidades existentes. São cruciais após atualizações ou modificações do código.
4. Testes de Recuperação
Avaliam a capacidade do software de se recuperar de falhas, crashes ou outros problemas críticos.
5. Testes de Confiabilidade
Medem a confiabilidade e a estabilidade do software ao longo do tempo, sob condições normais de operação.
6. Testes de Localização e Internacionalização
Verificam a adaptação do software para diferentes idiomas, regiões geográficas e culturas, incluindo a tradução de textos e a formatação de dados.
Cada tipo de teste tem um objetivo específico e juntos, eles garantem que todos os aspectos do software, tanto funcionais quanto não funcionais, sejam rigorosamente avaliados. A escolha dos testes a serem aplicados em um projeto de software depende dos requisitos específicos do projeto, dos riscos identificados, do orçamento disponível e das prioridades da equipe de desenvolvimento e dos stakeholders.