Предположим, что я использую диспетчер сценариев восстановления QTP, чтобы установить тайм-аут синхронизации воспроизведения на 0. Обработчик вернется с «продолжить со следующим оператором».
Я бы сделал это, чтобы убедиться, что любые последующие операторы воспроизведения не будут тратить свое время на ожидание следующего несуществующего / несоответствующего шага, прежде чем потерпеть неудачу:
У меня многоGUI-тестов такого рода застревает, потому что, скажем, если 10 элементов управления отсутствуют, их (последовательные) шаги воспроизведения приводят к 10 ожиданиям ожидания до сбоя.Если тайм-аут воспроизведения составляет 30 секунд, я теряю 10x30 секунд = 5 минут времени выполнения, тогда как на самом деле было бы достаточно подождать 30 секунд ОДИН РАЗ (потому что приложение больше не меняется - мы уже ждали полный период ожидания).
Теперь, если у меня есть 100 тестовых случаев (= итерации действий), это может произойти 100 раз, тратя впустую 500 минут моего временного окна теста.
Вот почему я пришел к мыслифункция сценария восстановления, устанавливающая время ожидания на 0 после / после первого неудачного шага воспроизведения.Это ускорило бы скорость при пропуске шага, который был выполнен с ошибкой, но не поставило бы под угрозу точность / надежность определения следующего соответствующего контекста GUI (который создает шаг PASSED).
Затем, конечно, при следующем пройден шаг воспроизведения, я бы хотел восстановить исходное значение тайм-аута.Как я мог это сделать? Это мой вопрос.
Невозможно определить функцию сценария восстановления, которая вызывается для шагов PASSED.
В настоящее время я думаю о настройке функции метода для Reporter.ReportEvent и "прослушивании" для записей журнала PASSED.Я бы установил эту функцию в функции восстановления сценария, которая устанавливает тайм-аут на 0. Затем, когда функция «сниффер» распознает вызов ReportEvent со статусом PASSED во время одного из следующих шагов воспроизведения, я бы сбросил все настройки (т.е. восстановилисходное время ожидания и удалить функцию метода).(Однако я на 99% уверен, что методы .Click и .Set не вызывают ReportEvent для записи своего состояния результата ... так что эта опция, вероятно, может не работать.)
Лучшие идеи?Это действительно беспокоит меня.