Попытка изменить .t файл во время его исполнения
#1
Отправлено 06 декабря 2007 - 14:43
Подскажите, пожалуйста, как можно обойти такую проблему: из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта. Есть ли возможность как-то это реализовать? Большое спасибо.
#2
Отправлено 06 декабря 2007 - 15:10
to файл (как и ino, кстати) - это скомпилированный файл. Чтобы принудительно перекомпилить файл, надо удалить соответствующий ему to (ino) файл
сейчас вот попробую, самому интересно
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#3
Отправлено 06 декабря 2007 - 15:19
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#4
Отправлено 06 декабря 2007 - 15:33
из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта.
давайте-ка уточним задачу: какого рода изменения делаются в скриптах и зачем?
может можно вынести изменяемые данные в экселевский файлик? или еще что-то такое придумать...
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#5
Отправлено 06 декабря 2007 - 16:31
Напишите батник, который будет в цикле запускать Силк, который стартует файл, содержащий main. В ходе этого main меняются скрипты. Затем, когда итерация отработала, то Силк закрывается и уже на следующем заходе стартует на обновленных файлах. Для надежности, действительно можно после каждой итерации удалять временные файлы *.t_, *.to и т.п.Добрый день!
Подскажите, пожалуйста, как можно обойти такую проблему: из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта. Есть ли возможность как-то это реализовать? Большое спасибо.
Но реально я бы тщательно подумал над тем, чтобы как-то обойтись без мутаций. Так в один прекрасный день вы можете грохнуть свои скрипты подчистую
#6
Отправлено 06 декабря 2007 - 17:36
.... интересно, какие такие изменения в .t файлах Вы делаете ?
#7
Отправлено 07 декабря 2007 - 07:28
#8
Отправлено 07 декабря 2007 - 07:34
Напишите батник, который будет в цикле запускать Силк, который стартует файл, содержащий main. В ходе этого main меняются скрипты. Затем, когда итерация отработала, то Силк закрывается и уже на следующем заходе стартует на обновленных файлах. Для надежности, действительно можно после каждой итерации удалять временные файлы *.t_, *.to и т.п.Добрый день!
Подскажите, пожалуйста, как можно обойти такую проблему: из main() функции в цикле запускаются тесткейсы, во время их исполнения они могут быть изменены, и очень нужно, чтобы на новом шаге цикла запускалась уже обновленная версия скрипта. Есть ли возможность как-то это реализовать? Большое спасибо.
Но реально я бы тщательно подумал над тем, чтобы как-то обойтись без мутаций. Так в один прекрасный день вы можете грохнуть свои скрипты подчистую
К сожалению, нет возможности останавливать силктест после итерации, потому что они выполняются в несколько потоков (на нескольких машинах одни и те же тесткейсы, либо разные тесткейсы), может есть еще какой-нибудь способ? Огромное спасибо
#9
Отправлено 07 декабря 2007 - 09:30
Если вы хотите что-то использовать в своем скрипте, то это что-то изначально должно подключаться к скрипту, исполняемому в данный момент изначально. Вам ничто не мешает подключить все нужные файлы. Use не работает динамически. Подключайте все, что нужно или даже может понадобиться. Тогда проблем с use не будетРечь идет об изменениях в логике теста, а не в данных, которые он использует. Более подробное описание задачи: есть набор тесткейсов, который силктест выполняет непрерывно, в цикле, в процессе их выполнение тесткейс может быть исправлен, как-то откорректирован, в него добавлены новые возможности в зависимости от конфигурации. Можно, конечно, написать отдельный тесткейс, но тогда есть такой вопрос: допустим, названия тесткейсов читаются из базы данных и добавляются в указанный выше набор, но как не останавливая силктест, заставить его выполнять в цикле еще и новый тесткейс, если конструкцию use использовать внутри main() функции нельзя, а подлючить (как с помощью use) файл с новым скриптом необходимо? Большое спасибо
Если вам надо делать изменения в логике теста, то подобные задачи реализуются при помощи реализации паттерна "Стратегия", но это делается на уровне объектов, когда отдельный тест или какой-то его блок - это фактически объект и в зависимости от определенных условий весь тест может собираться из разных комбинаций этих объектов.
И еще как вариант, зачем менять динамически логику теста, если можно предусмотреть различные пути просто? То есть достаточно реализовать различные ветвления, что-то сгруппировать в функции и т.п. Может вы слишком себе усложняете задачу? Динамически модифицировать скрипт - это нехорошо, я своим по рукам бью даже если они просто хотят распарсить скрипт, выполняющийся в данный момент, а это только чтение и файл не повреждает. Тем не менее, трогать работающий скрипт в самом скрипте - это изврат и как минимум небезопасно. Попробуйте на управляющих конструкциях варьируемую логику построить
#10
Отправлено 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 исполняется, другой можно было модифицировать вручную и исполнить уже обновленный код.
#11
Отправлено 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 исполняется, другой можно было модифицировать вручную и исполнить уже обновленный код.
Опять же, можно сделать набор некоторых входных данных и для каждого из них определить ожидаемые результаты и в цикле эти варианты проверить.
В-общем, все, что угодно, но не менять файл.
#12
Отправлено 07 декабря 2007 - 13:45
Важно:
в файлах 1 2 3 хранятся отдельные тесткейсы выполняющие одну функцию (отправить почту например), тоесть мы изменяем по сути код тока отдельного тесткейаса.
#13
Отправлено 07 декабря 2007 - 13:57
так вот нужно чтобы силктест теперь выполнял это, даже ен ерегрузившись... что-то в этом роде.
почему такая строгость?
если вы бесконечно будете крутить даже один и тот же тесткейс - где-нибудь в итоге будет переполнение и все равно придется перестартовывать силктест
не усложняйте себе жизнь: напишите батник (или скриптик на JScript/VBSript) и пусть силктест перезапускается каждый раз перед новой итерацией, как уже было сказано выше
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#14
Отправлено 07 декабря 2007 - 13:59
Стоп, это получается, что меняется функционал приложения, причем не во время работы скрипта, а со стороны разработчиков. Когда такое происходит, то тесты обычно просто апдейтятся (как тестовые сценарии, так и автоматизированная их реализация ) - это нормальная практика постановки тестирования на живом продукте. Причем вполне нормально, если это делается вручную, так как предугадать логику модификаций со стороны программистов автоматически - в общем случае задача невыполнимая. Правьте файлы вручную. Это нормально. А затем просто по-новой запустите тесты. Особой потери времени при этом не будет. Или вы хотите сделать какой-то механизм, который бы постоянно крутился, а вы просто подкладывали тесты, апдейтили их, корректировали? В этом случае подумайте-таки над батниками. Обновленные тесты надо перекомпилироватьДело в том, что мы не можем вычислить ожидаемую строку, скрипт main должен выполнять три файла, 1 2 и 3 в первом печатал "привет", во втором открывал яндекс а в третьем отправлял почту. Потом мы обнаружили ошибку в первом файле:) и разработчик ешил исправть, исправил соханил и добавил функционал, например теперь он пишет привет не на экран а в БД так вот нужно чтобы силктест теперь выполнял это, даже ен ерегрузившись... что-то в этом роде. По этому патерный и ветвления не подходят. Нам нужно именно файлы править.
Важно:
в файлах 1 2 3 хранятся отдельные тесткейсы выполняющие одну функцию (отправить почту например), тоесть мы изменяем по сути код тока отдельного тесткейаса.
#15
Отправлено 07 декабря 2007 - 14:09
... Правьте файлы вручную. Это нормально.
Вот в этом и вопрос:) Можно ли их править вручную сохранять. А силктест не останавливаюсь начинает их новенькие брать и дальше с ними рабортать?
#16
Отправлено 07 декабря 2007 - 14:12
Переполнение?так вот нужно чтобы силктест теперь выполнял это, даже ен ерегрузившись... что-то в этом роде.
почему такая строгость?
если вы бесконечно будете крутить даже один и тот же тесткейс - где-нибудь в итоге будет переполнение и все равно придется перестартовывать силктест
не усложняйте себе жизнь: напишите батник (или скриптик на JScript/VBSript) и пусть силктест перезапускается каждый раз перед новой итерацией, как уже было сказано выше
тоесть Силктест не сможет работать неделю без перерыва, причем исполняя сложную задачу, очень сложную?
#17
Отправлено 07 декабря 2007 - 14:16
Я все понял. Даже предыдущий пост отредактировал. Не, в рантайме Силк апдейты не подхватит. Он же файлы компилирует. Соответственно, нужно как минимум перезапустить основной тест. Таки подумайте над батников или чем-то подобным, чтобы это дело обрабатывать циклически. Только так апдейты подхватятся... Правьте файлы вручную. Это нормально.
Вот в этом и вопрос:) Можно ли их править вручную сохранять. А силктест не останавливаюсь начинает их новенькие брать и дальше с ними рабортать?
#18
Отправлено 07 декабря 2007 - 14:22
Зависит от многих факторов. В основном от количества оконных объектов и работы с ними. В некоторых случаях их записи не выгружаются при закрытии окна и в кончном счете Силк со временем начинает барахлить. Но теоретически неделю вполне может работать. Хотя перегружать машину зачастую может быть полезным (сама машина за сутки интенсивных нагрузок уже может просто выдыхаться).Переполнение?так вот нужно чтобы силктест теперь выполнял это, даже ен ерегрузившись... что-то в этом роде.
почему такая строгость?
если вы бесконечно будете крутить даже один и тот же тесткейс - где-нибудь в итоге будет переполнение и все равно придется перестартовывать силктест
не усложняйте себе жизнь: напишите батник (или скриптик на JScript/VBSript) и пусть силктест перезапускается каждый раз перед новой итерацией, как уже было сказано выше
тоесть Силктест не сможет работать неделю без перерыва, причем исполняя сложную задачу, очень сложную?
#19
Отправлено 07 декабря 2007 - 14:30
Зависит от многих факторов. В основном от количества оконных объектов и работы с ними. В некоторых случаях их записи не выгружаются при закрытии окна и в кончном счете Силк со временем начинает барахлить. Но теоретически неделю вполне может работать. Хотя перегружать машину зачастую может быть полезным (сама машина за сутки интенсивных нагрузок уже может просто выдыхаться).
ключевое слово я выделил ;)
конечно, теория - это хорошо. НО!
Представьте, что у вас силктест работает 3 дня, и все с ним ок, и он на лету подхватывает изменения. А потом вы случайно подкладываете неправильный код, на котором силк зависает. Вот и все, и все равно перестартовывать.
БАТНИК! И перестартовывать силктест.
Ибо подумайте сами: вы когда-нибудь видели программы без ошибок? Не считая Hello, world, конечно. То-то и оно...
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#20
Отправлено 07 декабря 2007 - 14:31
Я все понял. Даже предыдущий пост отредактировал. Не, в рантайме Силк апдейты не подхватит. Он же файлы компилирует. Соответственно, нужно как минимум перезапустить основной тест. Таки подумайте над батников или чем-то подобным, чтобы это дело обрабатывать циклически. Только так апдейты подхватятся... Правьте файлы вручную. Это нормально.
Вот в этом и вопрос:) Можно ли их править вручную сохранять. А силктест не останавливаюсь начинает их новенькие брать и дальше с ними рабортать?
Хм, а может можно так:
while(1){ f=fopen("1.t","r") s=getcontent(f) //назовем функцию eval eval(s) }Тоесть в сроку s считаетсмя содерживое файла с тесткейсом, потом каким-то образов эта строка преобразвется в исполняемый код, в инструкции языка, и исполниться... Хотя если силктест компилирует, то видимо это не прокатит.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных