Duas disputas diferentes

Quando o fabricante diz que não é bug trata de classificação — o comportamento é aceito e a discussão é se aquilo conta como defeito.

Esta é a outra: o fabricante não aceita que o comportamento aconteça. O chamado é fechado como não reproduzível, ou atribuído à sua configuração, à sua carga, ao seu outro equipamento. Você tem certeza. Certeza não é evidência, e o engenheiro do outro lado não está sendo obstrutivo — ele não enxerga a sua rede, e um relato que ele não consegue reproduzir é indistinguível de um relato errado.

Então o trabalho não é persuasão. É construção.

Tire a sua rede da discussão

O movimento mais eficaz, e o mais pulado, porque é lento.

Todo elemento do seu ambiente que permanece na reprodução é uma explicação alternativa à qual o fabricante tem direito de recorrer — e muitas vezes com razão. Cada coisa que você remove fecha uma porta.

Reduza até sobrar apenas o produto do fabricante e o mínimo necessário para o comportamento aparecer. Dois equipamentos em vez do parque. Um fluxo gerado em vez de tráfego de produção. Configuração padrão mais somente os parâmetros que importam, acrescentados um a um até reaparecer — o que também diz exatamente qual parâmetro está implicado, e essa frase vale mais que o resto do caso.

Um defeito que reproduz em dois equipamentos e um notebook é um defeito. O mesmo defeito descrito através da sua topologia de produção é um relato sobre a sua topologia de produção.

Quatro propriedades que tornam a evidência inatacável

Mínima. Como acima. Menos componentes, menos parâmetros, caminho mais curto.

Determinística, ou honestamente probabilística. "Reproduz sempre" é o melhor. "Reproduz cerca de uma vez a cada cinco execuções, em quarenta execuções" é genuinamente bom — uma taxa declarada é uma medição. "Acontece às vezes" não é evidência e convida ao fechamento do chamado.

Medida nas duas pontas. Mostre o que entrou e o que saiu. Uma captura num ponto mostra um sintoma; capturas nas duas pontas do componente mostram o componente fazendo aquilo, e é essa a diferença entre uma reclamação e uma demonstração.

Reproduzível por eles. O objetivo é um procedimento que o fabricante consiga rodar no próprio laboratório sem você. Escrito em passos, com versões e configuração anexadas. Nesse instante a discussão acaba, porque deixa de ser a sua alegação e passa a ser a observação deles.

A comparação que resolve

Onde uma reprodução mínima é impossível — e às vezes é mesmo — a coisa mais forte a seguir é uma diferença controlada.

O mesmo tráfego por duas unidades em que só a versão de difere. A mesma configuração em dois sites em que só a revisão de hardware difere. Uma variável, todo o resto mantido.

Essa estrutura é difícil de contestar porque não exige que o fabricante confie na sua descrição do ambiente: seja o que for verdade sobre a sua rede, era verdade dos dois lados. É o mesmo raciocínio da ablação no construtor de hipóteses de falha — mude uma coisa, veja o que se move.

Escreva como observação, não como acusação

Tom aqui não é educação; é técnica.

"O produto de vocês está quebrado" convida à defesa e a uma busca pelo que você fez de errado. Uma descrição neutra e precisa convida à verificação — e verificação é o que você quer, porque você está certo.

"Com 15.1.4.1 nas duas unidades, o SYN-ACK não é devolvido em conexões que chegam pela 30 quando o perfil de persistência está aplicado. A mesma configuração em 15.1.3.2 devolve. Capturas das duas interfaces anexadas, quarenta execuções, falha nas quarenta."

Nada ali é contestável e nada ali é hostil. Contém uma fronteira de versão, uma condição de gatilho, um controle, uma medição nas duas pontas, e uma taxa.

Quando você está certo e ainda assim não anda

Acontece, e há dois caminhos legítimos que não são gritar.

O canal comercial, enquadrado como informação e não como pressão, conforme o que o suporte pode e não pode fazer. "Temos reprodução em duas unidades de laboratório; o chamado foi fechado duas vezes como não reproduzível" é uma frase sobre a qual um time de conta consegue agir.

Peça a discordância por escrito. "Vocês confirmam no chamado que este comportamento é esperado na 15.1.4.1 com esta configuração?" Não é armadilha — é pedido legítimo, e útil de qualquer forma. Se for esperado, você passa a ter uma restrição documentada para projetar em torno. Se ninguém quiser escrever, essa relutância é informação, e com frequência reabre o chamado sem ninguém levantar a voz.

E esteja preparado para estar errado

A posição mais forte de todo esse exercício é que a reprodução mínima é também o jeito mais rápido de descobrir que a falha é sua.

Reduza o ambiente e uma de duas coisas acontece. Ou o comportamento sobrevive — e você tem um caso inatacável — ou ele some, e o que você removeu era a causa. As duas são bons desfechos, e um deles chega antes de você ter passado três semanas tendo certeza em público.

Construa a reprodução para descobrir, não para vencer. O caso que sobrevive a essa intenção é o que nenhum fabricante fecha.

O artefato

propriedadeteste
Mínimadá para remover mais um componente ou parâmetro e ainda ver?
Com taxasempre, ou uma taxa declarada sobre um número declarado de execuções
Delimitadamedida dos dois lados do componente, não só no sintoma
Portátilescrita em passos que o fabricante consiga rodar sem você
Controladauma variável diferente, todo o resto mantido

E a frase de abertura, que é o caso inteiro em uma linha:

"Aqui está a menor coisa que faz isso acontecer, e aqui está a única diferença que faz parar."