Если необходимо настроить мониторинг или нагрузочное тестирование для веб-приложений с функцией загрузки файлов, используйте средство сценариев EveryStep для записи сценария.

Запись загрузки файла доступна только для Chrome и мобильных браузеров.

Ограничения на отправку файлов

Средство создания сценариев EveryStep поддерживает запись загрузки файла на внешний URL-адрес. Вы можете записать выгрузку до 100 МБ в общей сложности в скрипте EveryStep для нагрузочного тестирования и до 20 МБ для скриптов мониторинга.

Например, можно записать загрузку четырех файлов размером 25 МБ или одного файла размером 100 МБ для нагрузочного теста. Или вы можете записать загрузку двух файлов с размером файла 10 МБ каждый или одного файла размером 20 МБ для веб-мониторинга производительности.

Как это работает

Dotcom-Monitor не имеет локально доступного хранилища. Чтобы подражать процессу загрузки файла, система должна загрузить файл на скрипт из общедоступного URL-адреса перед выполнением шага загрузки. Таким образом, во-первых, необходимо предоставить тестовый файл, который будет использоваться в процессе загрузки Dotcom-Monitor. В результате Dotcom-Monitor загрузит файл из предоставленного URL в облачное хранилище системы и будет использовать его в процессе загрузки каждый раз, когда сценарий выполняется. Существует два подхода к предоставлению тестового файла в Dotcom-Monitor.

Загрузка файла с внешнего URL-адреса

Чтобы использовать файл из внешнего URL-адреса, поместите тестовый файл размером до 100 МБ (до 20 МБ для сценариев мониторинга) в общедоступный URL-адрес, например корзина Amazon S3, хранилище Azure или службы CDN, такие как AWS CloudFront CDN. Затем зарегистрайте шаг загрузки файла в EveryStep Recorder. Во время записи шага вам будет предложено предоставить ссылку на тестовый файл. Система загрузит файл и будет использовать его в операции загрузки.

Для скриптов нагрузочного тестирования использование AWS CloudFront CDN предпочтительнее, чем использование корзины Amazon S3, по следующим причинам:

  1. Масштабируемость: S3 имеет встроенные ограничения на операции чтения, которые могут повлиять на результаты тестов при тестировании под большой нагрузкой.
  2. Согласованность: файлы, хранящиеся в корзине S3, расположены в определенных географических зонах, что приводит к потенциальным проблемам с задержкой в зависимости от местоположения инжекторов нагрузки. CDN предоставляют распределенные периферийные местоположения, обеспечивая стабильную задержку и более надежные результаты во время тестирования.

Запись загрузки файлов в скрипте

Кроме того, можно записать загруженный файл и выбрать загруженный файл, чтобы записать шаг отправки в скрипте. При необходимости можно изменить имя файла и ссылку, а также загрузить тайм-аут, редактируя связанную строку в области Скриптового кода после записи.

Рекомендации

Dotcom-Monitor выполняет все шаги и действия в скрипте без задержек по умолчанию. Тем не менее, обычно загрузка файла на веб-ресурс занимает некоторое время. В этом случае, чтобы имитировать задержку и ждать, пока система выполнит шаг загрузки, рекомендуется добавить строку задержки в скрипт сразу после шага загрузки.

Кроме того, чтобы убедиться, что загрузка была выполнена правильно, настроить проверку содержимого после шага загрузки. Как правило, если диалоговые окна или подтверждения загрузки появляются на странице после загрузки файла, добавьте проверку ключевых слов или доступные фрагменты кода, чтобы проверить, принес ли шаг загрузки ожидаемые результаты.

Запись загрузки файла с внешнего URL

Проверьте шаги настройки загрузки файла ниже:

  1. Загрузите тестовый файл размером до 100 МБ на общедоступный URL-адрес.
  2. Запись скрипта до момента загрузки файла.
  3. Нажмите соответствующую кнопку на целевой странице, чтобы загрузить файл.
  4. В окне Upload Files предоставьте внешнюю ссылку на файл, который вы хотите загрузить. Файл будет загружен с предоставленной внешней ссылки на облачное хранилище Dotcom-Monitor. После загрузки имя файла будет уложено в окне Upload Files. Выберите флажок файла и нажмите OK. В результате линия OpenFileDialogHandler будет автоматически добавлена в скрипт.

    Если загрузка файла была записана на предыдущем шаге скрипта, сразу выберите имя файла в окне Загрузить файлы .

  5. Добавьте задержку сразу после шага загрузки.
  6. Добавьте в скрипт ключевое слово или подтверждение изображения.
  7. При необходимости приступайте к записи; и остановить процесс записи, когда он будет готов.

Найдите пример сценария загрузки файлов, записанного в скриптовом инструменте EveryStep ниже. Сценарий содержит примеры загрузки локально сохраненного файла и файла с внешнего URL-адреса. Для загрузки тестов вы можете использовать следующие примеры файлов из общедоступных URL:

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

Обратите внимание, что платформы для хостинга файлов, используемые в приведенном ниже примере, предоставляются только в демонстрационных целях. Вы можете использовать любые платформы для обмена и хранения файлов, которые позволяют скачивать файлы.

// 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");