Перейти к содержимому

Фотография

Попытка изменить .t файл во время его исполнения


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 24

#1 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 06 декабря 2007 - 14:43

Добрый день!
Подскажите, пожалуйста, как можно обойти такую проблему: из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта. Есть ли возможность как-то это реализовать? Большое спасибо.
  • 0

#2 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 06 декабря 2007 - 15:10

теоретически (сам не пробовал, правда) надо перед запуском скриптов удалить соответствующий *.to файл.
to файл (как и ino, кстати) - это скомпилированный файл. Чтобы принудительно перекомпилить файл, надо удалить соответствующий ему to (ino) файл

сейчас вот попробую, самому интересно
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#3 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 06 декабря 2007 - 15:19

Не получилось так, как я предлагал =)
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#4 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 06 декабря 2007 - 15:33

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


давайте-ка уточним задачу: какого рода изменения делаются в скриптах и зачем?

может можно вынести изменяемые данные в экселевский файлик? или еще что-то такое придумать...
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#5 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 06 декабря 2007 - 16:31

Добрый день!
Подскажите, пожалуйста, как можно обойти такую проблему: из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта. Есть ли возможность как-то это реализовать? Большое спасибо.

Напишите батник, который будет в цикле запускать Силк, который стартует файл, содержащий main. В ходе этого main меняются скрипты. Затем, когда итерация отработала, то Силк закрывается и уже на следующем заходе стартует на обновленных файлах. Для надежности, действительно можно после каждой итерации удалять временные файлы *.t_, *.to и т.п.

Но реально я бы тщательно подумал над тем, чтобы как-то обойтись без мутаций. Так в один прекрасный день вы можете грохнуть свои скрипты подчистую
  • 0

#6 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 06 декабря 2007 - 17:36

Если эти изменения связаны с данными, то гораздо позитивнее использовать функции IniFileOpen/IniFileClose + IniFileGetValue/IniFileSetValue (или даже базы данных, но там больше функций :smile: ).
.... интересно, какие такие изменения в .t файлах Вы делаете ?
  • 0

#7 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 07 декабря 2007 - 07:28

Речь идет об изменениях в логике теста, а не в данных, которые он использует. Более подробное описание задачи: есть набор тесткейсов, который силктест выполняет непрерывно, в цикле, в процессе их выполнение тесткейс может быть исправлен, как-то откорректирован, в него добавлены новые возможности в зависимости от конфигурации. Можно, конечно, написать отдельный тесткейс, но тогда есть такой вопрос: допустим, названия тесткейсов читаются из базы данных и добавляются в указанный выше набор, но как не останавливая силктест, заставить его выполнять в цикле еще и новый тесткейс, если конструкцию use использовать внутри main() функции нельзя, а подлючить (как с помощью use) файл с новым скриптом необходимо? Большое спасибо
  • 0

#8 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 07 декабря 2007 - 07:34

Добрый день!
Подскажите, пожалуйста, как можно обойти такую проблему: из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта. Есть ли возможность как-то это реализовать? Большое спасибо.

Напишите батник, который будет в цикле запускать Силк, который стартует файл, содержащий main. В ходе этого main меняются скрипты. Затем, когда итерация отработала, то Силк закрывается и уже на следующем заходе стартует на обновленных файлах. Для надежности, действительно можно после каждой итерации удалять временные файлы *.t_, *.to и т.п.

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


К сожалению, нет возможности останавливать силктест после итерации, потому что они выполняются в несколько потоков (на нескольких машинах одни и те же тесткейсы, либо разные тесткейсы), может есть еще какой-нибудь способ? Огромное спасибо
  • 0

#9 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 07 декабря 2007 - 09:30

Речь идет об изменениях в логике теста, а не в данных, которые он использует. Более подробное описание задачи: есть набор тесткейсов, который силктест выполняет непрерывно, в цикле, в процессе их выполнение тесткейс может быть исправлен, как-то откорректирован, в него добавлены новые возможности в зависимости от конфигурации. Можно, конечно, написать отдельный тесткейс, но тогда есть такой вопрос: допустим, названия тесткейсов читаются из базы данных и добавляются в указанный выше набор, но как не останавливая силктест, заставить его выполнять в цикле еще и новый тесткейс, если конструкцию use использовать внутри main() функции нельзя, а подлючить (как с помощью use) файл с новым скриптом необходимо? Большое спасибо

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

Если вам надо делать изменения в логике теста, то подобные задачи реализуются при помощи реализации паттерна "Стратегия", но это делается на уровне объектов, когда отдельный тест или какой-то его блок - это фактически объект и в зависимости от определенных условий весь тест может собираться из разных комбинаций этих объектов.

И еще как вариант, зачем менять динамически логику теста, если можно предусмотреть различные пути просто? То есть достаточно реализовать различные ветвления, что-то сгруппировать в функции и т.п. Может вы слишком себе усложняете задачу? Динамически модифицировать скрипт - это нехорошо, я своим по рукам бью даже если они просто хотят распарсить скрипт, выполняющийся в данный момент, а это только чтение и файл не повреждает. Тем не менее, трогать работающий скрипт в самом скрипте - это изврат и как минимум небезопасно. Попробуйте на управляющих конструкциях варьируемую логику построить
  • 0

#10 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 07 декабря 2007 - 13:22

Проблема вот в чем:
нам необходимо реализовать следующий алгоритм (написанный в пхп) в силк тесте:
Sanek:
<?
for ($i = 1; $i <= 7; $i++) {
		$handle = fopen("test.php", "w");
		fputs($handle, '<? $vvv = '.$i.'; ?>');
		include("test.php");
		echo ">".$vvv."<";
}
?>
Такой код выдает следующий результат:
вывод: >1<>2<>3<>4<>5<>6<>7<>7<

То есть видно, что код изменялся во время исполнеия, можно ли реализовать это в силктесте. нам нужно чтобы тесткейсы подключались в алгоритм динамически, и пока один алгоритм файл .t исполняется, другой можно было модифицировать вручную и исполнить уже обновленный код.
  • 0

#11 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 07 декабря 2007 - 13:30

Проблема вот в чем:
нам необходимо реализовать следующий алгоритм (написанный в пхп) в силк тесте:
Sanek:

<?
for ($i = 1; $i <= 7; $i++) {
		$handle = fopen("test.php", "w");
		fputs($handle, '<? $vvv = '.$i.'; ?>');
		include("test.php");
		echo ">".$vvv."<";
}
?>
Такой код выдает следующий результат:
вывод: >1<>2<>3<>4<>5<>6<>7<>7<

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

А что мешает вам по тем же правилам вычислять ожидаемую строку в СилкТесте? Это ж просто операции со строками.

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

В-общем, все, что угодно, но не менять файл.
  • 0

#12 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 07 декабря 2007 - 13:45

Дело в том, что мы не можем вычислить ожидаемую строку, скрипт main должен выполнять три файла, 1 2 и 3 в первом печатал "привет", во втором открывал яндекс а в третьем отправлял почту. Потом мы обнаружили ошибку в первом файле:) и разработчик ешил исправть, исправил соханил и добавил функционал, например теперь он пишет привет не на экран а в БД так вот нужно чтобы силктест теперь выполнял это, даже ен ерегрузившись... что-то в этом роде. По этому патерный и ветвления не подходят. Нам нужно именно файлы править.
Важно:
в файлах 1 2 3 хранятся отдельные тесткейсы выполняющие одну функцию (отправить почту например), тоесть мы изменяем по сути код тока отдельного тесткейаса.
  • 0

#13 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 07 декабря 2007 - 13:57

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


почему такая строгость?
если вы бесконечно будете крутить даже один и тот же тесткейс - где-нибудь в итоге будет переполнение и все равно придется перестартовывать силктест

не усложняйте себе жизнь: напишите батник (или скриптик на JScript/VBSript) и пусть силктест перезапускается каждый раз перед новой итерацией, как уже было сказано выше
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#14 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 07 декабря 2007 - 13:59

Дело в том, что мы не можем вычислить ожидаемую строку, скрипт main должен выполнять три файла, 1 2 и 3 в первом печатал "привет", во втором открывал яндекс а в третьем отправлял почту. Потом мы обнаружили ошибку в первом файле:) и разработчик ешил исправть, исправил соханил и добавил функционал, например теперь он пишет привет не на экран а в БД так вот нужно чтобы силктест теперь выполнял это, даже ен ерегрузившись... что-то в этом роде. По этому патерный и ветвления не подходят. Нам нужно именно файлы править.
Важно:
в файлах 1 2 3 хранятся отдельные тесткейсы выполняющие одну функцию (отправить почту например), тоесть мы изменяем по сути код тока отдельного тесткейаса.

Стоп, это получается, что меняется функционал приложения, причем не во время работы скрипта, а со стороны разработчиков. Когда такое происходит, то тесты обычно просто апдейтятся (как тестовые сценарии, так и автоматизированная их реализация ) - это нормальная практика постановки тестирования на живом продукте. Причем вполне нормально, если это делается вручную, так как предугадать логику модификаций со стороны программистов автоматически - в общем случае задача невыполнимая. Правьте файлы вручную. Это нормально. А затем просто по-новой запустите тесты. Особой потери времени при этом не будет. Или вы хотите сделать какой-то механизм, который бы постоянно крутился, а вы просто подкладывали тесты, апдейтили их, корректировали? В этом случае подумайте-таки над батниками. Обновленные тесты надо перекомпилировать
  • 0

#15 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 07 декабря 2007 - 14:09

... Правьте файлы вручную. Это нормально.


Вот в этом и вопрос:) Можно ли их править вручную сохранять. А силктест не останавливаюсь начинает их новенькие брать и дальше с ними рабортать?
  • 0

#16 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 07 декабря 2007 - 14:12

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


почему такая строгость?
если вы бесконечно будете крутить даже один и тот же тесткейс - где-нибудь в итоге будет переполнение и все равно придется перестартовывать силктест

не усложняйте себе жизнь: напишите батник (или скриптик на JScript/VBSript) и пусть силктест перезапускается каждый раз перед новой итерацией, как уже было сказано выше

Переполнение?
тоесть Силктест не сможет работать неделю без перерыва, причем исполняя сложную задачу, очень сложную?
  • 0

#17 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 07 декабря 2007 - 14:16

... Правьте файлы вручную. Это нормально.


Вот в этом и вопрос:) Можно ли их править вручную сохранять. А силктест не останавливаюсь начинает их новенькие брать и дальше с ними рабортать?

Я все понял. Даже предыдущий пост отредактировал. Не, в рантайме Силк апдейты не подхватит. Он же файлы компилирует. Соответственно, нужно как минимум перезапустить основной тест. Таки подумайте над батников или чем-то подобным, чтобы это дело обрабатывать циклически. Только так апдейты подхватятся
  • 0

#18 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 07 декабря 2007 - 14:22

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


почему такая строгость?
если вы бесконечно будете крутить даже один и тот же тесткейс - где-нибудь в итоге будет переполнение и все равно придется перестартовывать силктест

не усложняйте себе жизнь: напишите батник (или скриптик на JScript/VBSript) и пусть силктест перезапускается каждый раз перед новой итерацией, как уже было сказано выше

Переполнение?
тоесть Силктест не сможет работать неделю без перерыва, причем исполняя сложную задачу, очень сложную?

Зависит от многих факторов. В основном от количества оконных объектов и работы с ними. В некоторых случаях их записи не выгружаются при закрытии окна и в кончном счете Силк со временем начинает барахлить. Но теоретически неделю вполне может работать. Хотя перегружать машину зачастую может быть полезным (сама машина за сутки интенсивных нагрузок уже может просто выдыхаться).
  • 0

#19 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 07 декабря 2007 - 14:30

Зависит от многих факторов. В основном от количества оконных объектов и работы с ними. В некоторых случаях их записи не выгружаются при закрытии окна и в кончном счете Силк со временем начинает барахлить. Но теоретически неделю вполне может работать. Хотя перегружать машину зачастую может быть полезным (сама машина за сутки интенсивных нагрузок уже может просто выдыхаться).


ключевое слово я выделил ;)
конечно, теория - это хорошо. НО!

Представьте, что у вас силктест работает 3 дня, и все с ним ок, и он на лету подхватывает изменения. А потом вы случайно подкладываете неправильный код, на котором силк зависает. Вот и все, и все равно перестартовывать.

БАТНИК! И перестартовывать силктест.

Ибо подумайте сами: вы когда-нибудь видели программы без ошибок? Не считая Hello, world, конечно. То-то и оно...
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#20 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 07 декабря 2007 - 14:31

... Правьте файлы вручную. Это нормально.


Вот в этом и вопрос:) Можно ли их править вручную сохранять. А силктест не останавливаюсь начинает их новенькие брать и дальше с ними рабортать?

Я все понял. Даже предыдущий пост отредактировал. Не, в рантайме Силк апдейты не подхватит. Он же файлы компилирует. Соответственно, нужно как минимум перезапустить основной тест. Таки подумайте над батников или чем-то подобным, чтобы это дело обрабатывать циклически. Только так апдейты подхватятся


Хм, а может можно так:
while(1){
 f=fopen("1.t","r")
 s=getcontent(f)
 //назовем функцию eval
 eval(s)
}
Тоесть в сроку s считаетсмя содерживое файла с тесткейсом, потом каким-то образов эта строка преобразвется в исполняемый код, в инструкции языка, и исполниться... Хотя если силктест компилирует, то видимо это не прокатит.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных