Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Создание юнит-тестов для прямых запросов SQL и DBF (число прочтений - 13517 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Создание юнит-тестов для прямых запросов SQL и DBF
06. Июня 2006 :: 06:33
Печать  
Обращение к опытным спецам, юзающим прямые запросы от 1С++
нужно добавить юнит-тесты для использования прямых запросов как для скуля, так и дбф

Схема следующая: у нас есть конфигурация юнит-тестирования 1С++, в которой сейчас 455 тестов - тестируются ООП, ИндексированнаяТаблица, ВыполняемыйМодуль, Делегат, МенеджерСобытий, БинариДата и др.
Нет тестов для большей части функционал ФормЕкса и прямых запросов Печаль

Для облегчения разработки и сопровождения, а также исключения багов в уже сделанном функционале по прямым запросам ИМХО также нужно добавить юнит-тестирование.
В принципе все очень просто - все тесты очень простые, в тестовой конфе полно примеров.
Мы, разработчики, обязуемся использовать данную конфигурацию перед тем, как заливать свои изменения в основной репозитарий.

Жду добровольцев Улыбка
« Последняя редакция: 06. Июня 2006 :: 08:08 - artbear »  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #1 - 06. Июня 2006 :: 06:36
Печать  
Например, простейший тест ООП
Код
Выбрать все
Процедура ТестСозданиеКласса() Экспорт
  Перем Объект;

  Сам = Сам();

  Объект = СоздатьОбъект("ООППредок");
  ТипОбъекта = ТипЗначенияСтр(Объект);
  Сам.ПроверитьРавенство(ТипОбъекта, "ООППредок");
КонецПроцедуры //ТестСозданиеКласса 



или тест BinaryData
Код
Выбрать все
Процедура ТестРазмер() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");

	НоваяПозиция = БД.Перейти(0, 0);

	Сам().ПроверитьРавенство(Бд.Размер(), 8);

	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция не должна измениться
КонецПроцедуры 

  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #2 - 06. Июня 2006 :: 07:06
Печать  
вопрос от не спеца, имеется ввиду дать общий тест например по объекту "рекордсет"?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #3 - 06. Июня 2006 :: 07:23
Печать  
Лучше несколько тестов,
которые на заранее приготовленных данных и конфе дают один и тот же, верный результат.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #4 - 06. Июня 2006 :: 07:46
Печать  
прикольно, хотя я наверно Вас понимаю, я тоже вот разработаю отчет, поганяю его вроде как во всех режимах, но какое то сочетание фильтров и параметров могу не учесть, бывает мои тестеры-пользователи и приходят с какими то глюками...
ну типа что бы тес нарисовать было бы неплохо МД выложить наверное в ветке, для тестовых запросов думаю его достаточно, хотя можно нарисовать при желании и наличии времени некую универсальную тесто-генерилку, аналог Тот-вского базопузомера, типа оно само "прошлось" по метаданным и сгенерило текст запроса, у меня кстати нечто подобное есть из отчетов, так назваемый некий конструктор для пользователей, дабы они от меня отстали с доработками, набор фильтром генериться из метаданных и пользователь на форме сам себе выберает сочетание всех параметров и фильтров, думаю можно сделать так чтобы отчет сам формировался, например по тем же ВТ, подставляя обязательные параметры, заполняя все и пропуская в разном сочетании необязательные параметры...
но такая генерилка, согласитесь, реальна, но объемна по времени реализации
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #5 - 06. Июня 2006 :: 07:56
Печать  
Нет, ты не понял.
Идея тестов такова - есть заранее заданный набор данных и метаданных, тест использует именно этот набор, выполняет какие-то действия, и получает результат.
Так вот, если при одинаковых исходных данных и смене только сборки 1С++ тест выдает различные значения, значит, это баг 1С++.
Все очень просто.
Т.е. у нас, разработчиков, есть тесты, которые мы прогоняем при изменении 1С++.
Если после наших изменений появляются новые баги, значит, что-то мы сделали неверно, и нужно исправлять.

Все просто и удобно, и не пользователи находят эти ошибки, и ругают разработчиков, а еще на стадии разработки можно обнаружить подобные ошибки, что реально сокращает время разработки и упрощает сопровождение !!
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #6 - 06. Июня 2006 :: 08:07
Печать  
для тестов по прямым запросам нужны "данные", т.е. набор справочников, документов, регистров и т.д.
Надо определиться с этим набором, а потом можно пробежаться по методам ODBCRecordSet и иже с ним, можно (и даже нужно) сравнить результаты "прямых" запросов со стандартными запросами 1С.

Скользкий момент: класс ODBCRecordSet и его методы очень сложный и вылеты, недоразумения и т.д. с ним возникают при наличии множества сопутствующих условий, как-то наличие открытых курсоров, блокировок, последовательность выполнения запросов: параметризированных, непараметризированных и т.д.

Короче надо действительно писать очень жизненную замудреную конфу, чтобы полноценно нарваться на баг... Озадачен

Хочу попробовать, но с чего начать все таки? Много читал про FuncTest и давно хотел попробовать в деле, но пока не созрел из-за нехватки времени и отсутствия промышленных масштабов программирования...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #7 - 06. Июня 2006 :: 08:08
Печать  
Уточнил число юнит-тестов - 455 Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #8 - 06. Июня 2006 :: 08:15
Печать  
DrACe писал(а) 06. Июня 2006 :: 08:07:
для тестов по прямым запросам нужны "данные", т.е. набор справочников, документов, регистров и т.д.
Надо определиться с этим набором, а потом можно пробежаться по методам ODBCRecordSet и иже с ним.

Короче надо действительно писать очень жизненную замудреную конфу, чтобы полноценно нарваться на баг... Озадачен

Хочу попробовать, но с чего начать все таки?


Начать нужно с того, что
1) скачать конфу юнит-тестирования (в репозитарии)
2) посмотреть руководство по конфе (readme.txt)
3) Собрать конфу с данными, т.к. конфа и данные в репозитарии хранится в текстовом, разобранном виде.
3) изучить существующие юнит-тесты и схему их классификации

Далее нужно добавлять в конфигурацию свои тесты одновременно с необходимыми метаданными и данными.
Желательно начать с самых простых данных и методов, постепенно усложняя.

В принципе, схема очень простая.
Когда я в свое занялся созданием такой конфигурации, проделал в принципе такую же работу.

ЗЫ всегда готов помочь, можно напрямую в асю.
Также у нас по тестированию очень опытные товарищи fez, ADirks, kms, sedmin. Думаю, что помогут Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #9 - 06. Июня 2006 :: 09:24
Печать  
+ да еще это реальная возможность освоить новую технологию на практике и с пользой.
Я не шучу.....
  
Наверх
IP записан
 
User1C
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 1
Зарегистрирован: 06. Июня 2006
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #10 - 07. Июня 2006 :: 09:14
Печать  
а где скачать конфу для юнит-тестирования?
в репозитории ее нет
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #11 - 07. Июня 2006 :: 09:23
Печать  
в проекте 1cpp, рядом с исходниками и документацией
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #12 - 07. Июня 2006 :: 09:24
Печать  
User1C писал(а) 07. Июня 2006 :: 09:14:
а где скачать конфу для юнит-тестирования?
в репозитории ее нет

Она есть, ты ее просто не видишь. Каталог Testing, в нем читать readme.txt
  
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #13 - 07. Июня 2006 :: 09:24
Печать  
User1C писал(а) 07. Июня 2006 :: 09:14:
а где скачать конфу для юнит-тестирования?
в репозитории ее нет

Есть. Только в разобранном виде.
  

FormEx developer
Наверх
www  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание юнит-тестов для прямых запросов SQL и
Ответ #14 - 07. Июня 2006 :: 11:57
Печать  
Кстати, рядом еще лежит каталог Documents с которым не понятно как его компилировать...
Не поясните господа?
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать