Guia de Padrões de Projeto e Testes de Software

Classificado em Computação

Escrito em em português com um tamanho de 2,24 KB

Implementação do Padrão Singleton

public class RegistrySingleton {
    private static RegistrySingleton object = null;
    public Dictionary<string, string> ipList = new Dictionary<string, string>();

    private RegistrySingleton() { }

    public void setIP(string machine, string IP) {
        instance().ipList.Add(IP, machine);
    }

    public static RegistrySingleton instance() {
        if (object == null) {
            object = new RegistrySingleton();
        }
        return object;
    }
}

Estrutura de Página Web (Composite Pattern)

h = new Composite("HTML");
b = new Composite("Body");
d = new Composite("Div");
l = new Leaf();
l.texto = "Olá";
l.descrição = "Bom Dia";
d.IdElement(l);
b.IdElement(d);
h.IdElement(b);
h.doThis();

Testes de Condição e Loops

for (int i=0; i < records.length; i++)

  • Solução Válida: records.length > 0 (executa prints) ou records.length == 0 (não faz nada).
  • Solução Inválida: records == null (gera exceção).

Cobertura de Decisões Múltiplas

Exemplo: if(++a > 5 && ++a > 6) a++;

Para cobrir as decisões, é necessário testar para verdadeiro (V) e falso (F):

  • a ≥ 5: Condição V, V; Decisão V.
  • a ≤ 4: Condição F, F; Decisão F.

Nota: As condições V-F e F-V não são atingíveis.

Análise de Condições Lógicas

while(a!=1 || b!=1 || c!=1)

  • Solução Válida: a=1, b=1, c=3 (Condição F, F, V; Decisão V).
  • Solução Inválida: a=1, b=1, c=1 (Condição F, F, F; Decisão F).

Validação de Objetos JSON

{“idade” : 20};

Verificação de integridade:

if(obj && typeof obj.idade === "number" && obj.idade >= 0) { }
  • Solução Válida: {"idade" : 30}
  • Solução Inválida: {"idade" : {}} ou {}

Entradas relacionadas: