Bibliotecas: MultiTester - página 15

 
Сергей Таболин:

Já é possível compactar ou não? (É como - e se funcionar ))))

Sim, os zips no KB foram discretamente corrigidos - as atualizações chegam lá. As datas dos arquivos dentro deles se tornam iguais à data da atualização. Portanto, com base nessas datas, você pode entender imediatamente a que época o conteúdo corresponde.

 
fxsaber:

Os registros do testador precisam ser examinados.

Reiniciar o terminal e aguardar cerca de 10 minutos ajuda. Até mesmo um alerta é exibido. Você deve começar a testar imediatamente após abrir o terminal; nem mesmo folheie as tendências. Mas, com o tempo, tudo pode ser interrompido ou sofrer um looping. Da última vez, tive 172 passagens normais. Se a situação se repetir, enviarei o registro. Não notei nenhum desvio da norma antes.
 
Good Beer:
Você deve começar a testar imediatamente após abrir o terminal; nem mesmo folheie as tendências.

Essa não é uma situação normal. A norma é que tudo funcione sem nenhuma condição.

 

Com base no MTTester, você pode comparar a eficiência de diferentes lógicas de negociação.

Por exemplo, há a TS1 e a TS2. Precisamos entender qual delas é melhor (condicionalmente, é claro).


Fazemos otimizações de cada TS e, em seguida, executamos as melhores passagens como singles em diferentes intervalos de OOS.

Tudo isso pode ser feito automaticamente por meio do MTTester.


Comparamos os resultados do OOS e decidimos qual TS é melhor.

 

Acabou de surgir um registro interessante

2019.12.21 13:38:35.994 Tester  Ready to set
2019.12.21 13:38:36.617 Tester  i=100

no código.

  static bool ClickStart( const bool Check = true, const int Attempts = 100 )
  {
    bool Res = !Check || MTTESTER::IsReady();

    if (Res)
    {
      static const int ControlID[] = {0xE81E, 0x804E, 0x2712, 0x4196};
      GET_HANDLE

      user32::SendMessageW(Handle, BM_CLICK, 0, 0);

      Res = !Check || !MTTESTER::IsReady();

      int i = 0;
      for (i = 0; (i < Attempts) && (!Res)/* && !::IsStopped() */; i++) // O destrutor global pode precisar
        if (Res = !Check || !MTTESTER::IsReady())
          ::Sleep(100);
      Print("i="+(string)i);
    }

    return(Res);
  }

Print("Ready to set");
MTTESTER::SetSettings2(TesterInput);
MTTESTER::ClickStart();

Idealmente, em i=100, ele deveria dormir por no mínimo 10 segundos. Ainda não descobri como ele conseguiu fazer isso em um segundo (e, essencialmente, foi executado incorretamente). Mas vale a pena dizer que o botão foi pressionado, sim. Aparentemente, há um atraso na indicação do botão. Porque há uma segunda instância sendo executada em paralelo no teste e ela está carregando a CPU a 100%.

 

Acho que consegui. As condições estavam bagunçadas. Provavelmente foi por isso que eles tiveram que mudar o número de tentativas para 50 da última vez. Ele só dorme quando consegue, quando está saindo de qualquer maneira. E isso passa rápido quando é uma boa hora para dormir. Deve ser um bug. E o bug é triste, obviamente não apareceu por quase um mês, e eu estava esperando que as passagens estivessem bem. Vou ter que testar tudo de novo. E eu ficava me perguntando por que raramente, mas às vezes as passagens não se encaixam.

Acho que deve ser

if (!(Res = !Check || !MTTESTER::IsReady()))
 
traveller00:

Aparentemente, é para ser

Sim, o loop estava perdendo o sentido devido à minha desatenção. Obrigado por investigar e indicar claramente o local. Se possível, farei o upload novamente.

 
fxsaber:

Sim, o loop estava perdendo o sentido devido à minha desatenção. Obrigado por resolver o problema e apontá-lo claramente. Se possível, farei o upload novamente.

Atualizado.

 

Enquanto aguardava a atualização, descobri os motivos do looping da lista de tarefas do multitester.

O primeiro foi um gerenciador de tarefas de terceiros "process lasso" no meu computador. Ele ajuda com o mouse e o teclado sem fio, mas não gosta quando um aplicativo ocupa todos os núcleos da CPU. Os processos do agente de teste eram interrompidos e os resultados eram perdidos. Você tinha uma tarefa incompleta, cada vez com um novo resultado. Aumentar a prioridade do metatester corrigiu tudo.

O segundo problema é que o multitester não oferece suporte ao encaminhamento. Se o encaminhamento não estiver ativado, tudo funcionará bem. Mas, se estiver ativado, a lista de tarefas começará a ficar atolada. O teste de encaminhamento começa quando a mensagem "DONE" aparece no final de uma passagem. O Multitester quer rolar pela lista, mas o avanço é iniciado. E o botão "START" é pressionado e a tarefa antiga é iniciada. Qual é o critério de seu algoritmo para encerrar uma passagem?

Por favor, considere o avanço em versões futuras do multitester.

 
Good Beer:

Considere o avanço em versões futuras do multitestera.

Nunca executei o modo Forward em minha vida. Provavelmente tentarei um dia.