Se você precisar configurar o monitoramento ou o teste de carga para aplicativos web com a funcionalidade de upload de arquivos, use a EveryStep Scripting Tool para gravar o script.

A gravação de upload de arquivos está disponível apenas para chrome e navegadores móveis.

Limites de upload de arquivos

A EveryStep Scripting Tool suporta a gravação de um upload de arquivo para uma URL externa. Você pode gravar uploads de até 100 MB no total em um script EveryStep para teste de carga e até 20 MB para scripts de monitoramento.

Por exemplo, você pode gravar um upload de quatro arquivos de 25 MB ou um arquivo de 100 MB para o seu teste de carga. Ou você pode gravar o upload de dois arquivos com um tamanho de arquivo de 10 MB cada ou um arquivo de 20 MB para monitoramento de desempenho da Web.

Como funciona

O Dotcom-Monitor não possui armazenamento disponível localmente. Para emular o processo de upload de um arquivo, o sistema precisa baixar o arquivo para o script a partir de uma URL pública antes de executar a etapa de upload. Assim, primeiro, você precisa fornecer um arquivo de teste que será usado no processo de upload pelo Dotcom-Monitor. Como resultado, o Dotcom-Monitor baixará o arquivo da URL fornecida para o armazenamento em nuvem do sistema e o usará no processo de upload cada vez que o script for executado. Há duas abordagens para fornecer um arquivo de teste para o Dotcom-Monitor.

Baixando o arquivo da URL externa

Para usar um arquivo de uma URL externa, coloque um arquivo de teste de até 100 MB (até 20 MB para scripts de monitoramento) em uma URL acessível publicamente, como o bucket do Amazon S3, o armazenamento do Azure ou os serviços de CDN, como a CDN do AWS CloudFront. Em seguida, registo o passo de upload do arquivo no EveryStep Recorder. Ao gravar a etapa, você será solicitado a fornecer o link para o arquivo de teste. O sistema baixará o arquivo e o usará na operação de upload.

Para scripts de teste de carga, o uso do AWS CloudFront CDN é preferível ao uso do bucket do Amazon S3 devido ao seguinte:

  1. Escalabilidade: o S3 tem limitações inerentes à operação de leitura que podem afetar os resultados do teste em testes de carga pesada.
  2. Consistência: os arquivos armazenados em um bucket do S3 estão localizados em zonas geográficas específicas, levando a possíveis problemas de latência com base na localização dos injetores de carga. As CDNs fornecem pontos de presença distribuídos, oferecendo latência consistente e resultados mais confiáveis durante os testes.

Gravando um download de arquivo dentro do script

Como alternativa, você pode gravar o download do arquivo e selecionar o arquivo baixado para gravar uma etapa de upload no script. Se necessário, você pode alterar o nome e o link do arquivo, bem como baixar o tempo limite, editando a linha relacionada na área do Código de Script após a gravação.

Melhores Práticas

O Dotcom-Monitor executa todas as etapas e ações no script sem atrasos por padrão. No entanto, normalmente leva algum tempo para carregar um arquivo para um recurso da Web. Neste caso, para simular o atraso e esperar que o sistema execute a etapa de upload, recomenda-se adicionar a linha Delay ao script logo após a etapa de upload.

Além disso, para garantir que o upload foi executado corretamente, configure a validação do conteúdo após a etapa de upload. Em geral, se as caixas de diálogo ou confirmações de upload aparecerem na página após o upload do arquivo, adicione validação de palavras-chave ou trechos de código disponíveis para verificar se a etapa de upload trouxe os resultados esperados.

Gravando o upload de arquivos a partir da URL externa

Confira as etapas de configuração de upload do arquivo abaixo:

  1. Baixe um arquivo de teste de até 100 MB para uma URL acessível publicamente.
  2. Grave o script até o ponto que você precisa para carregar o arquivo.
  3. Clique no botão correspondente na página de destino para carregar o arquivo.
  4. Na janela Upload Files, forneça um link externo para o arquivo que deseja carregar. O arquivo será baixado a partir do link externo fornecido para o armazenamento em nuvem Dotcom-Monitor. Uma vez baixado, o nome do arquivo será listado na janela Upload Files. Selecione a caixa de seleção de arquivos e clique em OK. Como resultado, a linha OpenFileDialogHandler será adicionada automaticamente ao script.

    Se o download do arquivo tiver sido gravado na etapa anterior do script, selecione o nome do arquivo imediatamente na janela Carregar arquivos .

  5. Adicione o atraso logo após a etapa de upload.
  6. Adicione a palavra-chave ou validação de imagem ao script.
  7. Se necessário, prossiga com a gravação; e pare o processo de gravação quando estiver pronto.

Encontre o exemplo do script de upload de arquivo gravado na ferramenta de scripting EveryStep abaixo. O script contém exemplos de carregamento de um arquivo armazenado localmente e um arquivo da URL externa. Para fins de teste de upload, você pode usar os seguintes arquivos de exemplo de URLs disponíveis publicamente:

  • https://d149yd38g6ldk.cloudfront.net/LoremIpsum.docx
  • https://d149yd38g6ldk.cloudfront.net/LoremIpsum.pdf
  • https://d149yd38g6ldk.cloudfront.net/LoremIpsum.txt

Observe que as plataformas de hospedagem de arquivos utilizadas no exemplo abaixo são fornecidas apenas para fins de demonstração. Você pode usar qualquer plataforma de compartilhamento e armazenamento de arquivos que permita o download.

// script_version=3.0; everystep_version=4.0.7706.9249; date=2/10/2021; Chrome=83.0.4103.61
Tabs.SetSize (1768, 419);
DMBrowser tab0 = null;
Step (1, "Download & Generate Test Files - https://fastest.fish/test-files");
tab0 = Tabs.NewTab ();
tab0.GoTo ("https://fastest.fish/test-files");
tab0.Link ("//A[normalize-space()=\"5MB\"]", "//A[normalize-space(text())=\"5MB\"]", "//A[normalize-space()=\"10MB\"]/preceding-sibling::A[1]").Click ();
//File Download to the system storage  
Step (2, "Download & Generate Test Files - http://ipv4.download.thinkbroadband.com/5MB.zip");
tab0.Downloading ("5MB.zip", "http://ipv4.download.thinkbroadband.com/5MB.zip");
tab0.Para ("//P[normalize-space()=\"These test files will be downloaded in full over your network connection from high speed servers. These files can be used to test your network download speed.\"]/preceding-sibling::P[1]", "//P[normalize-space(text())=\"These test files will be downloaded in full over your network connection from high speed servers. These files can be used to test your network download speed.\"]/preceding-sibling::P[1]", "/HTML/BODY/DIV/DIV/P[1]").Click ();
//File Upload using the file from the system storage
Step (3, "Gofile - https://gofile.io/uploadFiles");
tab0.GoTo ("https://gofile.io/uploadFiles");
OpenFileDialogHandler (OpenFileDialogButton.Ok, new string[1] {"5MB.zip"});
tab0.Button ("//BUTTON[normalize-space()=\"Click here\"]", "//BUTTON[normalize-space(text())=\"Click here\"]", "//BUTTON[@ID=\"dropZoneBtnSelect\"]").Click ();
tab0.Button ("//BUTTON[normalize-space()=\"Upload\"]", "//BUTTON[normalize-space(text())=\"Upload\"]", "//BUTTON[@ID=\"uploadFiles-btnUpload\"]").Click ();
Delay ("40sec".ToDuration ());
tab0.KeywordAssert ("successfully uploaded");
//File Upload from the external URL
tab0.Link ("//P[normalize-space()=\"Upload Files\"]/..", "//LI[@ID=\"li-uploadFiles\"]//A", "//LI[@ID=\"li-api\"]/preceding-sibling::LI[1]//A").Click ();
tab0.Download ("Q3UTw.htm", "https://dropmefiles.com/Q3UTw");
OpenFileDialogHandler (OpenFileDialogButton.Ok, new string[1] {"Q3UTR.htm"});
tab0.Button ("//BUTTON[normalize-space()=\"Click here\"]", "//BUTTON[normalize-space(text())=\"Click here\"]", "//BUTTON[@ID=\"dropZoneBtnSelect\"]").Click ();
tab0.Button ("//BUTTON[normalize-space()=\"Upload\"]", "//BUTTON[normalize-space(text())=\"Upload\"]", "//BUTTON[@ID=\"uploadFiles-btnUpload\"]").Click ();
Delay ("40sec".ToDuration ());
tab0.KeywordAssert ("successfully uploaded");