Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) Для затравки. Юниттестирование на восьмерке. Очень сырой драфт. (число прочтений - 60370 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #15 - 01. Марта 2010 :: 16:00
Печать  
fez писал(а) 26. Февраля 2010 :: 14:17:
artbear писал(а) 26. Февраля 2010 :: 13:06:
пока только внешние обработки [...] нет возможности задания произвольных юнит-тестов в виде кусков кода

Постой-ка, а что тебе мешает во внешней обработке написать юнит-тест в виде куска кода? Собственно, я именно для этого это все и написал.

В обработку не всегда удобно засовывать.
Например, есть куча несвязанных между собой тестов.
1. не хочется ради одного-двух тестов заводить обработку
2. и не хочется разные тесты кидать в одну обработку - типа делать одно глобальное сборище.

Я пока изучаю следующий вариант по простому созданию тестов
Написал в блоге на ИС http://infostart.ru/public/15492/blog/post/957/
с помощью данной консоли есть возможность задания набора произвольных параметров, алгоритмов, запросов.
я легко добавил возможность юнит-тестирования + возможность тестирования группы тестов.
Если нужно, могу выложить доработанную обработку.
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #16 - 04. Марта 2010 :: 14:01
Печать  
Метод Я_Тест._GetPerformanceCounter() ИМХО очень тормозной.
1. Нужно сделать какой-нибудь метод типа
InitPerformanceCounter(), который создает КОМ-объект и возвращает его.
а к методу _GetPerformanceCounter() добавить параметр, в которой пользователи метода будут передавать ранее созданный КОМ-объект
2. Название метода также очень корявое Печаль
зачем нам идти на поводу у 77 Улыбка
Давай лучше название типа ПолучитьТекущееВремяКакЧисло()
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #17 - 04. Марта 2010 :: 19:26
Печать  
Еще замечания Улыбка
1. Лишний вывод в окно сообщений о количестве тестов, эта инфа прекрасно видна в окне формы браузера.
2. В табличный док выводится инфа об ошибке теста по 2 раза, неудобно Печаль
3. Хотелка - для группы тестов было бы удобно выводить количество тестов в группе.

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

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


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #18 - 04. Марта 2010 :: 23:17
Печать  
artbear писал(а) 04. Марта 2010 :: 14:01:
Метод Я_Тест._GetPerformanceCounter() ИМХО очень тормозной.


переделал у себя на вызов метода  _Система.МиллисекундСоСтарта(); из http://infostart.ru/public/15589/

тестировал конструкторы/копирование/получениеИзСтроковогоПредставления в первом приближении (в качестве эксперимента)

оказалось замер времени быстрее все таки из компоненты
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #19 - 06. Марта 2010 :: 11:08
Печать  
Есть у кого-нибудь код по анализу и выполнения тестов для пользователя с ограниченными правами ?

Например, мне нужно проверить работу пользователя, у которого часть прав урезана.
Т.е. тут нужно запустить 1С для данного пользователя, или через Внешнее соединение, или через КОМ-объект,
далее нужно запустить обработку тестирования для данного пользователя и выполнить необходимые тесты, получить результаты и вернуть их в текущую обработку тестирования.

Занимался ли кто-нибудь подобным?

Федор, тебе наверняка придется тестировать подобные задачи.
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #20 - 07. Марта 2010 :: 15:00
Печать  
1. При сканировании папки, в которой есть обработка с синтакс-ошибкой в модуле обработки, будет выдана ошибка.
Например, выбираем папку с обработками для чужой конфы с вызовом несуществующих в данной конфе глобальных модулей.
Хуже всего, если это происходит при запуске браузера юнит-тестов и открытии автосохраненного каталога. В этом случае браузер просто невозможно открыть штатным способом.
Исправление - в начале метода ДобавитьТестыОбработки создание обработки включить в блок Попытка-Исключение

2. Также длительные циклы с использованием рекурсии и циклы чтения файлов/папок желательно дополнить ОбработкаПрерыванияПользователя();
для удобства работы
« Последняя редакция: 07. Марта 2010 :: 17:34 - 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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #21 - 07. Марта 2010 :: 17:31
Печать  
Федор, ИМХО твоя реализация утверждений не очень удобна Печаль
Я говорю о сообщении об ошибках в утверждениях.
У меня уже более 2-х лет при разработке используется собственный код утверждений
Код типа
Цитата:
Процедура ПроверитьЗаполненность(проверяемоеЗначение, СообщениеОбОшибке = "") Экспорт
     Попытка
           фЗаполнено = ЗначениеЗаполнено(проверяемоеЗначение);
     Исключение
         Если проверяемоеЗначение = Неопределено Тогда
                 ВызватьИсключение "Значение не заполнено, а ожидалось заполненность"+
                       Символы.ПС+"ОШИБКА: "+СообщениеОбОшибке;
           КонецЕсли;
           Возврат;
     КонецПопытки;
     Если НЕ фЗаполнено Тогда
           ВызватьИсключение "Значение не заполнено, а ожидалось заполненность"+
                       Символы.ПС+"ОШИБКА: "+СообщениеОбОшибке;
     КонецЕсли;
КонецПроцедуры

Т.е. сообщения об ошибках показываются дополнительно к ошибке, нарушаещей утверждения.
Это очень при использовании утверждений в разработке, а не только в тестировании.

2. И Кстати, у тебя не хватает полезных функций ПроверитьЗаполненность, ПроверитьНезаполненность, ПроверитьТип Улыбка
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #22 - 10. Марта 2010 :: 14:29
Печать  
Народ, какие тесты еще придумали?

Лично я сделал юнит-тесты для системы RLS для типовых конфигураций - там, где ограничения для организаций, внешних обработок и т.п. - БП, ЗУП, КА.

на базе типового ограничения прав я добавляю собственные ограничения прав - например, по контрагентам, офисам и т.д.
т.к. добавлять соответствующие, но различные объекты/реквизиты, нужно в довольно многих местах конфигурации, все время идет путаница.
Мои юнит-тесты помогают решить эту проблему Улыбка
Эти тесты разделены на 2 вида -
1. один универсальный блок тестов проверяет только правильность доработки конфигурации под типовую структуру ограничения прав. Этот блок универсален для любой типовой конфы
2. а второй блок уже включает в себя тесты для конкретных ограничений - например, по контрагентам, организациям, обработкам и т.п.
Этот блок нужно дописывать под каждую конфу отдельно.
Хотя несложно сделать копию существующих тестов и поправить под свои ограничения.

Могу выложить, если кому интересно - выложено в следующих постах

ЗЫ юнит-тесты специально сделаны/переделаны из существующих под сабжевую разработку Федора.
« Последняя редакция: 11. Марта 2010 :: 09:22 - artbear »  

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


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #23 - 11. Марта 2010 :: 07:05
Печать  
artbear писал(а) 10. Марта 2010 :: 14:29:
Народ, какие тесты еще придумали?
Могу выложить, если кому интересно.


мне интересно, еще и с другой точки зрения, помимо чисто практических проверок на своих типовых.

хочется посмотреть на саму методику написания тестов под 8-ку на "сабжевом" механизме. А то есть у меня чувство что я что-то как-то делаю не так. Подмигивание

а вообще сейчас стоит задача такая хитрая задач:
* есть документы совершающие движения
* вендор конфигурации (Инталев который) выпускает новый релиз без обратной совместимости - те же движения делает уже новый вид документа.
* штатного конвертера нету - к вопросу об 1С:Совместимо который эта конфа имеет вроде.

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

З.Ы. оповещения о новых ответах перестали почему-то приходить на почту
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #24 - 11. Марта 2010 :: 09:22
Печать  
Вот мои тесты системы ограничения прав в типовых конфах 1С - ЮнитТесты_СистемыНастройкиПравДоступа.zip
Тесты адаптированы для сабжевой разработки.
Нужно только одно дополнение:
в общий модуль Я_Тест нужно добавить две процедуры

Цитата:
Процедура ПроверитьЗаполненность(проверяемоеЗначение, СообщениеОбОшибке = "") Экспорт
     //Если НЕ ТестированиеВключено() Тогда
     //      Возврат;
     //КонецЕсли;
     Попытка
           фЗаполнено = ЗначениеЗаполнено(проверяемоеЗначение);
     Исключение
         Если проверяемоеЗначение = Неопределено Тогда
                 ВызватьИсключение "Значение не заполнено, а ожидалось заполненность"+
                       Символы.ПС+"ОШИБКА: "+СообщениеОбОшибке;
           КонецЕсли;
           Возврат;
     КонецПопытки;
     Если НЕ фЗаполнено Тогда
           ВызватьИсключение "Значение не заполнено, а ожидалось заполненность"+
                       Символы.ПС+"ОШИБКА: "+СообщениеОбОшибке;
     КонецЕсли;
КонецПроцедуры

Процедура ПроверитьНеЗаполненность(проверяемоеЗначение, СообщениеОбОшибке = "") Экспорт
     //Если НЕ ТестированиеВключено() Тогда
     //      Возврат;
     //КонецЕсли;
     Попытка
           фЗаполнено = ЗначениеЗаполнено(проверяемоеЗначение);
     Исключение
         Если проверяемоеЗначение <> Неопределено Тогда
                 ВызватьИсключение "Значение заполнено, а ожидалось незаполненность"+
                       Символы.ПС+"ОШИБКА: "+СообщениеОбОшибке;
           КонецЕсли;
           Возврат;
     КонецПопытки;
     Если фЗаполнено Тогда
           ВызватьИсключение "Значение заполнено, а ожидалось незаполненность"+
                       Символы.ПС+"ОШИБКА: "+СообщениеОбОшибке;
     КонецЕсли;
КонецПроцедуры
  

_____________________________________.zip ( 3 KB | Загрузки )

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #25 - 11. Марта 2010 :: 11:20
Печать  
lustin писал(а) 11. Марта 2010 :: 07:05:
а вообще сейчас стоит задача такая хитрая задач:

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

На текущую базу трудно сделать общие тесты.
Лучше юзать юнит-тесты при разработке или TDD в чистом виде.
Например, пишешь код по переносу данных, и сразу проверяешь утверждения на правильность кода.

Я на днях для проверки своей же техники работы в TDD сделал одну разработку с использованием чистой техники TDD - перенос некоторых данных по определенным правилам из текстового файла в регистр сведений.
16 юнит-тестов.

Ну и вышеописанную разработку по настройке прав доступа также выполнял полностью на TDD.

Я обычно проблему переноса решаю так:
1. спец.запросами запоминаю общие сводные данные по ключевым показателям и данным.
2. пишу код по переносу данных
3. далее получаю данные, аналогичные п.1
4. выполняю сверку данных из п.1 и п.4
в начале работы в процессе сверки, как правило, получаю некие различия, по этим различиям добавляю отдельные юнит-тесты + дорабатываю запросы из п.1 и снова в п.2

lustin писал(а) 11. Марта 2010 :: 07:05:
З.Ы. оповещения о новых ответах перестали почему-то приходить на почту

У меня, в принципе, сообщения приходят вроде по многим веткам.
Правда, не уверен, что по всем подписанным темам Улыбка
На эту ветку также оповещения приходят.
  

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


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #26 - 11. Марта 2010 :: 11:48
Печать  
artbear писал(а) 11. Марта 2010 :: 11:20:
Я на днях для проверки своей же техники работы в TDD сделал одну разработку с использованием чистой техники TDD


TDD - это видимо Разработка_через_тестирование

тогда потрачу я остаток сегодняшнего дня на эксперименты с этой методикой.

  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #27 - 11. Марта 2010 :: 12:44
Печать  
artbear писал(а) 11. Марта 2010 :: 09:22:
Вот мои тесты системы ограничения прав в типовых конфах 1С - ЮнитТесты_СистемыНастройкиПравДоступа.zip


у меня не прошел последний тест
Цитата:
ступа.epf
Проверить_ОткрытиеОбработкиНастройкиПрав

{ОбщийМодуль.Я_Тест(25)}: Не удалось открыть форму обработки <Настройка прав доступа>

ОбщийМодуль.Я_Тест
           ВызватьИсключение(_СообщениеОшибки);
25
Не удалось открыть форму обработки <Настройка прав доступа>
"{ОбщийМодуль.Я_Тест(25)}: Не удалось открыть форму обработки <Настройка прав доступа>
           ВызватьИсключение(_СообщениеОшибки);"
=======================================


так как для разработчика у меня было выставлено
Цитата:
ПараметрыСеанса.ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ

и открывается форма Предупреждения без таймаута  Улыбка
хм, вот теперь в пору задуматься это ИнтелЁвцы или 1С
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #28 - 11. Марта 2010 :: 13:07
Печать  
artbear писал(а) 06. Марта 2010 :: 11:08:
Есть у кого-нибудь код по анализу и выполнения тестов для пользователя с ограниченными правами ?

Например, мне нужно проверить работу пользователя, у которого часть прав урезана.
Т.е. тут нужно запустить 1С для данного пользователя, или через Внешнее соединение, или через КОМ-объект,
далее нужно запустить обработку тестирования для данного пользователя и выполнить необходимые тесты, получить результаты и вернуть их в текущую обработку тестирования.

Занимался ли кто-нибудь подобным?

Федор, тебе наверняка придется тестировать подобные задачи.


Придется. Думаю, что я просто напишу некоторую дополнительную обертку над тестами. Которая будет знать, какой пользователь с каким паролем и какими правами должен запускать какие тесты. Запускать их, забирать результат тестирования для каждого и объединять их в итоговый отчет. А уж внешнее это будет, КОМ или там еще что - пока не знаю. Это, в принципе, малозначительные детали.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #29 - 11. Марта 2010 :: 13:27
Печать  
lustin писал(а) 11. Марта 2010 :: 12:44:
artbear писал(а) 11. Марта 2010 :: 09:22:
Вот мои тесты системы ограничения прав в типовых конфах 1С - ЮнитТесты_СистемыНастройкиПравДоступа.zip


у меня не прошел последний тест
Цитата:
ступа.epf
Проверить_ОткрытиеОбработкиНастройкиПрав

{ОбщийМодуль.Я_Тест(25)}: Не удалось открыть форму обработки <Настройка прав доступа>
=======================================


так как для разработчика у меня было выставлено
Цитата:
ПараметрыСеанса.ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ

и открывается форма Предупреждения без таймаута  Улыбка
хм, вот теперь в пору задуматься это ИнтелЁвцы или 1С

Ага, нужно новый тест добавить Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9
ОтправитьПечать