Форум: "Потрепаться";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизА не маюсь ли я дурью ? (Автоматизированное тестирование) Найти похожие ветки
← →
ANB © (2005-05-23 10:55) [0]Сижу, пишу систему автоматизированного тестирования. Сторонние средства начальство зарубило (Rational Robot - плохо работает, на WinRunner - денег нет (а мне платить 1200 в месяц не жалко :) )). Мне только на руку - не надо учить test basic, и попрактиковаться в WinAPI возможность, заодно программировать не разучусь. Но есть у меня потаенная мысля - не изобретаем ли мы велосипед, может таки воспользоваться готовым ?
← →
Sergey Masloff (2005-05-23 10:56) [1]хм... а чем RationalRobot плохо работает?
← →
ANB © (2005-05-23 10:59) [2]1. Не ест программы, написанные в Magic
2. Нет толковых и простых средств работы с БД изнутри
3. Тромозит при записи
4. Слетает при попытке работать параллельно с тестом.
← →
ANB © (2005-05-23 11:00) [3]Ну, короче, моя начальница в этом дока, она сказала, что Rational Robot винраннеру в подметки не годится.
← →
msguns © (2005-05-23 11:00) [4]Если имеется в виду это:
http://delphimaster.net/view/3-1116328809/
то, имхо, маешься ;)
← →
ANB © (2005-05-23 11:16) [5]
> msguns © (23.05.05 11:00) [4]
- ну так это в любом случае делать нужно. У тебя есть другие идеи, по поводу проверки больших массивов данных ?
← →
msguns © (2005-05-23 11:26) [6]>ANB © (23.05.05 11:16) [5]
>- ну так это в любом случае делать нужно. У тебя есть другие идеи, по поводу проверки больших массивов данных ?
Там очень туманно описана задача,- какие ж могут быть советы, когда послылают "туда, не знаю - куда" ;))
← →
ANB © (2005-05-23 11:45) [7]Ну дык, могу прозрачнее. Есть БД с произвольной структурой. Программист получает ТЗ и пишет скрипт, который с этой базой что то делает. Я параллельно получаю тоже ТЗ и должен написать автопроверялку, которая проверит, что программист затронул только те поля и таблички, которые надо, не трогал тех, которые не надо, и что действия произведены корректно. Причем баз может быть несколько. DB линки каждый раз настраивать признано некошерным, так как проверялка не должна сама вносить в базу изменений, т.е. можно только select.
← →
Sergey13 © (2005-05-23 11:55) [8]2[7] ANB © (23.05.05 11:45)
>Есть БД с произвольной структурой. Программист получает ТЗ и пишет скрипт, который с этой базой что то делает. Я параллельно получаю тоже ТЗ и должен написать автопроверялку, которая проверит, что программист затронул только те поля и таблички, которые надо, не трогал тех, которые не надо, и что действия произведены корректно.
Ну дык сам вместо того программиста и пиши скрипт изменения. А то после тебя еще надо проверять - все ли ты проверил. 8-)
← →
Sergey13 © (2005-05-23 12:03) [9]В догонку. А зачем программисту поручать скрипт? Существуют проги которые генерят скрипт изменения по двум БД. Например Жаба для Оракла или ИБЭксперт для ИБ.
← →
Сергей Суровцев © (2005-05-23 12:05) [10]>ANB © (23.05.05 11:45) [7]
Кошерным в данном случае было бы поручить это двум независимым программистам на разных копиях базы. Если по итогу их последущего сравнения они совпадают, все верно, иначе ищите ошибки. А до того основную базу не тронь. Отсутствие 100$ на дополнительный винт не аргумент, если база того не стоит, выбросьте ее и займитесь делом. :))
← →
ANB © (2005-05-23 12:20) [11]
> Сергей Суровцев © (23.05.05 12:05) [10]
- ну так идея похожа. Только баз у нас несколько сотен. И перед тем, как с ней работать наживую, нужно проверить, что все село верно. Каждый раз сажать отдельно тестировщика невыгодно. Лучше мы раз вдвоем с прогом помучимся, но потом, с вероятностью процентов 90 мы вовремя найдем ошибку. Короче, это делать в любом случае надо. Тема сабжа - нужен ли свой инструмент тестирования ?
← →
Sergey13 © (2005-05-23 12:22) [12]2[11] ANB © (23.05.05 12:20)
> Только баз у нас несколько сотен.
Именно баз? И все оригинальные?
ИМХО, вам ничто не поможет. 8-)
← →
ANB © (2005-05-23 12:25) [13]
> Именно баз? И все оригинальные?
- это базы клиентов. А техподдержка им занимается.
← →
Sergey13 © (2005-05-23 12:29) [14]Но структуры то у них одинаковые надеюсь? Почему скрипт, прокативший на одной БД, не прокатит на другой?
>но потом, с вероятностью процентов 90 мы вовремя найдем ошибку.
С таким же (даже выше, ИМХО) процентом вероятности я скажу что проги из [9] сделают не хуже.
← →
ANB © (2005-05-23 12:34) [15]
> Но структуры то у них одинаковые надеюсь?
- они могут чуточку отличаться, а так же могут появится доп.данные, которые не учли при написании скрипта. Например - была пустая табличка, ее программист, перепутав имя (что не мудрено, если они называются f0010 и т.п.) почистил. При тестовых прогонах ты это не выцепишь. Пришла база, где в этой таблице есть данные . . .
← →
Sergey13 © (2005-05-23 12:43) [16]2[15] ANB © (23.05.05 12:34)
Как то я слабо себе представляю чем занимается ваша контора. Есть эталонная БД с эталонной структурой. Надо привести БД клиента к этой структуре. Зачем что-то чистить? Скорее ИМХО, могут потребоваться заливки данных, если например добавляем нот нулл поле. А стирать то зачем?
← →
ANB © (2005-05-23 12:53) [17]Когда могут гонятся скрипты :
- упгрейд базы на новую версию (тут и таблицы целиком дропаются, так как структура сильно меняется)
- выполнение некоторых редких служебных функций. Тут тоже могут наворотить, что угодно, но структура менятся не будет. А вот данные - менятся и удаляться.
Проверяют сейчас все ручками. Причем сильно неоднократно, так что автоматизация бы помогла. Идея - включили мою прогу, нажали кнопку Run и пошли домой. Утром пришли - посмотрели, что получилось. Некоторые вещи так уже работают.
← →
Alex Konshin © (2005-05-23 13:01) [18]Что из себя представляет скрипт?
Я как-то слабо представляю, как можно проверить в общем случае, что совершенно неизвестный скрипт не затрагивает полей, которые не должен затрагивать? Проверить корректность изменения нужных полей - еще понятно.
Можно, конечно, экспортировать базу и сравнивать с образцом, только представляешь ли ты себе стоимость такой операции?
Для уменьшения времени прохождения тестов могу предложить использовать подход, который применяется у нас (а у нас, поверь, много тестов, правда у нас тестируются продукты).
Идея такая:
Тест проверяет один или несколько cases.
Тесты объединены в группы по некому признаку (например, тестирование некой функциональности), но при этом обязаны либо быть независимы друг от друга внутри группы либо наоборот, использовать результаты предыдущего теста. То есть, тесты в группе должны писаться с учетом того, что они будут исполняться в группе. Важно то, что на момент начала исполнения любой группы тестов ситуация должна быть одинаковая: некое начальное состояние базы, продукта и их настроек.
Как это достигается?
У нас для этого написан некий сервер, который выдает "свежие" базы и экземпляры приложения по требованию. Для Oracle баз он, грубо говоря, создает базы из холодного бекапа. Эти бекапы предварительно созданы из базы-образца: созданы пользователи, загружены тестовые данные и т.п.
Это сделано для ускорения прогонки тестов. Свежая база обеспечивается только для группы тестов, тесты внутри группы уже сами разбираются, что можно портить, а что - нельзя.
В твоей ситуации, если уж так нужна полная проверка, то нужно проверять результаты работы не каждого теста, а группы тестов, и уж если результат не совпадает с образцом, разбираться с отдельными тестами.
Вообще-то ты читал мою статью про нашу организацию тестирования? Если нет, то прочти, может быть интересно:
http://home.earthlink.net/~akonshin/Workflow_in_PTC.html
← →
Sergey13 © (2005-05-23 13:10) [19]>тут и таблицы целиком дропаются
>А вот данные - менятся и удаляться.
ИМХО, это все равно потенциальный кирпич на голову. Мало ли что там узер наворотит помимо вашей структуры. Кто ему запретит сделать например свою дополнительную аналитику. А вы ему - трямс - и по рогам.
Опять же не факт, что ты учтешь все, например редкие служебные функции с наворотами. Иногда к тому же и порядок прогона здорово меняет картину.
Лично я не верю в возможность автоматизации подобной проверки более-менее сложной БД. Но это сугубо мое ИМХО.
← →
Alex Konshin © (2005-05-23 13:19) [20]Sergey13 © (23.05.05 13:10) [19]
Лично я не верю в возможность автоматизации подобной проверки более-менее сложной БД. Но это сугубо мое ИМХО.
Согласен.
И, собственно, сразу же вопрос на засыпку: что тестируем? Продукт или действия пользователя? Если второе, то на мой взгляд, это говорит про неверную архитектуру продукта. То есть, конечно, так будет работать, но тестировать это и гарантировать правильность работы продукта - нельзя.
У нас тесты пишутся:
- на проверку функциональности;
- на обнаруженные проблемы (чтобы они возникли снова в будущем).
Здесь же - ни то, ни другое... Я не говорю, что так нельзя, но как это расхлебывать - мне навскидку неясно.
← →
Alex Konshin © (2005-05-23 13:20) [21]Отчепятка:
- на обнаруженные проблемы (чтобы они не возникли снова в будущем).
← →
msguns © (2005-05-23 13:34) [22]Не проще ли при таком инстале (сотни клиентов) перерулить БД на объектную ? Чтобы прогеры клиентов юзали БД через ваши библиотеки и интерфейсы, а напрямую ну никак ?
← →
ANB © (2005-05-23 13:54) [23]1. У клиентов нет прогов. А если есть - трогать нашу базу им запрещено (Система обслуживания смарт-карт). Следовательно, все доп функции они получают только от нас. А если наворотит - то ему действительно - тряс прямо по рогам. Денежкой. И не малой.
2.
> msguns © (23.05.05 13:34) [22]
- на объектную так просто не перерулишь, и так еле приспособили это дурацкий Magic под Oracle. Но схема защиты - стандартная - вьюхи и пакеты для изменения живых таблиц. Доступа к таблицам обычные пользователи не имеют.
3. Скрипты - группа команд SQL и PL/SQL для выполнения каких то действий с БД. Просто часть функциональности используется очень редко и мы выполняем это скриптами через SQLPlus. Сами или клиенты под нашим чутким руководством.
4. Насчет сотен я загнул. У нас всего около 5000 инсталляций.
5. Очень интересно мнение Alex Konshin. Тем более, у него, как я понял, есть в этом опыт.
Не мог бы ты выложить на этом сайте свою статью, а то у нас инет подрезан. Плз, нижайшее.
6. Примерно так, как написал алекс, я свою систему и построил. Только обозвал по другому : у меня есть тесты, в них шаги. Шаг - просто исходник на собственном языке. Из шага можно вызывать другие шаги. Дерево тестов пока не делал - будет слишком много - придется делать.
← →
ANB © (2005-05-23 13:58) [24]ЗЫ. Скрипт не совершенно неизвестный. Я и прог, который его пишет получаем одно и тоже задание. Я также узнаю у прога, что он собирается менять. И на основе этой информации делаю запросы. Причем проверить то, что таблица не менялась, я могу с достаточной степенью надежности, просто посчитав сумму полей, используя хэш-функцию. Получается одно число, на самой большой таблице будет считаться минут 15, что для нас приемлемо.
← →
hCat (2005-05-23 14:06) [25]Re Sergey13 Мало ли что там узер наворотит помимо вашей структуры
Мнение мое узкоспециализировано для Оракл, но ИМХО разумно.
Считается плохим тоном создавать пользовательские объекты в каталоге, поставляемом разработчиком. Например, в Оракл, есть каталог (пользователь) SYS, в его области создавать объекты прикладных систем не принято. Так же и дальше - поставляя свою систему я предполагаю, что пользователь (админ) на площадке заказчика будет создавать свои объекты в своем собственном каталоге, благо возможностей в Оракл куча. Иначе сопровождение такой БД м.б. весьма проблематично.
Re Alex Konshin создает базы из холодного бекапа
О каких объемах идет речь, порядок ?
ИМХО стоит разделить тестирование серверной части приложения на неск принципиально разных частей:
- структура БД - см замечание выше д.б. идентична, проверять чем угодно - сравнилок много;
- заполнение и модификация условно постоянных таблиц разработчиком (справочник ставок НДС (VAT) по периодам, как пример) - проверить тоже относительно просто;
- заполнение и модификация таблиц пользовательского ввода разработчиком - ценность результата зависит от изощренности самой БД и разработчика теста (при наличии триггеров вопрос перестает быть столь простым как кажется);
- алгоритмы исполняемые на сервере (Oracle stored proc и пр) - кроме ошибок реализации, суммируются еще и ошибки заполнения данных в таблицах сервера, курсоры пропускающие данные, ошибки инициализации, параметров при вызове, несоответсвия типов параметров и многое другое.
← →
Alex Konshin © (2005-05-23 14:08) [26]Из некоторых соображений я не хочу выкладывать статью на всеобщее обозрение ту статью, потому что она помимо общих соображений описывает организацию работы в фирме, что вообще говоря, внутренняя информация.
Напиши на мейл - вышлю. Только имей в виду, я только сказал, что она будет тебе интересна, я не сказал, что она поможет тебе решить эту конкретную проблему.
Опыт у меня есть, собственно в последнее несколько проектов с этим связано, но у нас специфические продукты и я не уверен, что наши решения напрямую можно перенести к вам, но идеи все равно могут быть полезны.
← →
ANB © (2005-05-23 14:13) [27]
> hCat (23.05.05 14:06) [25]
- последний абзац возьму на вооружение. Эту тему я еще не продумывал. У меня пока более менее работает :
- Проверка пользовательского интерфейса путем иммитации действий пользователя
- Сравнение схемы БД с эталлоном (включая выборочную проверку справочников)
- Сохранение результатов выполнения запросов и сравнение их с другими, подогнанными для необходимой идентичности.
- Сравнение двух запросов (возможно с разными коннектами).
Никто не отвечает на мой вопрос - не зря ли я все это пишу ? Может уже есть готовые средства с нужной функциональсностью (для проверок и изнутри и снаружи) ? Читал рекламу по WinRunner - ну, типа, умеет тестировать все.
← →
ANB © (2005-05-23 14:15) [28]
> Alex Konshin © (23.05.05 14:08) [26]
- щас вышлю свое мыло. Если не трудно, убери инфу ДСП из статьи. Меня она интересует чисто теоретически, так как решение всех посталенных передо мною задач я уже нашел. Идет процесс кодирования.
← →
alex_*** (2005-05-23 14:21) [29]начальница не Нина Ивашкина?
← →
Alex Konshin © (2005-05-23 14:24) [30]hCat (23.05.05 14:06) [25]
Re Alex Konshin создает базы из холодного бекапа
О каких объемах идет речь, порядок ?
Ну в тех продуктах, с которыми я работаю у нас в бекапе сразу создается кучка пользователей (конкретно - 10) с идентичными данными, и для каждой группы тестов берется не свежая база, а свежий пользователь в базе пока они не кончатся (то есть, я несколько слукавил, когда говорил об новой базе для каждой группы). Размер базы - несколько гиг (вроде около 3).
Холодный бекап на самом деле сжатые файлы базы. То есть, это не совсем бекап в привычном понимании.
Помимо этого сами продукты монстроидальные. И, к тому же, моя специализация на организации тестирования взаимодействия продуктов, а каждый из них занимает более гигабайта в установленном состоянии. Там даже автоматизация установки - отдельная и довольно сложная задача.
← →
Alex Konshin © (2005-05-23 14:29) [31]ANB © (23.05.05 14:15) [28]
> Alex Konshin © (23.05.05 14:08) [26]
- щас вышлю свое мыло. Если не трудно, убери инфу ДСП из статьи. Меня она интересует чисто теоретически, так как решение всех посталенных передо мною задач я уже нашел. Идет процесс кодирования.
Там нет информации ДСП, но все равно большие фирмы как-то шепетильно относятся к тому, что кто-то описывает их работу изнутри. Я уже давал несколько раз эту ссылку здесь в форуме, я и писал-то ее для форума.
← →
ANB © (2005-05-23 14:52) [32]Прочитал статью. Полезно. Это я уже читал в книжке, только в ней это было листов на 30 расписано. А какими средствами пользуетесь ? И пишите ли свои ?
← →
ANB © (2005-05-23 15:32) [33]
> alex_*** (23.05.05 14:21) [29]
- и тут на коллегу нарвался. А у тебя Виталик Королевский !
← →
Sergey13 © (2005-05-23 16:30) [34]2[25] hCat (23.05.05 14:06)
>Считается плохим тоном создавать пользовательские объекты в каталоге, поставляемом разработчиком.
Так считается, но законом это не запрещено. Заказчики разные бывают и админы у них разные. Кроме того, они могут просто написать свою прикладу на основе используемой БД ничего в БД не меняя. А тут облом такой.
Но это все уже офтопик вроде.
← →
Cobalt © (2005-05-23 18:11) [35]2 ANB © (23.05.05 12:53) [11]
ИМХО - Глупость.
У нас такие скрипты обязательно проходят проверку - но не у тестера, а сначала у проверяющего - такого же программиста. На соответствие заданию, вправо-влево от задания - расстрел исполнителя на месте :)
И только потом тестируется простыми тестировщиками (не программистами).
Не делается двойная работа - почему бы тогда не сравниват ьсразу скрипты? ясно почему - отличий тамможет быть много ;)
← →
alex_*** (2005-05-23 18:13) [36]->[29]
был. Ушел я от вас года 1.5 назад. Ивашкина все рулит, я смотрю. и также с магиком боретесь :). Боритесь, боритесь, он живучий....
← →
имя (2005-05-23 18:21) [37]Удалено модератором
← →
ANB © (2005-05-24 09:17) [38]
> Cobalt © (23.05.05 18:11) [35]
- гы, не глупость это, а же узаконненный тех.процесс. Проверка двойная, сначала белым тестировщиком в группе разработки, а уже потом - отделом тестирования. Вот на второй этап и нужен автомат, так как ручками уходит МЕСЯЦ !!! Автомат будет работать максимум сутки (для очень большой базы), а тренируясь на маленькой я тест сделаю за неделю.
← →
ANB © (2005-05-24 09:22) [39]
> alex_*** (23.05.05 18:13) [36]
- кстати, Нина уже не Ивашкина, отстал ты от жизни.
← →
Sergey13 © (2005-05-24 09:39) [40]2[38] ANB © (24.05.05 09:17)
А еще можно с калькулятором проверить как компьютер считает. Просто пересчитать вручную апдейт с милионом записей. 8-)
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.039 c