Я хочу знать, сколько времени требуется для выполнения каждого шага теста

Приведенный ниже тест проходит отлично ... Я просто хочу знать, сколько времени занимает каждый шаг теста. Изначально тест был экспортирован из плагина selenium firefox в ruby.

Я планирую добавить еще один дополнительный шаг, который проверяет, что страница «Среднее время загрузки» полностью загружена. И я действительно хотел бы знать, сколько времени проходит с момента, когда тест нажимает «среднее время загрузки», до полной загрузки страницы.

 require "json"
    require "selenium-webdriver"
    gem "test-unit"
    require "test/unit"

    class LoginToChute< Test::Unit::TestCase

    def setup
        @driver = Selenium::WebDriver.for :chrome
        @base_url = "https://devdb5.esosuite.net/EsoSuiteHotfixDaily/"
        @accept_next_alert = true
        @driver.manage.timeouts.implicit_wait = 30
        @verification_errors = []
      end

      def teardown
        assert_equal [], @verification_errors
        @driver.quit
      end



      def test_login_to_chute
        @driver.get(@base_url)
        assert_equal "ESO Solutions :: NextGen", @driver.title
        @driver.find_element(:id, "UserName").clear
        @driver.find_element(:id, "UserName").send_keys "jenna"
        @driver.find_element(:id, "Password").clear
        @driver.find_element(:id, "Password").send_keys ".alice77."
        @driver.find_element(:id, "AgencyLoginId").clear
        @driver.find_element(:id, "AgencyLoginId").send_keys "wonderland"
        @driver.find_element(:id, "btnLogin").click
        @driver.find_element(:css, "img[alt=\"analytics\"]").click
        @driver.find_element(:xpath, "//div[text() = 'ePCR Reports']").click
        @driver.find_element(:xpath, "//div[text() = 'Operational Reports']").click
        @driver.find_element(:xpath, "//div[text() = 'Average Chute Time']").click



      end

      def element_present?(how, what)
        @driver.find_element(how, what)
        true
      rescue Selenium::WebDriver::Error::NoSuchElementError
        false
      end

      def alert_present?()
        @driver.switch_to.alert
        true
      rescue Selenium::WebDriver::Error::NoAlertPresentError
        false
      end

      def verify(&blk)
        yield
      rescue Test::Unit::AssertionFailedError => ex
        @verification_errors << ex
      end

      def close_alert_and_get_its_text(how, what)
        alert = @driver.switch_to().alert()
        alert_text = alert.text
        if (@accept_next_alert) then
          alert.accept()
        else
          alert.dismiss()
        end
        alert_text
      ensure
        @accept_next_alert = true
      end
    end

person Jen    schedule 31.07.2014    source источник


Ответы (1)


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

Затем вы берете системную метку времени и сохраняете ее как переменную перед строкой @driver.find_element(:xpath, "//div[text() = 'Average Chute Time']").click вашего теста. Выполните весь свой код в своем тесте и дождитесь, пока элемент, который вы определили как последний, будет загружен после завершения вашего выполнения. Сразу после ожидания возьмите временную метку и получите разницу между двумя временными метками.

Естественно, этот метод будет работать в течение любой продолжительности, которую вы хотите измерить, вам просто нужно организовать свой тест соответствующим образом, чтобы вы точно измеряли выполнение шагов, которые вы хотите измерить. Ожидания определенных элементов важны для гарантии того, что клиент завершил рендеринг всего с точки зрения пользователя. Обычно трюки с производительностью заключаются в визуализации страницы и элементов управления, а затем в изменении модели DOM с помощью javascript, так что создается впечатление, что страница уже существует до того, как все компоненты и содержимое элемента управления фактически станут доступны пользователю. Так что будьте осторожны с тем, что вы на самом деле измеряете, а не просто измеряйте необработанную загрузку страницы.

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

person mutt    schedule 01.08.2014