Módulo 8 · Engenharia de Software · Aula 1

Testes em aplicações de linguagem natural

Material de leitura sobre a defesa de um trecho de código pelas exceções que ele trata: o caso da segurança no PIX executado por linguagem natural, as cinco categorias de exceção fora do caminho feliz, os níveis de teste e o oráculo, as características da ISO/IEC 25010 e a redação dos cenários de aceitação em Gherkin.

Sobre este encontro

Testes em aplicações de linguagem natural · 18/09/2026 · Prof. Afonso

Objetivo de aprendizagem

Ao final do encontro, o estudante deve ser capaz de enumerar, por categoria, as exceções que um trecho de código do projeto precisa tratar fora do caminho feliz — regra de negócio incompleta, infraestrutura, segurança por fraude ou imprecisão, não repúdio e usabilidade —, associar cada exceção à característica de qualidade correspondente da ISO/IEC 25010 e convertê-la em requisito verificável com valor, unidade, limiar, nível de teste e oráculo declarado, redigindo o cenário de aceitação correspondente em Gherkin.

Estratégia do encontro

Aprendizagem em equipe sobre um caso único de instituição de pagamento que executa PIX por comando em linguagem natural, percorrido por cinco questões, uma para cada categoria de exceção fora do caminho feliz; em cada questão o estudante decide entre quatro táticas com ganho e custo declarados, lê as justificativas da turma sem identificação, discute e decide outra vez, e uma delas traz um dado novo que desloca o critério da decisão; a sistematização das categorias e a produção dos cenários de aceitação do projeto em Gherkin encerram o encontro.

Estrutura do encontro

  1. Daily: estado dos artefatos, atividade prevista e impedimentos — 15 min
  2. Abertura: caso do PIX, as cinco questões e as regras do TBL — 5 min
  3. TBL: cinco questões, cada uma com decisão individual, discussão e segunda decisão — 45 min
  4. Consolidado: o caminho feliz percorrido inteiro e a perda ocorrida — 5 min
  5. Exceções: cinco categorias, cadeia de processamento e não repúdio — 15 min
  6. ISO 25010 e Gherkin: características de qualidade e cenários do projeto — 25 min
  7. Encaminhamentos: benchmarking, autoestudos e vídeo do ciclo dirigido por testes — 5 min
  8. Fechamento: o valor da atitude de qualidade no projeto — 5 min

1. Como ler este material

O texto antecede o encontro. A primeira hora da aula é ocupada por cinco decisões de arquitetura submetidas à turma, uma por categoria de exceção, e a hora seguinte pela enumeração das exceções do próprio projeto e pela redação dos cenários correspondentes. A leitura prévia é o que torna essa produção viável no tempo disponível.

As seções 3 a 4 apresentam o caso discutido em sala e as alternativas em disputa; as seções 5 e 6 estabelecem o eixo do encontro, que é a enumeração das exceções fora do caminho feliz por categoria. As seções 7 a 12 tratam do objeto e dos níveis de teste, da automação e do oráculo. A seção 13 apresenta a ISO/IEC 25010, e as seções 14 e 15 tratam da redação dos cenários em Gherkin e do ciclo de desenvolvimento dirigido por testes, este último em vídeo. As seções 16 a 22 aprofundam falhas da automação, não repúdio e benchmarking, e correspondem, respectivamente, ao Autoestudo 2 na seção 11 e ao Autoestudo 1 nas seções 20 a 22.

2. O problema central

A pergunta que organiza o encontro é a seguinte: o que testar e como testar uma aplicação cuja interação com o usuário se dá em linguagem natural.

Em uma aplicação convencional, a entrada é um formulário com campos tipados e domínio conhecido, e a saída esperada é única. O teste compara o resultado observado com o resultado previsto. Em uma aplicação operada por enunciados, três propriedades dessa situação desaparecem.

A primeira é a enumerabilidade da entrada. O conjunto de frases que um usuário pode proferir não é finito nem previsível, e a especificação por casos de uso cobre apenas uma fração dele. A segunda é a unicidade da saída correta: formulações distintas podem ser igualmente adequadas, de modo que a comparação literal reprova paráfrases corretas e aprova apenas a resposta que coincide com a redação da referência. A terceira é a estabilidade: modelos estatísticos produzem resultados distintos entre versões, e a mesma entrada pode gerar saídas diferentes ao longo do tempo.

Consequência da interação aberta

Essas três propriedades não esgotam o problema. O caso examinado no encontro, apresentado na seção seguinte, mostra que a perda pode concentrar-se em ocorrências nas quais a cadeia de processamento operou corretamente: o enunciado foi transcrito, a intenção foi reconhecida e a ordem executada correspondeu ao que o titular pediu.

A consequência para a engenharia é a seguinte: a especificação do requisito precisa declarar, antes da implementação, qual evidência será aceita como prova de conformidade — métrica, limiar, conjunto de referência e procedimento de medição.

3. A situação-problema: segurança no PIX

O caso a seguir é submetido à turma antes de qualquer exposição conceitual e organiza as cinco questões do encontro.

O canal de pagamento por linguagem natural entrou em operação há sete trimestres, em resposta à perda de participação da instituição entre clientes que transferiam valores fora do horário comercial. A instituição mantém 4,2 milhões de contas e oferece o canal em duas superfícies: o assistente do aplicativo próprio e um canal de mensagens operado por terceiro. O titular enuncia a ordem em texto ou em áudio; o sistema transcreve o enunciado, infere a intenção, extrai valor e destinatário, consulta o diretório de chaves, apresenta a leitura de volta com o nome do beneficiário e executa a transferência mediante confirmação explícita. A adoção superou a projeção do plano de negócio: o canal responde hoje por 23% das transações e por 31% do volume iniciado entre 20h e 6h, e a conversão entre a ordem enunciada e a ordem liquidada é de 82%.

As contestações acompanharam o crescimento. Foram 410 ocorrências no trimestre em que o canal alcançou participação de dois dígitos, 1.130 no seguinte e 1.870 no último, com perda de R$ 3,1 milhões e valor médio contestado de R$ 1.658. A ouvidoria responde a cada contestação em até sete dias úteis e, na ausência de critério técnico que distinga as situações, a instituição vem ressarcindo parte dos casos por decisão comercial, o que constitui despesa crescente e sem previsão orçamentária.

A apuração encontra limite no próprio registro. O registro de contestação admite um único código para situações de natureza distinta: o enunciado reconhecido de forma incorreta, a chave de destino divergente do beneficiário pretendido e a ordem emitida pelo próprio titular autenticado são arquivados sob a mesma rubrica. A área de risco reconhece que a decisão de arquitetura seria diferente conforme a origem predominante, e a revisão individual das 1.870 ocorrências está em curso, sem prazo de conclusão declarado.

O conselho de administração deliberou, na reunião do mês passado, pela redução de 60% da perda em dois trimestres. A diretoria de produto sustenta que a medida não pode reduzir a conversão do canal, cuja receita incremental financia o programa de modernização da plataforma. A área jurídica registra que o Banco Central exige o registro da transação, mantém o Mecanismo Especial de Devolução para os casos contestados e limita o valor das transações noturnas, e que a retenção de gravação e de transcrição observa base legal, finalidade e prazo declarados perante a Lei Geral de Proteção de Dados Pessoais.

A equipe responsável pela plataforma de pagamentos dispõe de um trimestre para implantar as respostas, com sete pessoas alocadas e sem previsão de contratação. Cada exceção que o canal expõe — a regra de negócio que não previu a combinação de condições, a falha de infraestrutura que duplica a ordem, a fraude que se aproveita do comportamento correto do sistema, a impossibilidade de reconstituir a ordem contestada e a confirmação que o titular executa sem conferir — admite mais de uma resposta de engenharia, e cada resposta impõe um custo distinto ao cliente legítimo, à operação ou à instituição. As decisões de arquitetura serão tomadas nesta semana.

Pergunta submetida à turma

Como a instituição trata cada classe de exceção que o canal operado por linguagem natural expõe? A pergunta se desdobra em cinco questões, uma por categoria. Em cada uma a decisão é individual, registrada com justificativa, e revista depois da discussão.

4. As cinco questões do encontro

O caso é percorrido por cinco questões, cada uma referente a uma categoria de exceção que sai do caminho feliz. Cada questão apresenta quatro táticas com ganho e custo declarados, e nenhuma é correta em abstrato: cada uma responde a uma classe de falha e permanece exposta a outra.

CategoriaA exceção em exameO que a decisão precisa equilibrar
1Regra de negócio incompletaOrdem de R$ 900 às 21h40 para chave cadastrada há oito minutos, de titular com quatro ordens semelhantes na última hora. Nenhuma condição isolada excede o limite, e a combinação não foi prevista.Recusar o que não foi previsto, substituir o limite discreto por pontuação de risco, encaminhar o caso à análise humana ou organizar a regra em tabela de decisão versionada.
2Infraestrutura: conexão e integridadeOrdem liquidada cuja resposta não alcança o aplicativo por queda de conexão; o titular reenvia, e 312 ordens saíram em duplicidade no trimestre.Chave de idempotência emitida pelo cliente, confirmação em duas fases, fila durável com deduplicação ou detecção por semelhança entre ordens próximas.
3Segurança: fraude e imprecisãoA resposta primária à perda de R$ 3,1 milhões no canal. A discussão desta questão abre com um dado novo sobre a origem das ocorrências.Verificar antes de executar, limitar a exposição por envelope de risco, duplicar o reconhecimento ou reverter com rastro oponível.
4Segurança: não repúdioContestação judicial de ordem de R$ 12.400, com registros gravados pelo próprio serviço, sem assinatura e sem encadeamento.Trilha assinada e encadeada, retenção do áudio original, custódia por repositório de terceiro ou assinatura pelo dispositivo do titular.
5UsabilidadeLeitura de volta apresentada e confirmada em 96% das ocorrências de engano, por habituação à confirmação repetida.Fricção seletiva, intervalo de reflexão antes da liquidação, confirmação que exija elaboração do titular ou interrupção por indício de coação.

O percurso de cada questão

A decisão é tomada duas vezes sobre o mesmo cardápio de alternativas, na sala de aprendizagem em equipe publicada no acervo. A primeira ocorre com a distribuição da turma oculta, em três minutos, de modo que a escolha decorra do argumento e não da adesão à maioria. Seguem-se quatro minutos de discussão, em que as justificativas são lidas sem identificação, e dois minutos para decidir outra vez. A síntese projeta as duas distribuições e o deslocamento entre elas antes de a questão seguinte abrir.

O que se mede

O deslocamento entre a primeira e a segunda decisão de cada questão, registrado como matriz de transições entre as táticas. Não há gabarito: o que se examina é a consistência entre a evidência disponível e a decisão declarada, e o efeito do argumento alheio sobre a própria escolha.

O dado novo da terceira questão

A discussão da terceira questão abre com a classificação individual das 1.870 ocorrências. Em 78% delas não houve erro de reconhecimento nem chave divergente: o titular autenticado enunciou o comando pretendido, ouviu a leitura de volta, confirmou a ordem e a instituição executou exatamente o que foi pedido. A transação foi obtida por engano do titular, nas modalidades de falso funcionário da instituição, falso parente em situação de urgência e coação presencial. A meta do conselho, o prazo e as quatro alternativas permanecem os mesmos, e o critério da decisão se desloca.

5. O caminho feliz e as exceções

A conclusão que o caso sustenta é a seguinte: o sistema percorreu o caminho feliz sem defeito e a perda ocorreu. A confirmação explícita foi concluída em 96% das ocorrências de engano do titular, e a verificação biométrica da voz correspondeu ao titular em 100% delas.

Entende-se por caminho feliz o percurso em que a entrada é a prevista, a dependência externa responde dentro do prazo e a regra de negócio encontra todos os parâmetros que exige. É o primeiro percurso implementado, o primeiro testado e o que reprova com menor frequência. Um trecho de código exercitado apenas por esse percurso permanece sem especificação para todas as demais condições de execução.

A atitude de qualidade que o encontro propõe consiste em enumerar essas demais condições antes da implementação. A lista de exceções é o produto central: cada item descreve uma condição fora do percurso previsto, a consequência de não tratá-la e a verificação que demonstra o tratamento. A lista é especificação, e cada linha se converte em caso de teste.

Enunciado normativo

A execução correta do caminho feliz não constitui evidência de qualidade. A defesa de um trecho de código se estabelece pelas exceções que ele trata e pelo registro que sustenta a verificação posterior.

6. As cinco categorias de exceção

A enumeração por categoria substitui a inspiração individual por uma varredura sistemática. Cada categoria interroga o trecho de código por um ângulo distinto, e a ausência de itens em alguma delas indica lacuna de análise, não ausência de exceção.

CategoriaPergunta que a categoria faz ao códigoExemplo no caso do PIX
1. Regra de negócio incompletaQue condição a regra não previu? Parâmetro ausente, valor fora da faixa, estado em que a operação não deveria ser admitida, conflito entre duas regras igualmente válidas.Chave de destino cadastrada minutos antes da ordem, sem tratamento distinto do beneficiário recorrente.
2. InfraestruturaO que ocorre quando a dependência falha? Conexão indisponível, tempo limite excedido, resposta parcial, execução duplicada por reenvio, divergência entre sistemas que deveriam concordar.Serviço de transcrição sem resposta durante a composição da ordem, com risco de emissão sobre transcrição parcial.
3. Segurança: fraude e imprecisãoComo um terceiro explora o comportamento correto? E que ação legítima é executada sobre informação ambígua, imprecisa ou obtida por engano?Ordem enunciada pelo titular durante chamada telefônica ativa, em 41% das ocorrências classificadas como engano.
4. Não repúdioO que sustenta a reconstituição de uma ação contestada? Registro do autor, do enunciado, dos parâmetros e do instante, com integridade verificável por terceiro.Contestação em que a instituição precisa demonstrar que a ordem partiu do titular e correspondeu ao enunciado registrado.
5. UsabilidadeQue comportamento correto o usuário não compreende, não percebe ou executa por hábito?Leitura de volta confirmada sem conferência, por habituação à confirmação repetida.

Procedimento de enumeração

  1. Delimitar o trecho sob análise por arquivo e função, e enunciar o comportamento esperado no percurso previsto.
  2. Percorrer a cadeia de processamento descrita na seção seguinte, etapa por etapa.
  3. Em cada etapa, aplicar as cinco perguntas da tabela acima e registrar as exceções encontradas.
  4. Para cada exceção, declarar a consequência da ausência de tratamento, em termos financeiros, contratuais, regulatórios ou de confiança.
  5. Associar a exceção à característica de qualidade correspondente da ISO/IEC 25010.
  6. Converter a exceção em requisito verificável, com valor, unidade, limiar, nível de teste e oráculo declarado.

7. A cadeia de processamento

A interação em linguagem natural constitui uma cadeia de etapas, cada uma com entrada, saída e critério de correção próprios. O teste da cadeia inteira sem o teste de suas etapas produz reprovação sem diagnóstico, que registra o erro do sistema sem localizar a etapa em que ocorreu.

Captura
Transcrição
Interpretação
Ação
Resposta
EtapaO que se verificaFalha característica
CapturaQualidade do sinal, truncamento do enunciado, detecção do início e do fim da fala.Corte da primeira palavra, que altera a intenção reconhecida.
TranscriçãoTaxa de erro por palavra sob ruído, sotaque e vocabulário do domínio.Termo técnico substituído por palavra comum foneticamente próxima.
InterpretaçãoAcurácia da intenção, completude dos parâmetros e confiança atribuída.Transcrição correta com intenção errada, ou parâmetro ausente substituído por valor padrão.
AçãoCorrespondência entre parâmetro extraído e comando emitido; idempotência da execução.Comando executado duas vezes por reenvio, sem identificador de operação.
RespostaAdequação da confirmação, pedido de desambiguação e possibilidade de cancelamento.Execução de intenção de baixa confiança sem confirmação prévia.

8. Níveis de teste

Cada pergunta é respondida no nível em que o defeito é isolável com o menor custo. A escolha do nível determina a velocidade da execução, a estabilidade do resultado e a precisão do diagnóstico.

Unidade

Funções próprias de normalização de texto, conversão de unidade e formatação de parâmetro. Execução em milissegundos, sem dependência externa.

Componente

Interpretador de intenção isolado por duplo do serviço externo. Verifica o contrato do componente sobre classes de entrada definidas.

Integração

Componente e serviço de processamento de linguagem natural em conjunto, com verificação do contrato de dados e do tratamento de erro e de tempo limite.

Sistema

Percurso completo do enunciado ao acionamento, incluindo latência, custo por transação e produção do registro de auditoria.

Aceitação

Conformidade com o requisito acordado com o parceiro, sobre conjunto de enunciados representativo do domínio de uso.

Critério de alocação

A pergunta “o sistema entendeu o usuário?” pertence ao nível de aceitação. A pergunta “o interpretador devolve a intenção correta para esta classe de enunciado?” pertence ao nível de componente, e é nela que a automação produz diagnóstico aproveitável pela equipe.

9. Automação antes do teste manual

Entende-se por teste automatizado o programa que exercita outro programa, compara o resultado observado com o critério declarado e reprova a execução quando há divergência. A precedência da automação sobre a inspeção humana decorre de três propriedades: repetição sem custo marginal, precisão de medição e capacidade de detectar regressão.

A inspeção humana permanece necessária onde o julgamento é o próprio critério: adequação do tom da resposta, clareza do pedido de desambiguação, aceitabilidade cultural do comportamento e razoabilidade do percurso no domínio de aplicação. Essa inspeção ocorre uma vez por entrega; a execução automatizada ocorre a cada alteração do repositório.

Enunciado normativo

Verificações repetitivas, numerosas, sensíveis a regressão ou dependentes de medição precisa devem ser automatizadas antes de qualquer inspeção manual. A inspeção manual de item automatizável constitui desperdício e não produz registro comparável entre execuções.

10. Requisitos não funcionais de verificação manual inviável

A reflexão proposta para o encontro consiste em identificar, no próprio projeto, os requisitos não funcionais cuja verificação por pessoas é impraticável. A tabela abaixo relaciona os casos recorrentes em aplicações de linguagem natural.

RequisitoPor que a pessoa não verificaProcedimento automatizado
Latência sob concorrênciaDepende de carga simultânea e de medição no percentil, não da percepção individual.Ensaio de carga com carga sintética e registro da distribuição de tempos.
Custo por transaçãoSó se manifesta no volume acumulado de milhares de execuções.Contagem instrumentada de requisições associada à tabela de preço do fornecedor.
Robustez a ruídoExige reprodução controlada e repetível de condições acústicas.Execução do corpus com ruído sobreposto em níveis calibrados.
Regressão de acuráciaExige recomparação de centenas de casos a cada versão do modelo.Execução do conjunto anotado a cada alteração, com comparação ao histórico.
Comportamento sob falhaA falha do serviço externo não ocorre sob demanda durante a inspeção.Injeção de erro, atraso e tempo limite no duplo do serviço.
Estabilidade prolongadaExige execução contínua por horas com observação de memória e conexões.Ensaio de longa duração com coleta periódica de indicadores do processo.

11. Testes de componentes

Corresponde ao Autoestudo 2, apoiado nas páginas 372 a 387 de Pressman. Entende-se por componente a menor unidade de software com interface declarada e responsabilidade própria. A questão central do autoestudo é por que o teste nesse nível é condição para localizar o defeito em um sistema composto por serviços de terceiros.

Técnicas estruturais

As técnicas de caixa-branca derivam os casos de teste da estrutura interna do código. O teste de caminho básico utiliza o grafo de fluxo de controle, e a complexidade ciclomática estabelece o limite superior de caminhos independentes a exercitar. Acrescentam-se a cobertura de condição, de decisão e o tratamento sistemático de laços. Aplicam-se ao código próprio: normalização do enunciado, roteamento da intenção, validação do parâmetro e política de confirmação.

Técnicas funcionais

As técnicas de caixa-preta derivam os casos da especificação, sem acesso à estrutura interna. Compreendem o particionamento em classes de equivalência, a análise de valor-limite e o teste baseado em tabela de decisão. Aplicam-se ao serviço de processamento de linguagem natural contratado, cujo código não é acessível à equipe.

Consequência para a arquitetura

O componente só é testável isoladamente quando a dependência externa é acessada por interface própria, substituível por um duplo em tempo de teste. A ausência dessa fronteira transforma toda verificação em teste de integração, com execução lenta, custo por requisição e resultado dependente da disponibilidade do fornecedor.

12. O oráculo

Entende-se por oráculo o critério que decide se a saída observada está correta. A execução sem oráculo declarado não constitui teste. Em linguagem natural, o oráculo é construído por três caminhos, frequentemente combinados.

Conjunto de referência

Enunciados coletados no domínio e anotados com a intenção e os parâmetros corretos. Produz acurácia, precisão, revocação e medida F1 por intenção.

Propriedade invariante

Regras que valem para toda entrada, independentemente da formulação, e que podem ser asseridas em cada execução.

Referência alternativa

Execução do mesmo conjunto em dois serviços ou em duas versões, com investigação das divergências observadas.

Propriedades invariantes recorrentes

  • Intenção inferida abaixo do limiar de confiança não é executada sem confirmação explícita.
  • Comando com efeito financeiro ou de segurança exige parâmetro explícito, sem valor padrão.
  • Execução repetida do mesmo identificador de operação não duplica o efeito.
  • Toda execução produz entrada correspondente na trilha de auditoria.
  • Enunciado não compreendido resulta em pedido de esclarecimento, sem execução de ação.
Forma do enunciado de teste

“Acurácia de intenção igual ou superior a 0,92 no conjunto de validação v3, com taxa de falso acionamento de comando financeiro igual a zero.” O enunciado declara métrica, limiar e conjunto, e por isso é verificável por terceiro.

13. ISO/IEC 25010: o vocabulário dos requisitos não funcionais

A norma ISO/IEC 25010 organiza a qualidade do produto de software em características e subcaracterísticas. Sua função no encontro é dupla: nomear a preocupação a que cada exceção pertence e revelar as categorias que a análise do grupo ainda não examinou.

CaracterísticaO que a norma trataRequisito correspondente no caso do PIX
Adequação funcionalCompletude, correção e pertinência da função em relação ao que foi acordado.A ordem para chave cadastrada há menos de 30 minutos exige segundo fator, independentemente do valor.
Eficiência de desempenhoComportamento temporal, utilização de recurso e capacidade sob a carga projetada.Latência de composição da ordem no percentil 95 igual ou inferior a 1.200 ms no horário de pico do canal.
ConfiabilidadeMaturidade, disponibilidade, tolerância a falha e recuperabilidade.Nenhuma ordem é emitida com transcrição parcial quando o serviço de reconhecimento excede 3 segundos.
SegurançaConfidencialidade, integridade, não repúdio, responsabilização e autenticidade.Reconstituição de autor, enunciado, parâmetros e instante em 100% das ordens de efeito irreversível.
UsabilidadeReconhecimento da adequação, aprendizagem, operabilidade e proteção contra erro do usuário.Taxa de abandono na leitura de volta igual ou superior a 2% nas ordens para beneficiário novo, o que evidencia leitura efetiva.
CompatibilidadeCoexistência com outros sistemas e interoperabilidade das trocas de informação.Conformidade do registro da transação com o formato exigido pelo arranjo de pagamento.
ManutenibilidadeModularidade, reusabilidade, analisabilidade, modificabilidade e testabilidade.O serviço de linguagem natural é acessado por interface própria, substituível por duplo em tempo de teste.
PortabilidadeAdaptabilidade, instalabilidade e capacidade de substituição.Operação preservada com troca do fornecedor de processamento de linguagem natural, sem reescrita dos cenários de aceitação.
Uso no projeto

Distribuir a lista de exceções entre as oito características e verificar quais permanecem vazias. A característica sem exceção correspondente indica um aspecto do sistema que o grupo ainda não interrogou, e não um aspecto sem risco.

14. Gherkin: a especificação executável

Entende-se por Gherkin a linguagem estruturada em que o critério de aceitação é redigido em texto legível pelo parceiro e, simultaneamente, executado como teste. A linguagem provém da prática de desenvolvimento guiado por comportamento e é interpretada por arcabouços como Cucumber, behave, pytest-bdd e SpecFlow.

Em uma aplicação de linguagem natural, o cenário em Gherkin cumpre a função descrita na seção anterior: declara o oráculo no vocabulário do domínio, sem referência à implementação, e por isso permanece válido quando o serviço de processamento é substituído ou atualizado.

Estrutura do arquivo

Palavra-chaveFunçãoObservação
FuncionalidadeNomeia o comportamento sob especificação e abre o arquivo.Um arquivo .feature por funcionalidade.
RegraEnuncia a norma de negócio que agrupa os cenários seguintes.Torna explícita a ligação entre requisito e casos. Os cenários pertencem à regra até a próxima Regra.
ContextoPré-condições comuns a todos os cenários do arquivo.Evita a repetição da mesma cláusula Dado.
CenárioUm caso concreto, com estado, evento e resultado.Cada cenário é independente dos demais.
Esquema do Cenário e ExemplosO mesmo cenário executado sobre cada linha de uma tabela de dados.Recebe o corpus anotado descrito na seção 12.
Dado, Quando, Então, E, MasAs cláusulas de cada passo do cenário.Tratadas em detalhe adiante.
Etiquetas com @Marcam subconjuntos selecionáveis na execução.Exemplo: executar apenas os cenários de não repúdio.

A primeira linha do arquivo pode declarar o idioma com # language: pt, o que habilita as palavras-chave em português. O acervo adota essa forma, de modo que o parceiro leia a especificação sem tradução.

Dado, Quando, Então

As três cláusulas repartem o cenário em estado anterior, evento único e resultado observável. A troca de função entre elas produz cenários que executam sem verificar comportamento.

CláusulaO que declaraExemplo do casoErro recorrente
Dado (Given)Estado do mundo anterior à ação, posto sem descrever interação do usuário.O limiar de confiança para execução direta é 0,85.Descrever a ação do usuário como pré-condição.
Quando (When)O evento único cujo efeito se quer verificar.O usuário enuncia “compra mais leite”.Mais de uma cláusula Quando no mesmo cenário.
Então (Then)Resultado observável na fronteira do sistema.O sistema solicita confirmação explícita.Verificar estado interno ou registro do banco de dados.
E e MasContinuação da cláusula imediatamente anterior.E nenhum pedido é emitido ao comércio eletrônico.Alternar de cláusula sem retomar a palavra-chave correspondente.

Redação imperativa

“Quando o usuário abre o aplicativo, toca no botão do microfone, aguarda dois segundos e fala.” O cenário depende da interface e é reescrito a cada alteração de tela.

Redação declarativa

“Quando o usuário enuncia ‘compra mais leite’.” O cenário permanece válido sob qualquer interface e é compreendido pelo parceiro sem tradução.

Especificação do caso

# language: pt
Funcionalidade: Execução de comandos por voz

  Contexto:
    Dado que o assistente está ativo na cozinha
    E que o limiar de confiança para execução direta é 0,85

  Regra: Comando de efeito financeiro exige confirmação quando a confiança é insuficiente

    Cenário: Intenção reconhecida com confiança insuficiente
      Dado que o serviço reconhece a intenção "comprar_item" com confiança 0,62
      Quando o usuário enuncia "compra mais leite"
      Então o sistema solicita confirmação explícita
      E nenhum pedido é emitido ao comércio eletrônico
      E a interação é registrada na trilha de auditoria

  Regra: Enunciado sem palavra de ativação não produz comando

    Esquema do Cenário: Enunciado captado do ambiente
      Quando o sistema processa "<enunciado>" sem palavra de ativação
      Então nenhum comando é executado
      E o evento é registrado como descartado

      Exemplos:
        | enunciado                       |
        | acho que acabou o leite         |
        | ela mandou comprar pilhas ontem |
        | preciso trancar a porta amanhã  |

  Regra: Todo comando executado é reconstituível a partir da trilha de auditoria

    @nao-repudio
    Cenário: Reconstituição de comando contestado
      Dado que o usuário "u-1183" executou o comando "abrir_fechadura" em 18/09/2026 às 21:14
      Quando o perito consulta a trilha pelo identificador de correlação "c-99f2"
      Então o registro apresenta autor, enunciado, confiança, parâmetros e instante
      E a assinatura do registro é validada com a chave pública do serviço emissor

Vinculação dos passos ao sistema

O arquivo .feature não executa por si. Cada passo é associado a uma definição escrita em código, que concentra a chamada ao sistema e a asserção correspondente. O exemplo abaixo utiliza a sintaxe do arcabouço behave.

@given('que o limiar de confiança para execução direta é {limiar}')
def passo_limiar(context, limiar):
    context.assistente = Assistente(limiar_confianca=float(limiar.replace(',', '.')))

@when('o usuário enuncia "{enunciado}"')
def passo_enunciar(context, enunciado):
    context.resposta = context.assistente.processar(enunciado)

@then('o sistema solicita confirmação explícita')
def passo_confirmacao(context):
    assert context.resposta.tipo == 'confirmacao', context.resposta
Critério de qualidade do cenário

Um cenário útil declara um único Quando, verifica resultado observável na fronteira do sistema, emprega termos do domínio do parceiro e permanece compreensível sem consulta ao código. Cenário que descreve cliques e seletores verifica a interface e deixa sem verificação o comportamento especificado.

O conjunto de arquivos .feature especifica o comportamento, afere a conformidade a cada execução e vincula requisito, teste e alteração de código. O ciclo em que essa especificação é escrita antes da implementação é tratado na seção seguinte.

15. O ciclo do desenvolvimento dirigido por testes

O percurso entre o cenário redigido e o código que o aprova é apresentado em vídeo, de realização individual antes ou depois do encontro. O vídeo conduz o ciclo em três movimentos: escrever o teste que reprova por comportamento ausente, implementar o comportamento mínimo que o aprova e reorganizar o código com a suíte como rede de proteção.

Test-Driven Development In Python: the power of red-green-refactor. Disponível em youtube.com/watch?v=B1j6k2j2eJg.

MovimentoO que ocorreCorrespondência no encontro
VermelhoO teste é escrito antes do comportamento e reprova por ausência dele, com a mensagem de asserção exibida.A exceção enumerada vira cenário em Gherkin, que reprova enquanto a condição não é tratada.
VerdeImplementa-se o comportamento mínimo que aprova o teste, sem antecipar requisitos ainda não especificados.O tratamento da exceção é implementado apenas na medida em que o cenário exige.
RefatoraçãoO código é reorganizado com a suíte aprovando a cada passo, o que preserva o comportamento verificado.A lista de exceções permanece como especificação executável durante a reorganização.
Verificação proposta

Examinar, no repositório do grupo, se um leitor externo reconstitui os requisitos do módulo a partir dos testes existentes, e registrar as lacunas encontradas. O caso de teste especifica o comportamento, afere a conformidade a cada execução e vincula requisito, verificação e alteração de código.

16. Falhas na automação

A suíte de testes é software e contém defeitos. O defeito mais grave é aquele que produz aprovação indevida, porque suprime o sinal de erro em vez de emiti-lo. A pergunta do encontro — como detectar erros automaticamente quando a própria automação falha — é respondida por procedimentos que verificam a capacidade de detecção da suíte.

FalhaManifestaçãoDetecção automática
Asserção ausenteO teste percorre o caminho e não verifica o resultado, aprovando qualquer saída.Teste de mutação: defeitos injetados deliberadamente no código devem reprovar a suíte; o escore de mutação mede a proporção detectada.
Duplo permissivoO substituto do serviço externo devolve sempre resposta válida, ocultando o tratamento de erro.Teste de contrato executado contra o serviço real, somado à injeção de erro e de tempo limite no duplo.
Oráculo obsoletoO conjunto de referência deixa de representar o vocabulário em uso; a métrica permanece alta com desempenho degradado em campo.Amostragem periódica do tráfego real e comparação da distribuição com a do conjunto de referência.
Teste instávelO resultado alterna sem alteração do código, e a equipe passa a reexecutar a suíte até a aprovação.Reexecução programada sem alteração do código e registro do índice de instabilidade por caso.
Cobertura inerteLinhas executadas sem verificação de comportamento elevam a cobertura sem ganho de detecção.Cobertura de decisão combinada ao escore de mutação, tratados em conjunto.
Enunciado normativo

A ausência prolongada de reprovações não evidencia ausência de defeitos. Quando nenhuma execução falha por período extenso, verifica-se primeiro a capacidade de detecção da própria suíte.

Impacto da falha não detectada

A falha da automação em detectar o falso acionamento de compra por conversa ambiente, descrito na situação-problema, produz três ordens de consequência: financeira, pela transação indevida e pelo custo de estorno; contratual, pela violação do acordo de nível de serviço e pela eventual sanção regulatória; e de confiança, pela desistência do usuário em utilizar o comando por voz para operações de efeito irreversível. A terceira é a de reversão mais lenta.

17. Detecção do erro em operação

Parte dos defeitos de uma aplicação de linguagem natural só se manifesta com entrada real, em condições que o conjunto de referência não reproduz. A detecção depende de instrumentação declarada em projeto, antes da ocorrência de incidentes.

  • Invariantes verificadas em execução. As mesmas propriedades asseridas em teste são verificadas a cada requisição em produção, com registro da violação.
  • Telemetria com limiar. Distribuição da confiança inferida, proporção de pedidos de desambiguação, taxa de cancelamento pelo usuário e latência, com alarme sobre desvio.
  • Liberação gradual. A versão candidata recebe fração do tráfego, com comparação de métricas e retorno automático à versão anterior quando o limiar é violado.
  • Registro e reexecução. Enunciados registrados são reexecutados sobre a versão candidata, o que converte cada incidente em caso de teste permanente.

18. Não repúdio

Entende-se por não repúdio a propriedade que impede o autor de uma ação de negar validamente tê-la praticado, por existir evidência verificável por terceiro. A propriedade se distingue de duas outras com as quais é frequentemente confundida.

Autenticação

Estabelece a identidade no momento do acesso. Isoladamente, não sustenta prova posterior sobre um comando específico.

Integridade

Garante que o registro permanece como foi gravado. Sem vínculo com o autor, não atribui a ação a ninguém.

Não repúdio

Vincula autor, ação, parâmetros e instante em registro íntegro, verificável por quem não participou da operação.

Conteúdo da trilha

Entrada mínima do registro de uma interação

IdentificaçãoUsuário autenticado, dispositivo de origem e canal de acesso.
CorrelaçãoIdentificador único que percorre o enunciado, a inferência, o comando e o efeito.
EnunciadoTranscrição e, quando a base legal permitir, referência ao áudio retido.
InferênciaIntenção reconhecida, confiança atribuída e parâmetros extraídos.
EfeitoComando emitido, sistema de destino, resultado e eventual confirmação do usuário.
InstanteData e hora com fonte de tempo confiável e fuso declarado.
VersãoVersão da aplicação e do modelo em execução no momento do comando.

Proteção da trilha

  • Assinatura digital de cada entrada pela chave do serviço emissor.
  • Encadeamento por resumo criptográfico, em que cada entrada incorpora o resumo da anterior.
  • Escrita em repositório sem permissão de alteração ou remoção durante o prazo de retenção.
  • Carimbo do tempo emitido por autoridade independente do operador do sistema.
  • Segregação entre quem opera a aplicação e quem administra a trilha.
Restrição de privacidade

A retenção de gravação e de transcrição constitui tratamento de dado pessoal e observa base legal, finalidade declarada, minimização e prazo definido. A evidência é desenhada para sustentar a prova com o menor conjunto de dados suficiente.

19. Verificação do não repúdio

A propriedade é verificada por procedimento que simula a contestação descrita no encontro: o usuário alega não ter acionado um comando executado pelo sistema, e o especialista precisa estabelecer, a partir dos registros, se houve interação.

  • Executar comando conhecido e reconstituir autor, parâmetros e instante exclusivamente a partir da trilha.
  • Alterar uma entrada do registro e verificar que a cadeia de resumos acusa a adulteração.
  • Remover uma entrada intermediária e verificar que a verificação de integridade reprova a cadeia.
  • Executar comandos simultâneos de usuários distintos e verificar que os identificadores de correlação não se confundem.
  • Validar a assinatura com a chave pública, sem acesso ao sistema emissor.
  • Verificar a disponibilidade e a legibilidade do registro ao final do prazo de retenção declarado.
Critério de aceitação

A reconstituição é suficiente quando um terceiro sem acesso privilegiado estabelece que determinado usuário emitiu determinado enunciado em determinado instante, e que o comando executado corresponde ao enunciado registrado. O ensaio é conduzido por pessoa que não participou do desenvolvimento.

20. Benchmarking baseado em testes

Corresponde ao Autoestudo 1, apoiado em Hayashi, Arakaki e Ruggiero (2020), páginas 1 a 3. A questão inicial do artigo é como avaliar uma solução sem depender do discurso comercial do fornecedor.

A alegação do fornecedor descreve o comportamento do produto em condições escolhidas por ele: corpus, carga, região de processamento e configuração. A decisão técnica exige medição conduzida pelo comprador, no contexto de uso previsto, com procedimento reproduzível. Entende-se por benchmarking o experimento comparativo que submete alternativas ao mesmo conjunto de casos, sob condições idênticas, com métricas declaradas antes da execução.

Etapas do experimento

  1. Definir o contexto de uso e as restrições do ambiente de operação.
  2. Derivar os atributos de qualidade das metas de negócio.
  3. Especificar métrica, instrumento de medição e limiar de aceitação.
  4. Construir o conjunto de casos representativo do domínio.
  5. Executar as alternativas sob condições idênticas e registrar os resultados.
  6. Registrar a decisão, as incertezas e as condições em que ela deixaria de valer.

21. Atributos de qualidade a partir de metas de negócio

Corresponde à página 5 do artigo. O atributo de qualidade é extraído de três fontes e convertido em especificação mensurável.

Da aplicação

Funções expostas ao usuário e condições de execução: comando por voz, operação contínua, resposta imediata.

Do domínio

Propriedades do ambiente: ruído, sotaque regional, vocabulário técnico, intermitência de rede, presença de terceiros.

Do negócio

Resultado esperado pela organização: redução do custo de atendimento, retenção do cliente, obrigação regulatória, prazo contratual.

Para o profissional de engenharia de software, os adjetivos “bom”, “rápido” e “barato” não constituem requisito. O atributo é evidenciado por especificação técnica com valor, unidade, condição de medição e estatística de referência, e a solução é medida para verificar se o atende.

Enunciado inadequadoEspecificação técnica correspondenteInstrumento de medição
“Precisa ser rápido”Latência de resposta no percentil 95 igual ou inferior a 800 ms com 50 sessões concorrentes.Ensaio de carga com carga sintética e registro da distribuição.
“Precisa ser preciso”Acurácia de intenção igual ou superior a 0,92 e medida F1 de extração de parâmetros igual ou superior a 0,88.Execução sobre corpus anotado versionado do domínio.
“Precisa ser barato”Custo por transação igual ou inferior a R$ 0,012 no volume mensal projetado.Contagem instrumentada de transações e tabela de preço do fornecedor.
“Precisa ser seguro”Registro assinado e encadeado de cem por cento dos comandos de efeito irreversível, com retenção de cinco anos.Verificação automatizada da cadeia de resumos sobre amostra do período.

22. Comparação de alternativas e mudança de contexto

Corresponde às páginas 10 a 14 do artigo. A pergunta prática é se os serviços de processamento de linguagem natural dos grandes fornecedores atendem ao projeto e qual deles é o mais adequado. A comparação se organiza em tabela com critérios homogêneos e pesos declarados antes da medição.

CritérioUnidadeComo medirObservação para a decisão
CustoR$/transaçãoPreço por requisição no volume projetado, incluindo tarifa mínima e excedente.Verificar degraus de preço por faixa e o custo de reprocessamento.
DesempenhomsLatência média e percentil 95 sob concorrência, medida a partir da região de uso.Separar tempo do serviço, tempo de rede e tempo de fila interna.
Precisão0 a 1Acurácia de intenção e medida F1 de parâmetros sobre o mesmo corpus anotado.O resultado depende do corpus; conjunto genérico não representa o domínio do parceiro.
ComplexidadeporteEsforço de integração, dependências operacionais e conhecimento exigido da equipe.Considerar retenção de dados, região de processamento e dependência do fornecedor.

A tabela é acompanhada do conjunto de casos utilizado, da data da medição e da versão de cada serviço. Sem esses três elementos o resultado não é reproduzível nem contestável, e a comparação perde valor probatório para a decisão de arquitetura.

A mesma decisão em ambiente crítico

O artigo propõe reexaminar a escolha na hipótese de aplicação em ambiente crítico, como uma mina de extração mineral, com equipamentos em operação, pessoas e ruído intenso. O conjunto de critérios permanece; alteram-se os pesos, os limiares e o desenho do experimento.

O que muda no ambiente

  • Ruído contínuo de alta intensidade e uso de proteção auricular.
  • Vocabulário técnico restrito, ausente de modelos genéricos.
  • Conectividade intermitente, que impõe processamento local.
  • Consequência do erro sobre integridade física.
  • Exigência regulatória de rastreabilidade das ordens.

O que muda no experimento

  • Corpus gravado no próprio ambiente, com equipamento em operação.
  • Peso maior para taxa de falso acionamento do que para custo por transação.
  • Inclusão do modo de degradação, com ensaio sem rede e sob falha.
  • Medição do tempo de confirmação exigido antes de comando de risco.
  • Trilha de auditoria tratada como critério eliminatório.

23. Atividade do encontro

Produção em grupo sobre o projeto do parceiro, registrada no repositório ao final da aula. São produzidos dois artefatos encadeados: a lista de exceções e os cenários que a tornam executável.

Lista de exceções classificadas

  • O trecho do projeto em exame, identificado por arquivo e função.
  • Ao menos duas exceções por categoria: regra de negócio incompleta, infraestrutura, segurança por fraude ou imprecisão, não repúdio e usabilidade.
  • Consequência da ausência de tratamento de cada exceção.
  • Característica da ISO/IEC 25010 a que cada exceção corresponde.
  • Registro das características da norma que permaneceram sem exceção correspondente.

Cenários em Gherkin

  • Três exceções convertidas em requisito com valor, unidade, condição de medição e limiar.
  • Um cenário por requisito, com uma única cláusula Quando e resultado observável em Então.
  • Oráculo declarado: conjunto de referência versionado ou propriedade invariante.
  • Nível de teste em que cada verificação é executada, com justificativa.
  • Procedimento de detecção automática de falha da própria automação.
Critério de aceitação

Cada linha declara como o resultado é obtido por execução automatizada. Item verificável apenas por inspeção humana é registrado com a justificativa da impossibilidade de automação.

Encaminhamento

A tabela de benchmarking dos serviços de processamento de linguagem natural, tratada nas seções 20 a 22, é produzida fora do encontro e retomada na aula seguinte do módulo, juntamente com o plano de teste dos requisitos não funcionais que a lista de exceções alimenta.

24. Falhas recorrentes

  • Especificar o requisito com adjetivo e sem métrica, o que impede a verificação e desloca a decisão para a percepção de quem inspeciona.
  • Redigir cenários imperativos, que descrevem a operação da interface e são reescritos a cada alteração de tela.
  • Medir a solução com corpus genérico do fornecedor em vez de conjunto do domínio do parceiro.
  • Tratar a cobertura de código como evidência de qualidade, sem verificar a capacidade de detecção da suíte.
  • Executar toda verificação em nível de sistema, o que produz suíte lenta, instável e sem diagnóstico.
  • Registrar a interação em arquivo de texto sem assinatura nem encadeamento, o que não sustenta contestação.
  • Reter gravação de voz sem base legal, finalidade declarada e prazo, o que constitui tratamento irregular de dado pessoal.
  • Comparar fornecedores pela tabela de preço divulgada, sem medir custo por transação no volume projetado.

25. Referências

  • HAYASHI, S.; ARAKAKI, R.; RUGGIERO, W. Benchmarking baseado em testes, 2020. Documento do autoestudo.
  • PRESSMAN, R. S. Engenharia de Software: uma abordagem profissional. Páginas 372 a 387. Código na plataforma da biblioteca: 9786558040118.
  • Cucumber — documentação de referência da linguagem Gherkin e das definições de passo.
  • NORTH, D. Introducing BDD, 2006 — origem da formulação Dado, Quando, Então.
  • SMART, J. F. BDD in Action — especificação por exemplos e documentação viva.
  • ISO/IEC 25010 — modelo de qualidade de produto de software.
  • ISO/IEC/IEEE 29119 — processo, documentação e técnicas de teste de software.
  • ISO/IEC 27001 e 27002 — registro de eventos e proteção da trilha de auditoria.
  • BRASIL. Lei nº 13.709/2018 — Lei Geral de Proteção de Dados Pessoais.
  • Test-Driven Development In Python: the power of red-green-refactor — vídeo do autoestudo, incorporado à seção 15. youtube.com/watch?v=B1j6k2j2eJg.
  • Smart House, Rema 1000 — referência audiovisual sobre acionamento indevido em assistente de voz. youtu.be/nwPtcqcqz00.
  • BANCO CENTRAL DO BRASIL — Mecanismo Especial de Devolução e limites de valor do PIX.