Testes e qualidade

Qualidade em NEO não depende só de testar controllers. É preciso validar metadados, permissões, APIs, jobs, relatórios e comportamento do front-end.

Princípios

  • testes devem ser versionados;

  • dados de teste precisam ser previsíveis;

  • cenários devem ser pequenos e determinísticos;

  • mudanças de metadado também precisam de validação.

Exemplo de teste backend

import neo
from neo.tests.utils import NeoTestCase

def create_member():
    if neo.db.exists("Library Member", "MEM-TEST-0001"):
        return

    neo.get_doc({
        "doctype": "Library Member",
        "name": "MEM-TEST-0001",
        "first_name": "Ada",
        "last_name": "Lovelace"
    }).insert(ignore_permissions=True)

class TestLibraryMember(NeoTestCase):
    def setUp(self):
        create_member()

    def test_member_exists(self):
        self.assertTrue(neo.db.exists("Library Member", "MEM-TEST-0001"))

O que testar no backend

  • validações;

  • submit e cancel;

  • serviços de domínio;

  • APIs whitelisted;

  • jobs;

  • patches;

  • permissões.

Qualidade de front-end

Mesmo quando a equipe ainda não automatiza UI, deve haver validação funcional para:

  • botões do formulário;

  • scripts de campo;

  • diálogos;

  • pages;

  • portal;

  • reports.

Estratégia prática

  1. testes unitários de backend;

  2. smoke test manual do Desk;

  3. validação com usuário sem privilégio;

  4. verificação de build e carregamento de assets.

Testes de migração

Mudanças de estrutura devem ser testadas com dados já existentes, não apenas em base vazia.

Atualizado