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
| propriedade | teste |
|---|---|
| Mínima | dá para remover mais um componente ou parâmetro e ainda ver? |
| Com taxa | sempre, ou uma taxa declarada sobre um número declarado de execuções |
| Delimitada | medida dos dois lados do componente, não só no sintoma |
| Portátil | escrita em passos que o fabricante consiga rodar sem você |
| Controlada | uma 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."