|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
Есть необходимость реализовать ряд тестов, которые бы проверяли условия для всех классов в проекте. К примеру для всех кнопок в проекте проверить правильность установки шрифта или для всех датасетов в проекте проверить корректность SQL запросов. Пробовал использовать для этого функциональное тестирование с помощью TestComplete однако он может оперировать только с объектами, которые уже созданы, т.е с помощью него нельзя протестировать к примеру форму которая еще не открыта (и не создана). Полагаю что тут нужно идти другим путем :) Посоветуйте, как (и чем) сделать тестирование с таком случае? З. Ы. Проект на Delphi ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2009, 16:02 |
|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
Чет вообще не понял... как можно протестировать еще не созданную форму? Если форма есть, так научитесь ее программно открывать, да и тыкайте нужные кнопки.. Что касается проверки правильности SQL-запросов, то что вы собственно вкладываете в понятие "правильность" запроса?? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2009, 12:08 |
|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
авторЧет вообще не понял... как можно протестировать еще не созданную форму? Смысл в том чтобы выявить возможные ошибки в клиентской программе при изменении схемы БД. К примеру переименовали какое нибудь поле в схеме, необходимо проверить, не забыли ли это поле переименовать везде в датасетах на клиенте. авторЕсли форма есть, так научитесь ее программно открывать, да и тыкайте нужные кнопки.. Если форма уже создана, то проблем не каких, пару строчек скрипта в тест комплите. Проблема в том, чтобы доступиться (создать) объект которого еще нет. автор Что касается проверки правильности SQL-запросов, то что вы собственно вкладываете в понятие "правильность" запроса?? В данной случае правильность = открытие датасета без ошибок, фактически синтаксическая правильность СКЛ запроса + наличие переменных привязки ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2009, 12:35 |
|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
Быдло___кодеравторЧет вообще не понял... как можно протестировать еще не созданную форму? Смысл в том чтобы выявить возможные ошибки в клиентской программе при изменении схемы БД. К примеру переименовали какое нибудь поле в схеме, необходимо проверить, не забыли ли это поле переименовать везде в датасетах на клиенте. Ну так создайте тест, который будет открывать все клиентские формы и делать запросы к БД и запускайте его в случае изменения схемы БД - где формы валяться - там ошибку и ищите.. А если форма новая создается так все датасеты должны сразу правильными запросами заполняться.. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2009, 13:31 |
|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
Если форма уже создана, то проблем не каких, пару строчек скрипта в тест комплите. Проблема в том, чтобы доступиться (создать) объект которого еще нет. Для форм, которые ещё не созданы, описание структуры формы и свойств всех компонентов лежит в ресурсах, которые прилинкованы к вашей программе. Но пытаться их оттдуа извлечь и проанализировать, это та ещё задачка. Скорее всего, действительно, будет где-то втихаря эти формы создать, просмотреть, а потом также втихаря уничтожить, если не нужны, или держать "про запас" пока не понядобяться. Но только при большом количестве сложных форм работать это всё будет достаточно медленно, да и ресурсов такая программа скушает тоже прилично (придётся все формы держать в опреативке сформированные). Смысл в том чтобы выявить возможные ошибки в клиентской программе при изменении схемы БД. К примеру переименовали какое нибудь поле в схеме, необходимо проверить, не забыли ли это поле переименовать везде в датасетах на клиенте. То есть, вы хотите сказать, что проект настолько большой и "крутой", что стоит это делать именно так? Прогнать обычный тест оператором уже не получается? DexterI Быдло___кодерВ данной случае правильность = открытие датасета без ошибок, фактически синтаксическая правильность СКЛ запроса + наличие переменных привязки Ну так создайте тест, который будет открывать все клиентские формы и делать запросы к БД и запускайте его в случае изменения схемы БД - где формы валяться - там ошибку и ищите.. Только при этом не стоит забывать, что вся эта процедура "проверки" может занимать весьма приличное время. Поэтому я бы не стал её делать при каждой загрузке программы, а сделал бы какую-нибудь специальную команду, по котороая данный тест бы запускался. Всё равное кроме собственно разработчиков это больше никому не интересно. Так вот пусть они его и запускают, а пользователям это совершенно ни к чему. Что касается способов проверки правильности запросов, альтернативных попытке их все создать и открыть, то их не так уж много, можно сказать, что он один. Прочитать тем или иным образом текст SQ запросов, потом распарсить (то бишь сделать синтаксический разбор и разделить на составляющие их элементы и смысловые конструкции), а потом уже пытаться анализировать структуру получившуюся запроса. Правда, если вы самостоятельно решите эту задачу, то следующим вашим проектом должен быть собственный SQL сервер, не меньше. :) Да, что касается поиска всех датасетов в программе. Если бы вы придерживались правильной технологии разработки подобных программ, то все датасеты у вас были бы собраны в одном или нескольких (обычно от 2 до 5) датамодулях. Тогда не нужно было бы и все формы создавать, и искать свои датасеты по всему проекту. Просто бы просмотрели все датасеты во всех датамодулях через список компонетов датамодулей и сравнением их через is TDataSet. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2009, 13:24 |
|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
авторНу так создайте тест, который будет открывать все клиентские формы Проект большой, разрабатывается уже 6 лет. Написать функциональный тест который вызовет все формы не так то просто (я вообще думаю что это нереально) + его придется переписывать каждый раз когда добавляется еще одна форма. Думал поначалу схитрить :) В настройках проекта можно все формы сделать автосоздаваемые. Но к сожалению от этой идеи пришлось отказаться по ряду технических причин. Мыльников Дмитрий Для форм, которые ещё не созданы, описание структуры формы и свойств всех компонентов лежит в ресурсах, которые прилинкованы к вашей программе. Но пытаться их оттдуа извлечь и проанализировать, это та ещё задачка. Собственно у меня есть еще код приложения :) а делфи имеет некоторые механизмы для парса *.dfm файлов, которые описывают датасеты. Парсер "почти" удалось написать, проблема только с описанием объектов-наследников, которое размазано по нескольким модулям. Писал по этому поводу на делфи-форум http://sql.ru/forum/actualthread.aspx?tid=696262 Смысл в том чтобы выявить возможные ошибки в клиентской программе при изменении схемы БД. К примеру переименовали какое нибудь поле в схеме, необходимо проверить, не забыли ли это поле переименовать везде в датасетах на клиенте. То есть, вы хотите сказать, что проект настолько большой и "крутой", что стоит это делать именно так? Прогнать обычный тест оператором уже не получается? Не совсем понял, что имеется в виду под обычным тестом? DexterI Только при этом не стоит забывать, что вся эта процедура "проверки" может занимать весьма приличное время. Поэтому я бы не стал её делать при каждой загрузке программы, а сделал бы какую-нибудь специальную команду, по котороая данный тест бы запускался. Всё равное кроме собственно разработчиков это больше никому не интересно. Так вот пусть они его и запускают, а пользователям это совершенно ни к чему. Естественно. Это разовая операция, которая будет выполняться перед сборкой версии (вместе с остальными тестами) Ее можно поставить на ночь на мощной машине, т. е ресурсы и время не очень критичны Что касается способов проверки правильности запросов, альтернативных попытке их все создать и открыть, то их не так уж много, можно сказать, что он один. Прочитать тем или иным образом текст SQ запросов, потом распарсить (то бишь сделать синтаксический разбор и разделить на составляющие их элементы и смысловые конструкции), а потом уже пытаться анализировать структуру получившуюся запроса. Правда, если вы самостоятельно решите эту задачу, то следующим вашим проектом должен быть собственный SQL сервер, не меньше. :) Да нет, зная текст запроса его можно лекго проверить средствами СУБД. В частности в оракле (который мы используем) есть пакет dbms_sql который и реализует описанный вами парсер, и позволяет сделать синт. анализ запроса, не выполняя его. Скорей всего так и буду делать. Проблема в том, что есть еще переменные привязки, хотелось бы протестировать их правильное наличие в датасетах ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2009, 19:56 |
|
Какой вид тестирования применить?
|
|||
---|---|---|---|
#18+
авторНаписать функциональный тест который вызовет все формы не так то просто (я вообще думаю что это нереально) + его придется переписывать каждый раз когда добавляется еще одна форма. Для каждой формы пишется тест + пишется еще один, который проверяет покрытие форм тестами. Собственно у меня есть еще код приложения :) а делфи имеет некоторые механизмы для парса *.dfm файлов, которые описывают датасеты. Т.е. разбиения на слои данные/бизнес-логика/UI нет? Печально... Смысл в том чтобы выявить возможные ошибки в клиентской программе при изменении схемы БД. К примеру переименовали какое нибудь поле в схеме, необходимо проверить, не забыли ли это поле переименовать везде в датасетах на клиенте. Если бы слой доступа к данным был выделен, то там надо было бы просто дернуть каждую кверю (ExecSQL)... Это разовая операция, которая будет выполняться перед сборкой версии (вместе с остальными тестами) Ее можно поставить на ночь на мощной машине, т. е ресурсы и время не очень критичны Это не разовая операция, а регулярная (при каждом изменении), а уж в момент сборки - просто обязательная. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2009, 10:31 |
|
|
start [/forum/topic.php?fid=36&fpage=10&tid=1554877]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 136ms |
0 / 0 |