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.
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.
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.
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.
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.
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.
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.
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.
| Categoria | A exceção em exame | O que a decisão precisa equilibrar | |
|---|---|---|---|
| 1 | Regra de negócio incompleta | Ordem 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. |
| 2 | Infraestrutura: conexão e integridade | Ordem 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. |
| 3 | Segurança: fraude e imprecisão | A 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. |
| 4 | Segurança: não repúdio | Contestaçã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. |
| 5 | Usabilidade | Leitura 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. |
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 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.
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.
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.
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.
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.
| Categoria | Pergunta que a categoria faz ao código | Exemplo no caso do PIX |
|---|---|---|
| 1. Regra de negócio incompleta | Que 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. Infraestrutura | O 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ão | Como 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údio | O 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. Usabilidade | Que 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. |
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.
| Etapa | O que se verifica | Falha característica |
|---|---|---|
| Captura | Qualidade 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ção | Taxa 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ção | Acurá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ção | Correspondê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. |
| Resposta | Adequaçã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. |
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.
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.
Interpretador de intenção isolado por duplo do serviço externo. Verifica o contrato do componente sobre classes de entrada definidas.
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.
Percurso completo do enunciado ao acionamento, incluindo latência, custo por transação e produção do registro de auditoria.
Conformidade com o requisito acordado com o parceiro, sobre conjunto de enunciados representativo do domínio de uso.
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.
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.
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.
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.
| Requisito | Por que a pessoa não verifica | Procedimento automatizado |
|---|---|---|
| Latência sob concorrência | Depende 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ção | Só 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ído | Exige 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ácia | Exige 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 falha | A 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 prolongada | Exige 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. |
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.
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.
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.
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.
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.
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.
Regras que valem para toda entrada, independentemente da formulação, e que podem ser asseridas em cada execução.
Execução do mesmo conjunto em dois serviços ou em duas versões, com investigação das divergências observadas.
“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.
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ística | O que a norma trata | Requisito correspondente no caso do PIX |
|---|---|---|
| Adequação funcional | Completude, 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 desempenho | Comportamento 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. |
| Confiabilidade | Maturidade, disponibilidade, tolerância a falha e recuperabilidade. | Nenhuma ordem é emitida com transcrição parcial quando o serviço de reconhecimento excede 3 segundos. |
| Segurança | Confidencialidade, 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. |
| Usabilidade | Reconhecimento 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. |
| Compatibilidade | Coexistê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. |
| Manutenibilidade | Modularidade, reusabilidade, analisabilidade, modificabilidade e testabilidade. | O serviço de linguagem natural é acessado por interface própria, substituível por duplo em tempo de teste. |
| Portabilidade | Adaptabilidade, 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. |
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.
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.
| Palavra-chave | Função | Observação |
|---|---|---|
Funcionalidade | Nomeia o comportamento sob especificação e abre o arquivo. | Um arquivo .feature por funcionalidade. |
Regra | Enuncia 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. |
Contexto | Pré-condições comuns a todos os cenários do arquivo. | Evita a repetição da mesma cláusula Dado. |
Cenário | Um caso concreto, com estado, evento e resultado. | Cada cenário é independente dos demais. |
Esquema do Cenário e Exemplos | O 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, Mas | As 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.
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áusula | O que declara | Exemplo do caso | Erro 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 Mas | Continuaçã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. |
“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.
“Quando o usuário enuncia ‘compra mais leite’.” O cenário permanece válido sob qualquer interface e é compreendido pelo parceiro sem tradução.
# 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
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
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.
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.
| Movimento | O que ocorre | Correspondência no encontro |
|---|---|---|
| Vermelho | O 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. |
| Verde | Implementa-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ção | O 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. |
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.
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.
| Falha | Manifestação | Detecção automática |
|---|---|---|
| Asserção ausente | O 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 permissivo | O 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 obsoleto | O 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ável | O 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 inerte | Linhas 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. |
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.
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.
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.
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.
Estabelece a identidade no momento do acesso. Isoladamente, não sustenta prova posterior sobre um comando específico.
Garante que o registro permanece como foi gravado. Sem vínculo com o autor, não atribui a ação a ninguém.
Vincula autor, ação, parâmetros e instante em registro íntegro, verificável por quem não participou da operação.
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.
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.
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.
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.
Corresponde à página 5 do artigo. O atributo de qualidade é extraído de três fontes e convertido em especificação mensurável.
Funções expostas ao usuário e condições de execução: comando por voz, operação contínua, resposta imediata.
Propriedades do ambiente: ruído, sotaque regional, vocabulário técnico, intermitência de rede, presença de terceiros.
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 inadequado | Especificação técnica correspondente | Instrumento 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. |
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ério | Unidade | Como medir | Observação para a decisão |
|---|---|---|---|
| Custo | R$/transação | Preç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. |
| Desempenho | ms | Latê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ão | 0 a 1 | Acurá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. |
| Complexidade | porte | Esforç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.
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.
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.
Quando e resultado observável em Entã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.
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.