tag:blogger.com,1999:blog-6346131298481535631.post4058022305044699155..comments2023-05-18T15:33:51.966+03:00Comments on Чудес не бывает или я ошибаюсь?: Тестируем с помощью Fitnesse+PowerSlim. Часть 2. База.Maxim Shulga (aka MaxBeard12)http://www.blogger.com/profile/05615743910272666556noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-6346131298481535631.post-56685059902403245962014-11-05T14:47:12.950+03:002014-11-05T14:47:12.950+03:00начну с того, что "общий язык, который должны...начну с того, что "общий язык, который должны понимать и разработчики, и заказчики" это прикольно, но в моей практике не работало. Скорее наоборот. Но само направление идеи правильное - разработчик может сделать кубиков, а, например, аналитик или тестировщик, может из этих кубиков истории складывать. Роль кубиков могут играть PowerSlim сценарии, внутри которых скрыт весь низкоуровневый код, а снаружи это могут быть просто "start vm" (и все равно каким образом она стартует) или "decode video" (а то что для этого делается LoadAssembly, создается объект класса и вызывается метод - это уже реализация, которая может меняться, стабироваться и тд). Снаружи это просто "action".Максим Шульга (Maxim Shulga)http://maxshulga.ru/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-8700408782984984822014-11-04T11:37:11.904+03:002014-11-04T11:37:11.904+03:00Очень здорово, теперь можно разработку начинать с ...Очень здорово, теперь можно разработку начинать с написания не юнит тестов, а прям с викистранички с приемочными требованиями к функционалу, и плясать уже от них. :) Правда пока первые шаги, но уже большое удовлетворение ))) Хотя я себе немного по другому представлял, тут слишком уж получается низкоуровнево приходится тесты описывать. Не совсем пока понятно, где при таком построении тестов можно впихнуть реализацию общего языка, который должны понимать и разработчики и заказчики. В общем ещё надо поразмышлять )Okariennoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-51995349250187771372014-10-31T12:07:14.195+03:002014-10-31T12:07:14.195+03:00гуд. это правильный подход :)гуд. это правильный подход :)Максим Шульга (Maxim Shulga)http://maxshulga.ru/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-23295950025862991132014-10-31T12:03:48.507+03:002014-10-31T12:03:48.507+03:00Хорошо, сейчас переварю и попробую поиграться с те...Хорошо, сейчас переварю и попробую поиграться с тем, что вы написали, и уже более конкретно спрошу, если не разберусь.Okariennoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-51829306223268569342014-10-31T11:56:48.906+03:002014-10-31T11:56:48.906+03:00Вы пытаетесь использовать Fit вместо Slim. Для тог...Вы пытаетесь использовать Fit вместо Slim. Для того, чтобы дернуть код библиотеки из powerslim не надо реализовывать Fixture. <br /><br /><br />Можно прямо вызывать методы assembly из powershell. <br />Например в ExampleS.CreateProductShare, видно как делать функцию и как ее использовать. <br /><br /><br />Внутри функции можно делать явную загрузку вашей реальной библиотеки и вызывать ее методы <br />$Assembly = [System.Reflection.Assembly]::LoadFrom("YOUR_ASSEMBLY"); <br />$recorder = New-Object YouLibrary.DigitalVideoRecorder$recorder.GrabVideo($whereToSave)<br />Тут вызывается реальный продакшен метод GrabVideo вашей библиотеки. Дальше вы можете проверить, что файл например записался, имеет правильный формат и тп.<br /><br />Можете прислать свои контакты мне на почту mail.ru (maxim точка shulga), можно пообщаться ближе к "телу" кода, сценариям использования и тп.Максим Шульга (Maxim Shulga)http://maxshulga.ru/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-45739406457588841422014-10-31T11:23:24.770+03:002014-10-31T11:23:24.770+03:00Попробовал - вот что выдает. Test Pages: 0 right, ...Попробовал - вот что выдает. Test Pages: 0 right, 0 wrong, 1 ignored, 0 exceptions Assertions: 0 right, 0 wrong, 0 ignored, 0 exceptions (2,659 seconds) <br /><br />А страница с тестом такая - <br /><br />!define TEST_SYSTEM {slim}<br /><br />!define COMMAND_PATTERN {PowerShell -NonInteractive -ExecutionPolicy unrestricted -file .\slim.ps1}<br /><br />!define HOST_VERSION {4.0 } <br /><br />!path C:\nfit\DigitalVideoRecorder.dll<br /><br /> <br /><br />!define COLLAPSE_SETUP {true}<br /><br />!define COLLAPSE_TEARDOWN {true}<br /><br />!|import|<br /><br />|DigitalVideoRecorder|<br /><br /> <br /><br />!|Create Programs |<br /><br />|Name |Channel|DayOfWeek|TimeOfDay|DurationInMinutes|id? |<br /><br />|House|4 |Monday |19:00 |60 |$ID=|<br /><br />А ошибки такие - <br /><br />slim:fitnesse.slim.SlimServiceDate:12:20:04 PM (MSK) on пятница, октября 31, 2014Test Page:.DigitalVideoRecorderCommand:PowerShell -NonInteractive -ExecutionPolicy unrestricted -file .\slim.ps1 8093Exit code:0Time elapsed:2.609 seconds<br /><br />Standard Output:<br /><br />True<br /><br />Standard Error:<br /><br />��� ".\DigitalVideoRecorder" �� �ᯮ����� ��� ��� ���������, �㭪樨, 䠩�� �<br />�ਯ� ��� �믮��塞�� �ணࠬ��. ����� �ࠢ��쭮��� ����ᠭ�� �����, � ⠪<br />�� ����稥 � �ࠢ��쭮��� ���, �� 祣� ������ ������.<br />��ப�:1 ����:2<br />+ . <<<< .\DigitalVideoRecorder<br /> + CategoryInfo : ObjectNotFound: (.\DigitalVideoRecorder:String) <br /> [], CommandNotFoundException<br /> + FullyQualifiedErrorId : CommandNotFoundExceptionOkariennoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-37501650558877518662014-10-31T11:10:33.570+03:002014-10-31T11:10:33.570+03:00А почему бы не попробовать PowerSlim? К сожалению,...А почему бы не попробовать PowerSlim? К сожалению, я ничего не могу подсказать по nslim и его раннеру. А в PowerSlim вы можете дергать методы вашей библиотеки и проверять результат. Это 100% работает, ну или во всяком случае мы попробуем разобраться почему нет, если вдруг "нет" :). PS на модерации комментов не висит.Максим Шульга (Maxim Shulga)http://maxshulga.ru/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-15177001835688368272014-10-31T10:56:05.927+03:002014-10-31T10:56:05.927+03:00Test System: slim:C:\nfit\Runner.exe
Вот так пише...Test System: slim:C:\nfit\Runner.exe<br /><br />Вот так пишет:<br /><br /><br />variable defined: TEST_SYSTEM=slim <br />variable defined: COMMAND_PATTERN=%m -r fitSharp.Slim.Service.Runner,C:\nfit\fitsharp.dll %p <br />variable defined: TEST_RUNNER=C:\nfit\Runner.exe <br /><br />classpath: C:\nfit\DigitalVideoRecorder.dll<br /><br /><br />variable defined: COLLAPSE_SETUP=true <br />variable defined: COLLAPSE_TEARDOWN=true <br /><br />importDigitalVideoRecorder Test not run<br />Create Programs Test not runNameChannelDayOfWeekTimeOfDayDurationInMinutesid?House Test not run4 Test not runMonday Test not run19:00 Test not run60 Test not run$ID= Test not runOkariennoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-61176643574922270232014-10-31T10:49:23.257+03:002014-10-31T10:49:23.257+03:00Странно, написал комментарий, а он пропал. Или про...Странно, написал комментарий, а он пропал. Или просто еще не прошел модерацию? Я пытаюсь для начала хотя бы библиотеку протестировать. Он игнорирует тесты почему-то. Скачал последнюю версию NSlim, всё как в туториалах сделал, а не работает :( Разные версии раннера скачивал. Не пойму как устроено взаимодействие с фитнессом, потому не могу разобраться в чем ошибка. Первый запуск проходит удачно(если отладочный режим запустить) - возвращает 0. А дальше ничего не происходит.Okariennoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-60461280987330501742014-10-30T12:41:59.250+03:002014-10-30T12:41:59.250+03:00А "приложение" - это что? Это UI, сервис...А "приложение" - это что? Это UI, сервис, cmd-утилита? "Живет" ли весь код внутри exe-шника или он просто использует код из библиотек (dll assembly)?Максим Шульга (Maxim Shulga)http://maxshulga.ru/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-59262508149690102582014-10-30T11:15:06.090+03:002014-10-30T11:15:06.090+03:00Всё читаю читаю про фитнес, и никак не пойму(не на...Всё читаю читаю про фитнес, и никак не пойму(не найду), как мне конкретно протестировать на си шарпе написанное приложение. Есть библиотека с тестируемыми классами. Я должен для них написать еще одну библиотеку на си шарпе, которая будет предоставлять интерфейс к этим классам для фитнеса, А вот как в целом это всё запустить, не пойму, не получается. Как со стороны финтнеса писать в викиразметки тесты написано. а вот как всё это интегрировать что бы работало, не получается. Вот например после ваших статей запустил поверслим. Вроде что-то протестировал. А как это соединить с приложением не допираю ))Okariennoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-86255339326564504312014-09-11T12:56:03.370+04:002014-09-11T12:56:03.370+04:00Просим-просим! :)Просим-просим! :)BarbaricQAhttp://barbaricqa.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-11005259794654909272014-09-11T12:56:02.329+04:002014-09-11T12:56:02.329+04:00ответил на почту :)ответил на почту :)Максим Шульга (Maxim Shulga)http://maxshulga-ru.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-51990848475168558252014-09-11T12:56:01.344+04:002014-09-11T12:56:01.344+04:00Максим, а ты не думал на AutoConfeTQA (http://conf...Максим, а ты не думал на AutoConfeTQA (http://confetqa.ru/program-auto/) выступить с этой темой? Показать живьем, так-сказать, как за 20 минут все сделать красиво и пройти первый тест?:)BarbaricQAhttp://barbaricqa.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-9790264132680733242013-03-02T16:36:30.317+04:002013-03-02T16:36:30.317+04:00фухх, выглядит угрожающе. У меня такого заморока и...фухх, выглядит угрожающе. У меня такого заморока и его необходимости пока не было :)Максим Шульгаhttp://maxshulga-ru.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-43110880269459322102013-03-01T19:05:29.916+04:002013-03-01T19:05:29.916+04:00Я ж так и спросил - как юзать разные значения defi...Я ж так и спросил - как юзать разные значения define. <br /><br />1) Редактировать переменные (а их может набежать несколько) неохота.<br /><br />2) Редактировать инклюд на страничку с другими define - да тоже неохота.<br /><br />3) Редактировать страничку как файл - неохота, потому что не знаю, как зарефрешить фитнес.<br /><br />4) Можно подключить другой фитнес и делать Edit locally - но это как п. 1, неохота :)<br /><br />5) Можно, конечно, сделать подгрзуку их откуда-то и это "откуда-то" подкладывать руками или скриптами.<br /><br />6) Есть parametrized include, но это запуск нескольких тестов или сьют с разными параметрами, а не смена параметров. Решение обратной задачи.<br /><br />7) если лаб несколько (не произвольное количество), можно создать несколько страниц с define, раздать им разные тэги, раздать эти тэги всем страницам сьюты(сьют), и тогда запускать по тэгам через линк или через SuiteQuery.<br /><br /><br /><br />8) можно иметь несколько страниц с define, брать через rest контент страницы, класть через rest контент страницы на страницу для define, которая импортится и сохранять страницу которая импортится.<br /><br /><br />Получается, что опции 5, 7,8 более-менее интересные.Alexander Petrovskiynoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-58179365215623415972013-03-01T17:13:00.812+04:002013-03-01T17:13:00.812+04:00Таблицы тестов пишутся в страницеX (например стати...Таблицы тестов пишутся в страницеX (например статической). Потом эта страница включается в testpage1 и testpage2 с разными define. Это ведь работает.Максим Шульгаhttp://maxshulga-ru.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-9914742544030460552013-03-01T16:52:54.951+04:002013-03-01T16:52:54.951+04:00Два случая: первый - это один человек написал тест...Два случая: первый - это один человек написал тест, другой человек получил тест в архиве, из сорс-контрола и т.д. Тут отдельная страничка помогает, перезапуск фитнеса не нужен, код один - переменные разные.<br />Второй случай - прогнал тесты на одной лабе, хочется без редактирования страниц прогнать на другой (например, одним линком - тесты в одной лабе, другим - в другой, а линк же запускается без человека).<br /><br />К примеру, абсолютно одинаковые тесты и/или сьюты надо прогнать по какому-нибудь правилу на наборе лаб.<br />По сути - код один, переменные разные, но надо чтобы значения переменных менялись по правилу.Alexander Petrovskiynoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-78070018327049843082013-03-01T15:57:18.339+04:002013-03-01T15:57:18.339+04:00а зачем так сложно, с подменой? просто другую стра...а зачем так сложно, с подменой? просто другую страницу подключить с переменными. опять же, для чего это может понадобиться?Максим Шульгаhttp://maxshulga-ru.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-43143356237281712012013-03-01T15:32:59.473+04:002013-03-01T15:32:59.473+04:00А какие предлагаются варианты переключения между л...А какие предлагаются варианты переключения между лабами? Можно, конечно, вынести страничку с переменными выше сьюты, импортировать её, и когда надо поменять лабу, просто положить на место странички с переменными другую страничку (и перезапустить фитнес). Но это не кажется идеальным.<br />Как-нибудь проще это делается?Alexander Petrovskiynoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-42963835088182939442013-02-21T09:23:55.225+04:002013-02-21T09:23:55.225+04:00ну, ты сам напросился ;) ждем от тебя пост на эту ...ну, ты сам напросился ;) ждем от тебя пост на эту тему.Максим Шульгаhttp://maxshulga-ru.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-29051422236521512962013-02-21T09:22:20.022+04:002013-02-21T09:22:20.022+04:00не кипятись :) все будетне кипятись :) все будетМаксим Шульгаhttp://maxshulga-ru.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-71539781881532774962013-02-21T05:53:31.410+04:002013-02-21T05:53:31.410+04:00ГДЕ МОЙ КОМЕНТЫ!!!ГДЕ МОЙ КОМЕНТЫ!!!Konstantin Vlasenkohttp://twitter.com/velaskecnoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-73556651530329028452013-02-21T05:52:25.908+04:002013-02-21T05:52:25.908+04:00Классно написано! Только реально много. Предлагаю ...Классно написано! Только реально много. Предлагаю следующий коротенький пост про встроенные переменные (например PAGE_NAME) http://fitnesse.org/FitNesse.UserGuide.QuickReferenceGuide#GlobalVARIABLES.<br />И про check, check not и regexp нотацию =~/pattern/Konstantin Vlasenkohttp://twitter.com/velaskecnoreply@blogger.comtag:blogger.com,1999:blog-6346131298481535631.post-14018504181592538892013-02-20T22:41:42.090+04:002013-02-20T22:41:42.090+04:00вас то не дождешься ;)вас то не дождешься ;)Максим Шульгаhttp://maxshulga-ru.blogspot.com/noreply@blogger.com