Как ускорить тестирование селена на ферме устройств AWS? - PullRequest
1 голос
/ 27 февраля 2020

Я использую Python для тестирования на AWS ферме устройств. Кажется, что запуск селена занимает очень много времени. Вот код, который я использую:

from time import time

from boto3 import client
from selenium import webdriver


def main():
    start = time()

    device_farm_client = client("devicefarm", region_name='us-west-2')

    test_grid_url_response = device_farm_client.create_test_grid_url(
        expiresInSeconds=666,
        projectArn="arn:aws:devicefarm:us-west-2:..."
    )

    driver = webdriver.Remote(
        command_executor=test_grid_url_response['url'],
        desired_capabilities=webdriver.DesiredCapabilities.CHROME,
    )

    driver.get('https://api.ipify.org')
    print(f"Your IP is: {driver.find_element_by_tag_name('pre').text}")

    driver.quit()

    print(f"took: {time() - start:.2f}")


if __name__ == '__main__':
    main()

Вывод:

Your IP is: 100.10.10.111
took: 99.89s

Используя существующую инфраструктуру селен-концентратор, IP получается менее чем за 2 секунды!

Is Есть ли способ, как радикально сократить время?

1 Ответ

1 голос
/ 25 апреля 2020

Чтобы сократить общее время выполнения для полного выполнения набора тестов, воспользуйтесь 50 одновременными сеансами, предоставляемыми по умолчанию бесплатно. Проверьте эту ссылку . Например:

Предположим, что следующие детали

  • один набор тестов содержит 200 тестовых примеров Selenium
  • каждый тестовый пример занимает около 10 секунд для выполнения
  • Один AWS Сеанс Device Farm Selenium занимает около 60 секунд, чтобы начать

, затем я разделю мои 200 тестовых случаев на 50 одновременных сессий, выполняя параллельные партии по 4 тестовых сценария на сессию.

Общее время выполнения = (60 секунд для начала каждого сеанса + 10 секунд для запуска всех 50 одновременных сеансов со скоростью 5 сеансов в секунду + 4 * 10 секунд для выполнения тестовых примеров в каждом сеансе) = 60 + 10 + 40 = 110 секунд до окончания sh полное выполнение комплекта тестов

WHEREAS

Если вы используете инфраструктуру селен-концентратор и допустим, что предполагается следующая информация

  • 200 тестовых примеров Selenium для выполнения
  • 2 секунд для начала сеанса
  • при максимальном предположении вы можете запустить 10 одновременных сеансов

Общее время выполнения = 2 секунды для начала каждого сеанса + 20 * 10 секунд для выполнения тестовых примеров в каждом сеансе = 200 + 2 = 202 секунды до завершения sh полное выполнение набора тестов

...