🚀 Capítulo 01: Introdução à Qualidade de Software (Tema: Matrix)

NOTE

Este capítulo utiliza a temática de Matrix para explicar a Qualidade de Software. O sistema está cheio de falhas (glitches)? Escolha a pílula da qualidade e garanta que a simulação funcione perfeitamente!


1. 🎯 Objetivo da Aula

Compreender o conceito de Qualidade de Software e entender que testar não é apenas “procurar erros”, mas garantir que o sistema atenda às necessidades do usuário com confiabilidade e segurança.

2. 🏢 O Cenário Prático (Seu Desafio)

Você é o Arquiteto da Matrix. Humanos estão conectados e esperando uma realidade perfeita.

  • Se o código do céu falhar, as pessoas verão a cor verde cair (Glitches).
  • Se o código da gravidade falhar, as pessoas começarão a voar sem querer.

Um software sem qualidade na Matrix significa que as pessoas vão acordar e a simulação vai falhar! Seu desafio como programador é garantir que o código seja robusto o suficiente para que ninguém perceba que está em um sistema.

3. 🧠 Fundamentos: A Teoria Traduzida

📜 1. O que é Qualidade de Software?

Não existe um software 100% livre de bugs. Qualidade significa que o software faz o que foi projetado para fazer, de forma confiável, eficiente e segura.

🛡️ 2. Os Pilares da Qualidade (Norma ISO 25010):

  • Adequação Funcional: O sistema faz o que o usuário precisa?
  • Confiabilidade: O sistema continua funcionando mesmo sob estresse?
  • Usabilidade: É fácil para o usuário entender e usar?
  • Segurança: Os dados estão protegidos contra invasores?
  • Manutenibilidade: É fácil para outro programador corrigir ou atualizar o código?

💰 3. O Custo do Bug

Quanto mais tarde um bug é descoberto, mais caro ele fica para ser corrigido!

  • Se você encontra o bug enquanto escreve o código: Custa R$ 10.
  • Se o testador encontra o bug antes de lançar: Custa R$ 100.
  • Se o usuário final encontra o bug em produção: Custa R$ 10.000 (e queima a reputação da empresa).

4. 📖 Exemplo Guiado: O Gato Preto (Glitch)

Na Matrix, ver o mesmo gato preto passando duas vezes é sinal de que o código foi alterado ou falhou. No software, chamamos isso de comportamento inconsistente.

Código com Baixa Qualidade (Matrix com Glitch):

let populacao = 1000;
 
function removerHumano() {
    // Código perigoso que não verifica se a população já é zero!
    populacao = populacao - 1;
}

Se chamarmos essa função 1001 vezes, a população ficará negativa! Isso é um bug de lógica que quebra a Matrix.

Código com Qualidade (Matrix Segura):

let populacao = 1000;
 
function removerHumano() {
    if (populacao > 0) {
        populacao = populacao - 1;
    } else {
        console.log("Alerta: Não há mais humanos para remover!");
    }
}

5. 🛠️ Prática Obrigatória 1: Identificando Falhas

Diga qual pilar da qualidade (Confiabilidade, Usabilidade ou Segurança) foi violado em cada situação:

  1. O usuário tenta clicar em um botão, mas ele é tão pequeno que ninguém consegue acertar com o dedo.
  2. O sistema fica fora do ar toda vez que mais de 10 pessoas tentam acessar ao mesmo tempo.
  3. Um hacker conseguiu descobrir a senha de todos os usuários porque elas estavam salvas em texto comum no banco de dados.

6. 🛠️ Prática Obrigatória 2: O Custo da Falha

Imagine que você está criando o software de controle de um foguete espacial.

  1. O que acontece se um bug passar despercebido e o foguete explodir?
  2. Por que os testes nesse tipo de sistema precisam ser muito mais rigorosos do que em um aplicativo de entrega de pizza?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 01 Qualidade) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_11_qualidade_e_testes_de_software/
├── capitulos/
│   ├── capitulo_01_introducao.md
│   └── codigos/
│       └── cap01/
│           └── glitch.js

9. 💡 Checkpoint de Lógica

Testar software não é apenas tentar quebrar o sistema. É garantir que ele funcione nos caminhos felizes (onde o usuário faz tudo certo) e nos caminhos de exceção (onde o usuário faz besteira ou o sistema falha).

10. 🔥 Desafio de Fixação

Pesquise sobre o caso do foguete Ariane 5 (1996), que explodiu em 40 segundos devido a um bug de software de conversão de dados. Quanto custou esse bug?

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Usabilidade (Dificuldade de uso).
  2. Confiabilidade (O sistema não aguenta carga).
  3. Segurança (Vazamento de dados por falta de proteção).

Capitulo Anterior | Proximo Capitulo