Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Тестирование разработок на платформе 1С. Управление данными (число прочтений - 18246 )
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #15 - 12. Мая 2010 :: 05:25
Печать  
artbear писал(а) 11. Мая 2010 :: 10:36:
зачем писать свой десериализатор?


Ну понятно, что этот вопрос так или иначе решаем. Но это лишь малая часть проблемы при таком подходе. Нужна методика. Вопросы, которые она должна охватывать, сформулирую несколько позже, если понадобится.
  
Наверх
ICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #16 - 12. Мая 2010 :: 07:10
Печать  
fez писал(а) 11. Мая 2010 :: 11:51:
Мне эти причины непонятны Улыбка

Прежде всего, считаю необходимым уточнить терминологию. Предлагаю пользоваться следующей классификацией видов и уровней тестирования, которая кажется  мне наиболее логически понятной:
http://protesting.ru/testing/testtypes.html
http://protesting.ru/testing/testlevels.html.

Т.е., в данной ветке мы рассматриваем только функциональный вид тестирования. Речь зашла о модульном (юнит) уровне тестирования. Так вот юниттестирование на 1С невозможно по причине того, что платформа не поддерживает механизм интерфейсов, соответственно далеко не всегда возможно в юнит передать мок-объект. Это приводит к тому, что мы, пытаясь протестировать, скажем, объект-документ, тестируем еще и код объектов, навязанных платформой. Например, код в модуле набора записей. Понятно, что в случаях, где платформа не ограничивает тип объектов, мы имеем возможность использовать моки. Но, далеко не всегда. Поэтому, если говорить об уровне тестирования на платформе 1С, имеет смысл говорить о системном уровне тестирования.

Цитата:
Другой вопрос, что типовые написаны таким образом, что их особо не поюниттестируешь

Действительно, это другой вопрос. И его можно было бы обсудить в отдельной ветке. В смысле не кривизну типовых, а приемы, повышающие тестопригодность конфигурации.

Цитата:
Считаю, что допустимо заполнить всю эту псевдостатическую информацию один раз. И проводить последующее автотестирование не на совсем пустой базе, а на хоть как-то первоначально заполненной.

Во! Это уже по-существу! Как ты себе представляешь весь процесс при таком подходе?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #17 - 13. Мая 2010 :: 17:09
Печать  
Палыч писал(а) 12. Мая 2010 :: 07:10:
Прежде всего, считаю необходимым уточнить терминологию. Предлагаю пользоваться следующей классификацией видов и уровней тестирования, которая кажется  мне наиболее логически понятной:
http://protesting.ru/testing/testtypes.html.


Цитата:
Компонентное (модульное) тестирование проверяет функциональность и ищет дефекты в частях приложения, которые доступны и могут быть протестированы по-отдельности (модули программ, объекты, классы, функции и т.д.)


Выделение мое. Ну так в чем проблема найти в 1С те участки, которые доступны и могут быть протестированы по-отдельности?

Цитата:
Так вот юниттестирование на 1С невозможно по причине того, что платформа не поддерживает механизм интерфейсов, соответственно далеко не всегда возможно в юнит передать мок-объект.


Я не успеваю за твоей мыслью. То есть мне понятно, что возможность передачи мок-объекта существенно расширяет круг "частей приложения, которые могут быть протестированы по-отдельности". Но откуда взялся вывод о тотальной невозможности юниттестирования без мок-объектов - я не понял.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #18 - 13. Мая 2010 :: 17:20
Печать  
Палыч писал(а) 12. Мая 2010 :: 07:10:
Цитата:
Другой вопрос, что типовые написаны таким образом, что их особо не поюниттестируешь

Действительно, это другой вопрос. И его можно было бы обсудить в отдельной ветке. В смысле не кривизну типовых, а приемы, повышающие тестопригодность конфигурации.

http://www.1cpp.ru/forum/YaBB.pl?num=1273770703
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #19 - 13. Мая 2010 :: 17:26
Печать  
Палыч писал(а) 12. Мая 2010 :: 07:10:
Цитата:
Считаю, что допустимо заполнить всю эту псевдостатическую информацию один раз. И проводить последующее автотестирование не на совсем пустой базе, а на хоть как-то первоначально заполненной.

Во! Это уже по-существу! Как ты себе представляешь весь процесс при таком подходе?

В качестве лирического отступления: я не просто представляю - я так и работаю.

Все предельно просто.
Сначала создается совсем пустая база.
Потом придумывается первый (очередной) тест.
Критически осматриваю набор данных, необходимых для этого теста. Разделяю данные, которые специфичны именно для этого теста, от данных, которые являются общими настройками системы.
Специфичные данные тест создает для себя сам, данные, являющиеся общими настройками системы записываю непосредственно в БД.
Полученная в результате такой подготовки "псевдопустая БД" регулярно бэкапится на всякий случай, ибо работа по ее подготовке как правило, проделана немаленькая.

Если разные тесты используют разные настройки системы, то данная коллизия решается очень просто.
Выбираем самый частоиспользуемый вариант для каждой настройки, именно его записываем в псевдопустую БД.
Ввсе тесты, которые нуждаются в других настройках - сами под себя донастраивают БД.
  
Наверх
www  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #20 - 14. Мая 2010 :: 06:47
Печать  
fez писал(а) 13. Мая 2010 :: 17:09:
Но откуда взялся вывод о тотальной невозможности юниттестирования без мок-объектов - я не понял.


Мне тоже непонятно откуда у тебя взялся такой вывод.  Смех
Моя мысль была о том, что юниттестирование на платформе 1С невозможно в общем случае. Т.е., не любой модуль возможно протестировать на уровне модуля. Что, впрочем, не исключает наличия частных случаев, о которых ты пишешь и о которых  я, кстати, тоже сделал оговорку. Об этом я написал на первой странице не ради спора о полупустоте/полуполноте стакана, а ради того, чтобы подчеркнуть, что тестирование на платформе 1С требует техник не только и не столько юнит-, сколько системного тестирования. В частности, генерации данных в БД.
  
Наверх
ICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #21 - 14. Мая 2010 :: 06:54
Печать  
fez писал(а) 13. Мая 2010 :: 17:26:
Полученная в результате такой подготовки "псевдопустая БД"...

А как возвращаешь базу в исходное состояние между тестами? Откатом транзакции?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #22 - 14. Мая 2010 :: 08:05
Печать  
Палыч писал(а) 14. Мая 2010 :: 06:54:
fez писал(а) 13. Мая 2010 :: 17:26:
Полученная в результате такой подготовки "псевдопустая БД"...

А как возвращаешь базу в исходное состояние между тестами? Откатом транзакции?

Да. Есть правда у такого подхода проблема. Когда тебе например нужно протестировать, что в определенной ситуации созданный тобой документ не запишется (и потом нужно проверить что-нибудь еще) - вот тут приходит птичка обломинго.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #23 - 14. Мая 2010 :: 08:12
Печать  
Палыч писал(а) 14. Мая 2010 :: 06:47:
Моя мысль была о том, что юниттестирование на платформе 1С невозможно в общем случае.

Ну а при чем тут 1С? Я тебе больше скажу - в общем случае юниттестирование вообще невозможно. Ни на какой платформе Улыбка

Палыч писал(а) 14. Мая 2010 :: 06:47:
Т.е., не любой модуль возможно протестировать на уровне модуля.

Угу, и не только в 1С Подмигивание

Палыч писал(а) 14. Мая 2010 :: 06:47:
тестирование на платформе 1С требует техник не только и не столько юнит-, сколько системного тестирования. В частности, генерации данных в БД.

Я бы высказал эту мысль несколько иначе. Конечному потребителю платформы 1С нужно в первую очередь системное тестирование. Именно поэтому "тестирование на платформе 1С требует..." и далее по тексту.

Юниттестирование - оно скорее нужно программисту. То есть и конечному пользователю тоже, но не в такой степени. Так что юниттестирование отдается на откуп программисту. Нужно оно ему, хочет он юниттестировать - его модули можно будет проюниттестировать и они будут покрыты юниттестами. Не нужно - так и с юниттестированием такого модуля будут очевидные проблемы.
  
Наверх
www  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #24 - 14. Мая 2010 :: 09:06
Печать  
fez писал(а) 14. Мая 2010 :: 08:12:
Палыч писал(а) 14. Мая 2010 :: 06:47:
Моя мысль была о том, что юниттестирование на платформе 1С невозможно в общем случае.

Ну а при чем тут 1С?

Как это при чем?! На 1С, в отличие от универсальных средств разработки, насколько бы конфига ни была самописной, не удастся заменить, скажем набор набор записей регистра в объекте документа. А проблемы тестирования разработок на взрослых языках меня, на данный момент, мало волнуют. Подмигивание

Цитата:
Я тебе больше скажу - в общем случае юниттестирование вообще невозможно. Ни на какой платформе

Цитата:
Угу, и не только в 1С

[делаю вид, что не заметил эти тезисы]  Смех

Цитата:
Конечному потребителю платформы 1С нужно в первую очередь системное тестирование

Ты уже, наверно, догадался, что я отвечу: скажу тебе больше, конечному потребителю платформы 1С  никакое тестирование вобще не нужно!  Смех

И вобще, мне не совсем понятно, какую мысль ты хочешь донести? Что юниттестирование на 1С имеет право на жизнь? Дык я и не возражаю!  Улыбка
Правда, при этом, возникает вопрос как ты тестируешь обеспечиваешь  (или предполагаешь в будущем) качество элементов конфигурации к которым платформа не дает доступа на уровне юнита? Тот же пресловутый документ, например?
  
Наверх
ICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #25 - 14. Мая 2010 :: 09:12
Печать  
fez писал(а) 14. Мая 2010 :: 08:05:
Есть правда у такого подхода проблема. Когда тебе например нужно протестировать, что в определенной ситуации созданный тобой документ не запишется (и потом нужно проверить что-нибудь еще) - вот тут приходит птичка обломинго.

Вот хотелось бы избежать таких нежелательных встреч.
Да, и еще. Как ты обращаешься к данным из базового набора? Скажем, к элементам справочников.
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #26 - 14. Мая 2010 :: 09:21
Печать  
Палыч писал(а) 14. Мая 2010 :: 09:06:
Правда, при этом, возникает вопрос как ты тестируешь обеспечиваешь  (или предполагаешь в будущем) качество элементов конфигурации к которым платформа не дает доступа на уровне юнита? Тот же пресловутый документ, например?

Не думал пока. Придумаю что-нибудь, когда дело дойдет Улыбка

Но вообще я сейчас связан по рукам и ногам, ибо могу влиять на тестируемый код только косвенно Печаль
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #27 - 14. Мая 2010 :: 09:24
Печать  
Палыч писал(а) 14. Мая 2010 :: 09:12:
Да, и еще. Как ты обращаешься к данным из базового набора? Скажем, к элементам справочников.

Если это псевдоконфигурационные данные (ну там, основная фирма, валюта регламентированного учета и тому подобное) - то ровно так же, как это делает вся остальная конфигурация.

Если это просто какие-то данные, которые случайно попали в псевдопустую конфу (ну, бывает, например загрузили один раз мапинг счетов РБУ-ГААП из живой базы, а там еще и некоторые субконто заполнены), то к таким данным я принципиально не обращаюсь, а создаю свои объекты.
  
Наверх
www  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #28 - 14. Мая 2010 :: 09:37
Печать  
fez писал(а) 14. Мая 2010 :: 09:24:
к таким данным я принципиально не обращаюсь, а создаю свои объекты.

Например, справочники номенклатура, организации, контрагенты и т.п. Ты их включаешь в базовый набор?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование разработок на платформе 1С. Управление данными
Ответ #29 - 14. Мая 2010 :: 11:15
Печать  
Зависит от смысла, который прячется за этим элементом.
Вот была у меня база, где одновременно велся учет комитента и комиссионера (разные юрлица). Причем потом стало много, как комитентов, так и комиссионеров.

Соответственно были определенные специфические элементы, типа номенклатуры "Комиссионное вознаграждение", или контрагенты, связанные с фирмами (ну есть фирма "Комитент", а есть контрагент "Комитент"). Вот такие объекты - включены в базовый набор. Потому что каждый из них недостаточно создать - их нужно дополнительно прописать в каких-то конфигурациях (константы, или дополнительные служебные справочники, или поля в других справочниках). И делать это каждый раз - утомительно и не нужно. Это псевдостатическая информация, ее можно занести в БД один раз.

Просто же хранить рядовых контрагентов или номенклатуру в базовом наборе нет смысла - ибо непонятно, как ее потом искать. Проще самому создать, немедленно использовать, а по завершению все транзакцией откатить.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать