Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.041 c
1-1117346604
Aldor
2005-05-29 10:03
2005.06.14
Чтение свойства - всем, запись - только потомкам


1-1117054440
lifo
2005-05-26 00:54
2005.06.14
Команды в консольных приложениях


3-1115280907
juice
2005-05-05 12:15
2005.06.14
Declared cursor already exists


14-1116766934
Piter
2005-05-22 17:02
2005.06.14
Вот все говорят LMD, LMD...


4-1114422458
ANB
2005-04-25 13:47
2005.06.14
Есть ли функция, позволяющая скопировать папку ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский